Tôi đang cố đọc một tệp Excel vào danh sách Data.DataTable, mặc dù với phương pháp hiện tại của tôi, có thể mất một thời gian rất dài. Tôi thường xuyên đi đến Worksheet by Worksheet, di động bằng ô, và nó có xu hướng mất một thời gian rất dài. Có cách nào nhanh hơn để làm việc này không? Đây là mã của tôi:Nhập Excel vào một DataTable nhanh chóng
List<DataTable> List = new List<DataTable>();
// Counting sheets
for (int count = 1; count < WB.Worksheets.Count; ++count)
{
// Create a new DataTable for every Worksheet
DATA.DataTable DT = new DataTable();
WS = (EXCEL.Worksheet)WB.Worksheets.get_Item(count);
textBox1.Text = count.ToString();
// Get range of the worksheet
Range = WS.UsedRange;
// Create new Column in DataTable
for (cCnt = 1; cCnt <= Range.Columns.Count; cCnt++)
{
textBox3.Text = cCnt.ToString();
Column = new DataColumn();
Column.DataType = System.Type.GetType("System.String");
Column.ColumnName = cCnt.ToString();
DT.Columns.Add(Column);
// Create row for Data Table
for (rCnt = 0; rCnt <= Range.Rows.Count; rCnt++)
{
textBox2.Text = rCnt.ToString();
try
{
cellVal = (string)(Range.Cells[rCnt, cCnt] as EXCEL.Range).Value2;
}
catch (Microsoft.CSharp.RuntimeBinder.RuntimeBinderException)
{
ConvertVal = (double)(Range.Cells[rCnt, cCnt] as EXCEL.Range).Value2;
cellVal = ConvertVal.ToString();
}
// Add to the DataTable
if (cCnt == 1)
{
Row = DT.NewRow();
Row[cCnt.ToString()] = cellVal;
DT.Rows.Add(Row);
}
else
{
Row = DT.Rows[rCnt];
Row[cCnt.ToString()] = cellVal;
}
}
}
// Add DT to the list. Then go to the next sheet in the Excel Workbook
List.Add(DT);
}
Đáng tiếc là không. – gustavodidomenico
"Có cách nào nhanh hơn để làm việc này không? Thật không may là không." Rác tuyệt đối. Mã này đang tạo (và nhầm lẫn không vứt bỏ) một đối tượng COM cho mỗi giá trị ô Excel duy nhất mà nó đọc. Đây là cách làm chậm nhất có thể! Đó là MUCH nhanh hơn để đọc trong toàn bộ bảng tính thành một mảng trong một lần, sau đó lặp qua các mục trong mảng đó. –