|   |   | 
| 
 | ADODB + xls | ☑ | ||
|---|---|---|---|---|
| 0
    
        fatal_error 08.01.14✎ 13:48 | 
        Добрый день, возникла проблема при чтении из 1С xls файла через ADO. суть проблемы: в файле 6 колонок. первые 5 колонок имеют числовой формат и они нормально считываются, а вот последняя имеет формат дата и при считывании через ADO значение в колонке null. пробовал следующие виды подключений:
 Connection.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + СокрЛП(СписокНоменклатуры) + ";Extended Properties=""Excel 8.0;HDR=YES"""; "Driver={Microsoft Excel Driver (*.xls)};DBQ=" + СокрЛП(СписокНоменклатуры) + "; DriverID=790; HDR=YES; IMEX=1"; также пробовал менять формат ячеек 6-го столбца на числовой - дохлый номер. добавлял 10 строк в начало и писал в них текст - тоже null. как еще можно прочитать данные? | |||
| 1
    
        fisher 08.01.14✎ 13:54 | 
        Попробуй так еще:
 "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + ПараметрыПодключения.ИмяФайла + "; Extended Properties=""Excel 12.0; HDR=NO; IMEX=1;""" | |||
| 2
    
        fatal_error 08.01.14✎ 13:58 | 
        (1) Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно. - вот такая беда появляется при Connection.Open(). На компе устанавливал AccessDatabaseEngine_x64.exe     | |||
| 3
    
        fisher 08.01.14✎ 13:59 | 
        Гы :) Там другую хрень устанавливать надо. Ща найду.     | |||
| 4
    
        fisher 08.01.14✎ 14:03 | 
        Именно вот эту хрень ставить надо:
 http://www.microsoft.com/en-us/download/details.aspx?id=23734 | |||
| 5
    
        fatal_error 08.01.14✎ 14:04 | 
        (4) спасибо, сейчас попробую.     | |||
| 6
    
        fisher 08.01.14✎ 14:06 | 
        У меня, кстати, так и не получилось под ADO гарантированно получать имена листов в том порядке, в котором они представлены пользователю. Пришлось ради этой чепухи стучаться в эксель напрямую (когда надо). А это долго :(     | |||
| 7
    
        fisher 08.01.14✎ 14:11 | 
        И от одной неочевидной бяки предостерегу, раскапывая которую пришлось много времени убить: если список листов получаешь через Connection.OpenSchema(adSchemaTables), то при сложном форматировании там могут быть не только листы, но и области листа. А в результате может быть такой замечательный эффект: данные как бы получаешь. Но не всегда все :)     | |||
| 8
    
        fatal_error 08.01.14✎ 14:13 | 
        (4) спасибо тебе, мил человек. 2 дня убил на загрузку. 
 (7) имя листа всегда одно и тоже, но приму к сведению. | |||
| 9
    
        Torquader 08.01.14✎ 14:26 | 
        (7) Так там как раз области и будут. Просто лист - это стандартная область.
 Ещё смертельно для ADO, когда в разных строках в одной колонке разные типы - ADO на этом выдаёт null. | |||
| 10
    
        fisher 08.01.14✎ 14:29 | 
        (9) Просто подавляющее большинство сэмплов кода в интернетиках для получения имени первого листа эту особенность не учитывает.     | |||
| 11
    
        Злопчинский 08.01.14✎ 14:29 | 
        (9) при моем первом попытке поработать с адом - я натолкнулся на простую но поразительную для меня бяку.. строк на единственном листе было тысяч пять, но адо возвращал что-то в районе 4000.. и все! так я плюнул и не юзаю адо... слава богу что не нужно...     | |||
| 12
    
        fisher 08.01.14✎ 14:31 | 
        (11) Если имя листа определялось в коде, а не задавалось тобой фиксированно, то ты почти гарантированно натолкнулся на описанную мной бяку.     | |||
| 13
    
        Злопчинский 08.01.14✎ 19:32 | 
        (12) хз.. областей никаких не было вроде.. простой линейный списоктаблица     | |||
| 14
    
        fisher 08.01.14✎ 19:41 | 
        (13) Вот я на таком же и споткнулся. Магазины присылали заявки вроде как в одном и том же шаблоне. Никаких визуальных отличий. Но из файлов пары магазинов вычитывалась только часть строк. Стал копать и докопался до (7). Х.з. почему там эти области появились. Может, пользователи где-то неловкое движение мышкой сделали :) Визуально тоже никаких областей и простейший формат.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |