如何使用getValues从Excel中获取值?

我正在尝试使用以下代码从Excel文件中读取列的值:

FileStream stream = File.Open("excelfile.xlsx", FileMode.Open, FileAccess.Read); //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //... //4. DataSet - Create column names from first row excelReader.IsFirstRowAsColumnNames = true; DataSet result = excelReader.AsDataSet(); //5. Data Reader methods Console.WriteLine("Results: " +excelReader.ResultsCount); while (excelReader.Read()) { object[] values = new object[excelReader.FieldCount]; excelReader.GetValues(values); } //6. Free resources (IExcelDataReader is IDisposable) excelReader.Close(); 

它是如何导致一个例外:

“System.NotSupportedException is unhandled Message =”Ométodoespecificadonãoésuportado。“Source =”Excel“StackTrace:in Excel.ExcelOpenXmlReader.GetValues(Object [] values)

我正在用另一种方式来读取值,但我想清理代码…这是以前的读取周期:

 FileStream stream = File.Open("excelfile.xlsx", FileMode.Open, FileAccess.Read); //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //... //4. DataSet - Create column names from first row excelReader.IsFirstRowAsColumnNames = true; DataSet result = excelReader.AsDataSet(); //5. Data Reader methods Console.WriteLine("Results: " +excelReader.ResultsCount); while (excelReader.Read()) { Console.WriteLine("Row:"+excelReader.GetValues()) for (int i = 0; i < excelReader.FieldCount; i++ ) { Console.Write(excelReader.GetValue(i)+ "|"); } Console.WriteLine(""); } //6. Free resources (IExcelDataReader is IDisposable) excelReader.Close(); 

我在做错误的getValues? 我以前用它来读取SQLlogging…也许这是我使用的库的限制。

这确实是一个实施问题。 希望有足够的人会发现这个function有用的伊恩在未来的版本中实现它。

ExcelDataReader目前不支持IDataReader的这种特殊方法。 我会把这个问题公之于众,但我们可以看到其他人是否也想要这个问题

– 由Ian1971开发的Excel Reader

似乎有一个实现问题,所以我会使用第一种方法。