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();
}
}
|
(完)

沒有留言:
張貼留言