Trước tiên, tôi muốn nói rằng tôi đang ở trên nước sâu ở đây, vì tôi chỉ thực hiện một số thay đổi đối với mã được viết bởi người khác trong công ty, sử dụng OleDbDataAdapter để "nói chuyện" với Excel và tôi không quen thuộc với điều đó. Có một lỗi ở đó tôi không thể làm theo.Vấn đề với việc sử dụng OleDbDataAdapter để lấy dữ liệu từ một trang tính Excel
Tôi đang cố gắng sử dụng OleDbDataAdapter để đọc trong một tệp excel với khoảng 450 dòng.
Trong đoạn mã nó được thực hiện như thế này:
connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + path + "';" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"");
connection.Open();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCommand.CommandText, connection);
objAdapter.Fill(objDataSet, "Excel");
foreach (DataColumn dataColumn in objTable.Columns) {
if (dataColumn.Ordinal > objDataSet.Tables[0].Columns.Count - 1) {
objDataSet.Tables[0].Columns.Add();
}
objDataSet.Tables[0].Columns[dataColumn.Ordinal].ColumnName = dataColumn.ColumnName;
objImport.Columns.Add(dataColumn.ColumnName);
}
foreach (DataRow dataRow in objDataSet.Tables[0].Rows) {
...
}
Tất cả mọi thứ dường như được làm việc tốt, ngoại trừ một điều. Cột thứ hai được làm đầy với số lượng chủ yếu là bốn chữ số như 6739, 3920 và một, nhưng các hàng liên kết có các giá trị chữ và số như 8201NO và 8205NO. Năm ô này được báo cáo là có nội dung trống thay vì nội dung chữ và số của chúng. Tôi đã kiểm tra trong excel, và tất cả các tế bào trong các cột này được đánh dấu là văn bản.
Đây là tệp xls bằng cách này chứ không phải xlsx.
Có ai có bất kỳ đầu mối nào vì sao các ô này được hiển thị dưới dạng trống trong DataRow, nhưng các ô số được hiển thị không? Có các cột khác có nội dung chữ và số được hiển thị tốt.
Nhờ tất cả vì đã giúp tôi ra với vấn đề này. Bạn đã làm cho tôi hiểu tại sao điều này xảy ra, vì vậy tôi có thể tìm ra giải pháp thích hợp. Tôi vẫn nghĩ cách nó hoạt động khá khủng khiếp, nhưng đó là một câu chuyện khác :) –