如何使用ClosedXml将excel中的整个工作表数据读入DataTable

kja*_*a83 6 .net closedxml

Excel 工作表包含 60K 条记录。需要读取并存入DataTable。目前正在逐行阅读。有没有其他更好的方法使用 ClosedXml。

DataTable dt = new DataTable();
var wb = new XLWorkbook(fileName, XLEventTracking.Disabled);
using (wb)
{
    var ws = wb.Worksheet(1);
    using (ws)
    {                    
        var headerRow = ws.Row(3);
        int lastColumn = 32;
        foreach (var col in headerRow.Cells(true))
        {
            dt.Columns.Add(col.Value.ToString());
        }
        foreach (var row in ws.Rows().Skip(3))
        {
            var dr = dt.NewRow();
            for (int index = 0; index < lastColumn; index++)
            {
                dr[index] = row.Cell(index + 1).Value;
            }
            dt.Rows.Add(dr);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Fra*_*tha 12

你可以使用:

using (var wb = new XLWorkbook(fileName, XLEventTracking.Disabled))
{
    var ws = wb.Worksheet(1);
    DataTable dataTable = ws.RangeUsed().AsTable().AsNativeDataTable();
    /* Process data table as you wish */
}
Run Code Online (Sandbox Code Playgroud)