我正在使用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文件中只有一个选项卡,上面的代码似乎可以正常工作。这可能只是这个库的一个错误。有没有其他人使用这个库来解析带有多个标签的excel文件?
由于
答案 0 :(得分:2)
好的,所以我在回答这个问题时回复非常晚,但如果有任何帮助,请尝试将代码封装在reader.NextResult()
块中。这与在数据集中解析多个DataTable对象时的工作方式相同。
此外,与reader.AsDataSet()
方法相比,这种方法占用的内存非常小,即使对于小到20MB的工作簿也会占用大量内存
例如
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());
答案 1 :(得分:-1)
这就是我使用NPOI的原因。我已经尝试了其他几个Excel读者,这个实际上对我有用。