.NET Excel文件parsing器

所以我所在的公司正在寻找一种方法来validation给定的.xls / .xlsx文件是否有效。 这意味着检查列和行以及其他数据。 他让我评价GrapeCity Spread和SpreadsheetGear,但是我想知道是否有其他人有任何其他外部工具的build议来检查。

我们不需要一种方法来导出.xls文件或类似的东西,只要能够导入它们并根据我创build的一组标准validation它们是有效的。

谢谢。

如果您只需要比较单元格值,则可以使用ADO.NET驱动程序,否则将需要Excel或第三方组件。 我正在使用SpreadsheetGear。 当我3年前评估这个组件时,我已经发现了带有绝对引用的单元格条件格式化的问题,但是问题很快得到解决。 他们有同一天的支持回应。

在我看来,处理这个最简单的方法是使用ODBC Excel数据提供程序。 我觉得比PIA更直接的工作。

// Connection string for Excel 2007 (.xlsx) string dbConnStr = @"Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};Dsn=Excel Files;dbq=C:\temp\mySpreadsheet.xlsx"; // Connection string for Excel 98-2003 (.xls) //string dbConnStr = @"Driver={Microsoft Excel Driver (*.xls)};driverid=790;dbq=C:\temp\mySpreadsheet.xls;defaultdir=c:\temp"; OdbcCommand cmd = new OdbcCommand("Select * from [SheetName$]", new OdbcConnection(dbConnStr)); cmd.Connection.Open(); OdbcDataReader dr = cmd.ExecuteReader(); foreach (System.Data.IDataRecord item in dr) { // Check specific column values, etc string id = item["Column Name"].ToString(); } 

您可以使用Microsoft.Office.Interop.Excel库以与在Excel VBA中相同的方式访问任何工作簿。

代码如下所示:

 using Excel = Microsoft.Office.Interop.Excel; Excel.Application excel = new Excel.Application(); Excel.Workbook workbook = excel.Workbooks.Open("datasheet.xls"); Excel.Worksheet worksheet = workbook["Sheet1"] as Excel.Worksheet; string someData = (worksheet.Range["A2"] as Excel.Range).Value.ToString(); worksheet = null; workbook.Close(); excel.Quit(); 

根据您的预算,Aspose库是伟大的。 不便宜,但非常非常好。

检查CodePlex上的Excel数据读取器 。 我已经使用了几次,效果很好。

不过要注意的是,在单元格跳过的地方有读取.xlsx文件的错误。 应用我提交给v2.0.1.0的这个补丁来解决这个问题。 (项目维护人员似乎不太活跃,我也遇到了问题。)

您可以使用来自Microsoft的oleDb来访问excel数据,就像任何其他数据库系统一样。 您可以从连接string中获取正确的连接string

也许NPOI项目可能是有用的(我从来没有用过它)。

最好