C#和Excel文件

时间:2009-11-09 17:15:52

标签: c# excel file oledb export-to-excel

我需要创建一个可以读取/写入Excel文件的程序。我应该使用OleDB还是使用Excel对象?一个在另一个上有什么优点,我在哪里可以读到开始实现它?

7 个答案:

答案 0 :(得分:4)

我最近必须这样做,发现NPOI(http://npoi.codeplex.com/)是最好的选择,特别是因为我需要生成二进制.xls文件,这些文件没有为客户端提出任何有关文件类型的混淆错误。

有关详细信息,请参阅this blog post。 您还会发现,由于它是现有框架的一个端口,因此可以为适用于该端口的原始框架提供大量帮助。

答案 1 :(得分:3)

Excel自动化可能很麻烦,如果您的程序要在Web服务器上运行,它将无法提供帮助,但它将为您提供读取,修改和创建Excel文件的完全访问权限。

使用OLEDB驱动程序仅适用于Excel 1998-2003文件,而不是Excel 2007,只有有限的功能子集(将工作表和命名区域视为“表”,您可以像数据库一样读写这些表 - 否控制格式,公式等),并有一些重要的限制,但在ASP.NET应用程序中可以正常工作。

(您可以通过OLEDB下载单独的驱动程序来访问Excel 2007的OOXML文件(xlsx)。我不知道它的功能或限制与旧驱动程序的比较。)

如果应用程序在ASP.NET中运行,另一个选项是获取用于读取和写入Excel文件的第三方库。有些是开源的(通常那些只从Excel 2002-2007读取/写入Excel XML文件,NPOI是一个值得注意的例外),有些是非常昂贵的。

关于您 想要做的唯一事情是尝试实现您自己的Excel BIFF格式(标准1997-2003文件格式)读/写器。文件格式随着时间的推移而发展,对于凡人来说太复杂了。

答案 2 :(得分:1)

对于写作,你可以考虑一个简单的解决方法,让你的生活更轻松.... 将所有内容写入逗号分隔的文本文件并将其另存为csv。然后通过shell命令以csv作为参数启动Excel。 Voilla,即时导出到Excel。

此致

答案 3 :(得分:1)

SpreadsheetGear for .NET是一个Excel兼容的电子表格组件,可以读取和写入Excel工作簿(xls和xlsx)等,并且不依赖于Excel,OleDb或.NET库以外的任何其他内容。

您可以看到一些实时样本here并下载免费试用here

免责声明:我拥有SpreadsheetGear LLC

答案 4 :(得分:1)

如果您想在服务器的应用程序中read / write excel file,可以使用 Excel Jetcell .NET组件

它具有将数据从DataSet,DataTable导出为ex​​cel格式的有用功能。 它还可以保存excel文件(xls,xlsx)或将excel表示为为开发人员提供更多机会的流。查看更多C# excel files代码示例。

答案 5 :(得分:0)

可能免费组件“CarlosAg”的功能对您来说已经足够了吗?不需要在机器上安装Excel。我用它并对它很满意。

答案 6 :(得分:0)

您不需要第三方工具来读取/写入Excel文件...... 所有你需要的已经包含在namspace中的Microsoft.Office.Interop.Excel;
首先创建一个excel文件,并将其命名为例如.. test1.xls ...或其他任何内容 这是您需要的代码:

using Excel = Microsoft.Office.Interop.Excel;
Excel.Application AppName = new Excel.Application();
Excel.Workbook bookName = AppName.Workbooks.Open(C:\....\test1);
Excel.Worksheet sheetName = AppName.Worksheets.get_Item(1);
sheetName.Rows[5].Cells[5].Value = "hello!";  //that writes hello in cell 5,5 in test1.xls
string box;
box = sheetName.Rows[10].Cells[10].Value;  //that reads the value of 10,10 cell in test1.xls and place it in box variable