ExcelReaderFactory, reading first sheet

前端 未结 2 1127
死守一世寂寞
死守一世寂寞 2021-01-20 21:00

I am using the ExcelDataReaderFactory in C#, in order to read my Excel files and inserting them to a database.
Right now I am specifying sheetname

2条回答
  •  北荒
    北荒 (楼主)
    2021-01-20 21:51

    Update for v3

    There have been some breaking changes in the upgrade to v3, so here's the original code and accepted answer updated to work with v3.

        public IExcelDataReader getExcelReader()
        {
            return ExcelReaderFactory.CreateReader(System.IO.File.OpenRead(_path));
        }
    
        public IEnumerable getWorksheetNames()
        {
            var reader = this.getExcelReader();
            var workbook = reader.AsDataSet();
            var sheets = from DataTable sheet in workbook.Tables.Cast() select sheet.TableName;
            return sheets;
        }
    
        public IEnumerable getData(string sheet, bool firstRowIsColumnNames = false)
        {
            var reader = this.getExcelReader();
            reader.AsDataSet(new ExcelDataSetConfiguration()
            {
                ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = firstRowIsColumnNames
                }
            });
            var workSheet = reader.AsDataSet().Tables[sheet];
            var rows = from DataRow a in workSheet.Rows select a;
            return rows;
        }
    
        public IEnumerable GetFirstSheetData(bool firstRowIsColumnNames = false)
        {
            var reader = this.getExcelReader();
            reader.AsDataSet(new ExcelDataSetConfiguration()
            {
                ConfigureDataTable = (_) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = firstRowIsColumnNames
                }
            });
            return getData(getWorksheetNames().First());
        }
    

    I would say that getExcelReader has been simplified to the point of redundancy.

提交回复
热议问题