使用Excel Data Reader意外的结果

时间:2011-11-09 14:48:17

标签: c# excel parsing file-upload

我正在使用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文件?

由于

2 个答案:

答案 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读者,这个实际上对我有用。