Я использую соединение OLEDB для переноса данных из .xls в datatable. мой код
public static DataTable getXlssheetstoDatatable(string ExcelFilePath)
{
string query = "select * from ["Test$"]";
try
{
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.DataSet DtSet;
System.Data.OleDb.OleDbDataAdapter MyCommand;
MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExcelFilePath + @";Extended Properties=""Excel 8.0;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""");
//MyConnection = new System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFilePath + @";Extended Properties=""Excel 12.0;IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text""");
MyCommand = new System.Data.OleDb.OleDbDataAdapter(query, MyConnection);
MyCommand.TableMappings.Add("Table", "dtHeader");
DtSet = new System.Data.DataSet();
MyCommand.Fill(DtSet);
DataTable dt = DtSet.Tables[0];
MyConnection.Close();
return dt;
}
catch (Exception ex)
{
return new DataTable();
}
return new DataTable();
}
xls со следующими данными будет работать нормально:
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9
HD HD123456 1234 xyz 95 58.5 X 91 16
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
с любым количеством строк выше данных Excel работает нормально.
Но в следующем случае это не работает:
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
123457 1235 abc 90 65 3
123458 1236 mnb 90 78 1
123489 1237 xyz 54 48 1.85
HD HD123456 1234 xyz 95 58.5 X 91 16