Показать сообщение отдельно
Старый 02.09.2010, 10:48   #49  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от erudit Посмотреть сообщение
Используя класс ExcelImportADO столкнулся со следущей проблемой - если Excel файл содержит более 65536 строк, то первый вызов функции excelImportADO.eof() возвращает TRUE - что НЕ ВЕРНО, т.к. ещё прохода по строкам не было и соотв. импорт заканчивается не начавшись.
Кто-нибудь сталкивался с подобной проблемой?
У меня не воспроизвелось после отработки такого джоба:
X++:
#CCADO
static void Job333_gl00mieExcelImportADO(Args _args)
{
    ExcelImportADO doc = new ExcelImportADO(@'C:\Test_gl00mie.xlsx', #adOpenStatic);
    ;
    doc.openFile(false);
    while(!doc.eof())
    {
        print doc.getFieldValue(1,false);
        doc.moveNext();
    }
}
Всё замечательно отрабатывает. Файл C:\Test_gl00mie.xlsx содержит на первом листе слово Field1 в ячейке A1 и ниже от ячейки A2 до A70000 соответственно числа от 2 до 70 тыщ.

Ну и в Class Declaration класса надо заменить шаблон строки подключения на рекомендацию AndyD'а:
Цитата:
Сообщение от AndyD Посмотреть сообщение
X++:
"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + %1 + ";Extended Properties='Excel 12.0'"
А вы openFile не забыли у себя сделать? А то .eof() возвращает true и когда recordset = null.
За это сообщение автора поблагодарили: erudit (1).