none
Excel Oledb. Читает числа как дата RRS feed

  • Вопрос

  • Читаю Excel-файл через Oledb (С#). 

    Документ представляет из себя не просто ровную таблицу, а содержит в начале "шапку" в которой а разных ячейках есть текст, числа, даты.

    И вот, если в какой-то колонке сначала встретилась дата, то Oledb  считает, что вся колонка является типом DateTime. А ниже в этой колонке может быть и текст и числа. и соответственно получаем завал.

         var conString =
                    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='d:\\file.xls';Extended Properties=\"Excel 8.0;HDR=NO;\"";
    using (var con = new OleDbConnection(strcon))
     {
          con.Open();
    ...
    var da= new OleDbDataAdapter("select * from [" + worksheetName + "]", con);
    ...
     var dt = new DataTable(worksheetName);
    da.Fill(dt);
    ...
    

    Как быть? можно ли как-то заранее установить что тип колонки не DateTime а String ?

    19 марта 2013 г. 12:05

Ответы

Все ответы

  • Привет

    Включите миксованный тип данных, тогда все данные должны интерпритироваться как текстовые и проблема должна уйти.

    Это можно сделать изменив строку подключения, добавив в Extended Properties:

    IMEX=1;ImportMixedTypes=Text

    Надеюсь это поможет. Похожая проблема - Не читается колонка из xlsx


    Для связи [mail]


    22 марта 2013 г. 8:24
  • Привет

    Включите миксованный тип данных, тогда все данные должны интерпритироваться как текстовые и проблема должна уйти.

    Это можно сделать изменив строку подключения, добавив в Extended Properties:

    IMEX=1;ImportMixedTypes=Text

    Надеюсь это поможет. 




    С конкретным файлов не помогает, зараза. С другим тестовым файлом срабатывает, а с этим нет.

    В этой колонке идет сначала дата, потом несколько с текстом, потом пара с числами (тип данных у них выставлен числовой).

    При открытии, там где текст, становится пусто, а где числа, становятся даты. 

    А если в какую-нибудь пустую ячейку добавить текст, то все начинает работать как надо. Чем ему существующий текст не понравился?


                     

    22 марта 2013 г. 9:25
  • Честно говоря, подобные проблемы не имеют нормальных стабильных решений. Подумайте, не получится ли у вас отказаться от работы через OleDB.  
    22 марта 2013 г. 13:04