Tôi đang sử dụng OLEDB Data Provider để đọc file excel, nhưng vấn đề là trong excel sheet một số cloumn có giá trị không hợp lệ ví dụ thay vì chuỗi số được ở đó, Khi tôi đọc giá trị không hợp lệ này tôi nhận được một chuỗi rỗng thay vì giá trị thực tế.Đọc file excel sử dụng nhà cung cấp OLEDB liệu
cho ảnh chụp màn hình ở trên khi tôi đọc giá trị john nhận chuỗi rỗng.
Vậy có cách nào để đọc giá trị không hợp lệ này không?
Mọi trợ giúp sẽ được đánh giá cao.
Các Mã là đọc file excel
private DataTable ReadExcelFile(string sheetName, string path)
{
using (OleDbConnection conn = new OleDbConnection())
{
DataTable dt = new DataTable();
string Import_FileName = path;
string fileExtension = Path.GetExtension(Import_FileName);
if (fileExtension == ".xls")
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";
if (fileExtension == ".xlsx")
conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'";
using (OleDbCommand comm = new OleDbCommand())
{
comm.CommandText = "Select * from [" + sheetName + "$]";
comm.Connection = conn;
using (OleDbDataAdapter da = new OleDbDataAdapter())
{
da.SelectCommand = comm;
da.Fill(dt);
return dt;
}
}
}
}
Tôi nghĩ bạn có thể thực hiện điều tương tự bằng cách đặt '; IMEX = 1" 'trong chuỗi kết nối sau' HDR = YES'. –
@DougGlancy từ những gì tôi nhớ có vấn đề với cách tiếp cận này, nhưng một thử và nếu nó hoạt động, nó tốt hơn so với chỉnh sửa Registry –
IMEX = 1 không ảnh hưởng đến điều này. Xem chủ đề này http://stackoverflow.com/questions/10102149/what-is-imex-in-the-oledb-connection -chuỗi – Adam