意外的结果使用Excel数据读取器

我正在使用http://exceldatareader.codeplex.com/中的Excel数据读取器读取XLSX(Microsoft Excel XML文件),并得到了一些意想不到的结果。

以下代码从多个选项卡输出数据

var reader = Excel.ExcelReaderFactory.CreateOpenXmlReader(uploadFile.InputStream); while (reader.Read()) { System.Diagnostics.Debug.WriteLine(reader.FieldCount ); for (int i = 0; i < reader.FieldCount; i++) { System.Diagnostics.Debug.Write(reader[i] + "*"); } System.Diagnostics.Debug.WriteLine("\n~\n"); } 

在一行中,我可以从3个或更多的标签中获取数据。

我希望这将循环显示第一个选项卡的所有内容,只有第一个选项卡。

我错过了什么?

更新:如果在Excel文件中只有一个选项卡,上面的代码看起来可以正常工作。 这可能只是这个库的一个错误。 有没有其他人使用这个库parsing多个选项卡的Excel文件?

谢谢

好的,所以我的回复对于这个问题是非常晚的,但是如果有任何帮助的话,请尝试将你的代码封装在reader.NextResult()块中。 这与通过DataSet中的多个DataTable对象进行分析的方式相同。

此外,这种方法有一个非常小的内存占用,而不是reader.AsDataSet()方法,甚至对于小到20MBs的工作簿占用大量的内存

例如

 var reader = Excel.ExcelReaderFactory.CreateOpenXmlReader(uploadFile.InputStream); do { while (reader.Read()) { System.Diagnostics.Debug.WriteLine(reader.FieldCount ); for (int i = 0; i < reader.FieldCount; i++) { System.Diagnostics.Debug.Write(reader[i] + "*"); } System.Diagnostics.Debug.WriteLine("\n~\n"); } }while(reader.NextResult()); 

这就是为什么我使用NPOI 。 我已经尝试了几个其他Excel读者,这其中一个实际上为我工作。