Я использую OLEDB поставщик данных читать первенствую файл, но проблема заключается в том, что в Excel лист некоторых cloumn имеют недопустимое значение, например, вместо номера строки там, Когда я прочитал это недопустимое значение. Я получаю пустую строку вместо фактического значения.Чтения первенствует файл с помощью поставщика OLEDB данных
для скриншота выше, когда я прочитал значение джон получает пустую строку.
Итак, есть ли способ прочитать это недопустимое значение?
Любая помощь будет оценена по достоинству.
Код является чтение файла 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;
}
}
}
}
Я думаю, вы можете сделать то же самое, установив '; IMEX = 1" 'в строку соединения после' HDR = YES'. –
@DougGlancy из того, что я помню, возникла проблема с этим подходом, но это определенно стоит попытка, и если она работает, это лучше, чем редактирование реестра. –
IMEX = 1 не влияет на это. См. эту тему http://stackoverflow.com/questions/10102149/what-is-imex-in-the-oledb-connection -string – Adam