我正在寻找一个读取/写入.xls(而不是.xlsx)文件的Excel库。
我正在使用excellibrary,但它非常错,我can't seem to open the files I create。该问题已有近一年的历史,目前尚未确定。
我在另一个帖子中看到有人建议EPPlus,但这只适用于2007/2010 .xlsx格式。
我过去曾使用过Koogra,对此非常满意,但我相信它只能读...不写。
如果您知道图书馆,请告诉我它的名称。
编辑: 如果有必要,我很高兴用内置的Microsoft.Office.Interop.Excel创建我的Excel文件,但是我的机器有Office 2007,而目标机器只有Office 2003.我注意到我有2个文件版本用于该库:12和14.我检查了目标机器上的Excel版本,它是11.8169.8172 - 我假设内置的Excel互操作不能在目标上运行?
答案 0 :(得分:52)
我建议NPOI。 NPOI 免费,仅适用于.XLS文件。它对我帮助很大。
详细信息:如果您使用NPOI,则无需在计算机上安装Microsoft Office即可使用.XLS文件。
查看这些博文:
Creating Excel spreadsheets .XLS and .XLSX in C#
NPOI with Excel Table and dynamic Chart
<强> [UPDATE] 强>
NPOI 2.0增加了对XLSX和DOCX的支持。
您可以在此处详细了解:
答案 1 :(得分:9)
您是否有理由不能使用Excel ODBC连接来读取和写入Excel?例如,我使用以下代码逐行读取Excel文件,如数据库:
private DataTable LoadExcelData(string fileName)
{
string Connection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";
OleDbConnection con = new OleDbConnection(Connection);
OleDbCommand command = new OleDbCommand();
DataTable dt = new DataTable(); OleDbDataAdapter myCommand = new OleDbDataAdapter("select * from [Sheet1$] WHERE LastName <> '' ORDER BY LastName, FirstName", con);
myCommand.Fill(dt);
Console.WriteLine(dt.Rows.Count);
return dt;
}
您可以用同样的方式写入Excel“数据库”。如您所见,您可以选择要使用的版本号,以便可以使用Excel 2003降级机器的Excel版本。实际上,使用Interop也是如此。您可以使用较低版本,即使您的开发PC上只有更高版本,也可以使用Excel 2003。
答案 2 :(得分:0)
您可以考虑为读/写excel文件调用Excel Jetcell .NET component的第三方工具:
C#样本
// Create New Excel Workbook
ExcelWorkbook Wbook = new ExcelWorkbook();
ExcelCellCollection Cells = Wbook.Worksheets.Add("Sheet1").Cells;
Cells["A1"].Value = "Excel writer example (C#)";
Cells["A1"].Style.Font.Bold = true;
Cells["B1"].Value = "=550 + 5";
// Write Excel XLS file
Wbook.WriteXLS("excel_net.xls");
VB.NET示例
' Create New Excel Workbook
Dim Wbook As ExcelWorkbook = New ExcelWorkbook()
Dim Cells As ExcelCellCollection = Wbook.Worksheets.Add("Sheet1").Cells
Cells("A1").Value = "Excel writer example (C#)"
Cells("A1").Style.Font.Bold = True
Cells("B1").Value = "=550 + 5"
' Write Excel XLS file
Wbook.WriteXLS("excel_net.xls")