读取和写入Excel文件C#

有什么容易实现的库可以用来读取excel文件,并可能在以后创build它们? 这是我最好的select吗?

http://support.microsoft.com/kb/302084

如果您愿意承诺使用更高版本的Excel(2007+),则还可以查看OpenXML SDK 。 它是免费的,不会让你在运行的计算机上安装MS Office,并且有很多关于如何在线使用它的资源( 包括来自OpenXML团队的博客 )。

试试这个: http : //epplus.codeplex.com

EPPlus是一个.net库,使用Open Office Xml格式(xlsx)读取和写入Excel 2007/2010文件。

有excel包加上:

http://epplus.codeplex.com/

尽pipe只能在xlsx上运行,但是Office 2003仍然在运行。

您可以使用ExcelLibrary ,虽然它只适用于.xls格式

这个项目的目标是提供一个原生的.NET解决scheme来创build,读取和修改Excel文件,而不使用COM互操作或OLEDB连接。

我有一个使用EPPLUS的机会,这真是太棒了:),它适用于2007/2010年使用的新的excel格式.xlsx

EPPlus是一个.net库,您可以读取和写入excel文件,创build图表,图片,形状…等等。

也看看这个SOpost

我已经使用oledb,互操作,并开始使用Epplus。 迄今为止,epplus被certificate是最简单的。 http://epplus.codeplex.com/

不过,我只是发布了一个问题,我已经与epplus,但我张贴了一些代码,你可以用作参考。

c#epplus错误删除部分:绘graphics状

我曾经工作过的公司做了大量的研究,并决定SoftArtisans的产品是他们最好的select: OfficeWriter

我总是觉得很奇怪,对Excel的阅读和写作的支持是多么薄弱。 我敢肯定,如果你使用微软的库,你必须安装Excel,这是一个额外的开支,就像OfficeWriter。

你可以去VBA或从FileHelpers使用免费的库。 如果您打算购买一些商业解决scheme,我会推荐ASPOSE

根据这个网站,您需要包含对Microsoft Excel 12.0对象库的引用。 从那里,你需要做一些事情来打开文件。 网站上有一个代码示例。

PS – 对不起,这不是太详细,但我找不到更多详细信息的Microsoft Office开发人员参考。

我使用了ExcelLibrary,效果非常好! (直到现在它支持Excel 2003或更低版本)。

http://code.google.com/p/excellibrary/

我喜欢使用ExcelDataReader进行阅读和前面提到的EPPlus进行书写。 这是一个例子 。

这是一个阅读的例子:

FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read); // Reading from a binary Excel file ('97-2003 format; *.xls) // IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream); // Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); // DataSet - The result of each spreadsheet will be created in the result.Tables DataSet result = excelReader.AsDataSet(); // Free resources (IExcelDataReader is IDisposable) excelReader.Close(); var cdm = new ValueSetRepository(); for (int i = 0; i < result.Tables.Count; i++) { // CHECK if tableNames filtering is specified if (tableNames != null) { // CHECK if a table matches the specified tablenames var tablename = result.Tables[i].TableName; if (!tableNames.Contains(tablename)) { continue; } } var lookup = new ValueSetLookup(); lookup.CmsId = result.Tables[i].Rows[2][0].ToString(); lookup.NqfNumber = result.Tables[i].Rows[2][1].ToString(); lookup.Data = new List<ValueSetAttribute>(); int row_no = 2; while (row_no < result.Tables[i].Rows.Count) // i is the index of table // (sheet name) which you want to convert to csv { var currRow = result.Tables[i].Rows[row_no]; var valueSetAttribute = new ValueSetAttribute() { Id = currRow[0].ToString(), Number = currRow[1].ToString(), tName = currRow[2].ToString(), Code = currRow[7].ToString(), Description = currRow[8].ToString(), }; lookup.Data.Add(valueSetAttribute); row_no++; } cdm.AddRecord(lookup);