2020-04-27
range
參數名稱: The range 工作表1!A1:L2 is already part of table 'Table1'
描述: 在執行目前 Web 要求的過程中發生未處理的例外狀況。請檢閱堆疊追蹤以取得錯誤的詳細資訊,以及在程式碼中產生的位置。
例外狀況詳細資訊: System.ArgumentException: range
參數名稱: The range 工作表1!A1:L2 is already part of table 'Table1'
原始程式錯誤:
行 858: var firstCell = workSheet.FirstCellUsed();
行 859: var lastCell = workSheet.LastCellUsed();
行 860: dt = workSheet.Range(firstCell.Address, lastCell.Address).AsTable().AsNativeDataTable();
行 861: }
行 862:
經查,如果是 ClosedXML 0.94.2 或 0.95.2 匯出的 .xlsx
匯入時,在 AsTable() 這邊會出錯;
但若為 OpenXML ( DocumentFormat.OpenXml ) 2.10.1 匯出的,匯入不會有問題。
要改寫成下面方式,ClosedXML 才能讀取。
using (XLWorkbook workBook = new XLWorkbook(fileName)) { IXLWorksheet workSheet = workBook.Worksheet("工作表1"); // 讀取第一個 Sheet //IXLWorksheet worksheet = workbook.Worksheet(1); //var worksheet = workbook.Worksheets.First(); var firstCell = workSheet.FirstCellUsed(); var lastCell = workSheet.LastCellUsed(); var range = workSheet.Range(firstCell.Address, lastCell.Address); for (int i=2; i <= range.RowCount(); i++) { // row =1 是標題列;row=2 才開始是資料列 lineNo = i; string sn = range.Cell(i, 1).Value.ToString(); string cName = range.Cell(i, 2).Value.ToString(); string addr = range.Cell(i, 3).Value.ToString(); } } |
(完)
沒有留言:
張貼留言