.xls при импорте в данные отсутствуют некоторые поля - PullRequest
0 голосов
/ 12 января 2020

Я использую соединение 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  
...