Ошибка Excel в DataTable в c # - PullRequest
       20

Ошибка Excel в DataTable в c #

0 голосов
/ 17 марта 2012

У меня странная проблема,
, когда я пытаюсь открыть и загрузить данные Excel в DataTable,
некоторые данные в листе Excel загружаются, но некоторые данные не загружаются,
в чем проблема,
Вы можете мне помочь.
Я добавил функцию GetExcelData,
Пожалуйста, посмотрите на этот код,
и, пожалуйста, скажите, в чем проблема.

GROUP      CLASS       TYPE      C1       C2       C3       C4      C4       C5
M1         10          A         D        B        D        A       A        D
M1         10          B         C        D        E        E       D        D
M2         11          A         D        D        D        D       D        E
M2         11          B         C        D        E        D       E        A

Выше я разместил образец листа.
он копирует только данные в столбцах GROUP, CLASS и TYPE.
Но странно, что в некоторых файлах Excel эта ошибка не возникает,
и я не нашел ответа, решил спросить его здесь.

public DataTable GetExcelData(string fileName, string sheetName)
    {
        string sql = "";
        OleDbConnection conn = new OleDbConnection();
        OleDbCommand command;
        OleDbDataAdapter adapter = new OleDbDataAdapter();
        DataTable dt = new DataTable();
        command = conn.CreateCommand();
        string excel_file = fileName;
        string excel_type = System.IO.Path.GetExtension(excel_file);
        string connstr = ""; 

        if(excel_type=="XLSX")
            connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0";
        else
            connstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +fileName + ";Extended Properties='Excel 12.0;IMEX=1; HDR=YES'";

        conn.ConnectionString = connstr;
        sql = "SELECT * FROM [" + sheetName + "$]";

        command.CommandText = sql;
        adapter.SelectCommand = command;
        adapter.Fill(dt);

        return dt;
    }

1 Ответ

0 голосов
/ 18 августа 2015

с момента вашей первой строки подключения

connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0";

не имеет IMEX = 1, он не сможет импортировать столбцы смешанных типов, это происходит только иногда из-за вашего условия if. То же самое с HDR, в 1 случае HDR отсутствует. Ваша строка подключения, если условие должно быть,

connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0;HDR=Yes;IMEX=1";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...