Asp.net
如何將流excel文件轉換為數據表C#?
我使用 Epplus 從流中讀取 xlsx 文件。
它有一個錯誤,它無法讀取我的工作簿中的某些列。如何在沒有 epplus 的情況下將 xlsx 文件從流讀取到數據表?
我的舊程式碼:
public static DataSet ReadExcelFile(Stream stream) { try { //2. Reading from a OpenXml Excel file (2007 format; *.xlsx) IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream); //... DataSet result = excelReader.AsDataSet(); return result; } catch (Exception x) { throw x; } }我沒有報告它,但我嘗試了很多組合。如果工作表中有空列,epplus reader 無法正確讀取列值。
“它有一個錯誤,它無法讀取我工作簿中的某些列”
你能描述一下這個錯誤,你有沒有報告過或者已經知道了,你使用的是什麼版本?
DataTable這是使用 EPPlus將 excel 文件載入到 a 中的簡單方法。public static DataTable getDataTableFromExcel(string path) { using (var pck = new OfficeOpenXml.ExcelPackage()) { using (var stream = File.OpenRead(path)) { pck.Load(stream); } var ws = pck.Workbook.Worksheets.First(); DataTable tbl = new DataTable(); bool hasHeader = true; // adjust it accordingly( i've mentioned that this is a simple approach) foreach (var firstRowCell in ws.Cells[1, 1, 1, ws.Dimension.End.Column]) { tbl.Columns.Add(hasHeader ? firstRowCell.Text : string.Format("Column {0}", firstRowCell.Start.Column)); } var startRow = hasHeader ? 2 : 1; for (var rowNum = startRow; rowNum <= ws.Dimension.End.Row; rowNum++) { var wsRow = ws.Cells[rowNum, 1, rowNum, ws.Dimension.End.Column]; var row = tbl.NewRow(); foreach (var cell in wsRow) { row[cell.Start.Column - 1] = cell.Text; } tbl.Rows.Add(row); } return tbl; } }