ExcelReaderFactory,读取第一张纸

我在C#中使用ExcelDataReaderFactory ,以便读取我的Excel文件并将它们插入数据库。
现在我正在为要使用的工作表指定工作表名称。 我可以每次select它作为第一张吗?

这是我如何加载数据。

 public IExcelDataReader getExcelReader() { // ExcelDataReader works with the binary Excel file, so it needs a FileStream // to get started. This is how we avoid dependencies on ACE or Interop: FileStream stream = File.Open(_path, FileMode.Open, FileAccess.Read); // We return the interface, so that IExcelDataReader reader = null; try { if (_path.EndsWith(".xls")) { reader = ExcelReaderFactory.CreateBinaryReader(stream); } if (_path.EndsWith(".xlsx")) { reader = ExcelReaderFactory.CreateOpenXmlReader(stream); } return reader; } catch (Exception) { throw; } } public IEnumerable<string> getWorksheetNames() { var reader = this.getExcelReader(); var workbook = reader.AsDataSet(); var sheets = from DataTable sheet in workbook.Tables select sheet.TableName; return sheets; } public IEnumerable<DataRow> getData(string sheet, bool firstRowIsColumnNames = false) { var reader = this.getExcelReader(); reader.IsFirstRowAsColumnNames = firstRowIsColumnNames; var workSheet = reader.AsDataSet().Tables[sheet]; var rows = from DataRow a in workSheet.Rows select a; return rows; } 

 getData("april"); //Here I want it to be the first sheet, and not have to choose. 

欣赏任何build议。

我不知道那个图书馆。 但是我认为你正在把它转换成一个DataSet 。 然后第一张纸/表是:

 DataTable firstWorkSheet = reader.AsDataSet().Tables[0]; 

由于DataTableCollection的索引器不仅为名称提供索引重载,

所以整个方法是:

 public IEnumerable<DataRow> GetFirstSheetData(bool firstRowIsColumnNames = false) { var reader = this.getExcelReader(); reader.IsFirstRowAsColumnNames = firstRowIsColumnNames; return reader.AsDataSet().Tables[0].AsEnumerable(); }