|
![]() |
#1 |
Участник
|
На днях обнаружил интересную особенность в именовании листов Excel и том, в каком порядке возвращаются данные о листах (таблицах ADOX.Catalog). Во-первых, если в названиях листов есть какие-то неположеные символы, названия берутся в одинарные кавычки, причем просто лист обзывается 'Sheet 1', а вот именованный диапазон автофильтра возвращается как 'Sheet 1$'Smth, т.е. во втором случае кавычки идут после '$'. В связи с этим кроме символа $ и всего, что идет после него, из имени теперь вырезаются и одинарные кавычки. Во-вторых, как выяснилось, данные о листах (таблицах ADOX.Catalog) возвращаются отсортированные без учета регистра по названиям листов, а вовсе не в том порядке, в каком листы представлены в книге Excel. Поскольку класс по умолчанию использует в выборке имя листа, первого с точки зрения ADOX.Catalog, это может иметь нежиданный эффект - обратите внимание...
Обновленная версия класса, вырезающая кавычки из имен листов, выложена в первом сообщении темы. |
|
|
За это сообщение автора поблагодарили: blokva (2). |
![]() |
#2 |
Пенсионер
|
Да есть такая штука, прошу меня простить, я это тоже обнаружил, исправил у себя, а обществу не сообщил...забыл в запарке
![]()
__________________
![]() А еще у меня растет 2 внучки!!! Кому интересно подробности тут: http://www.baby-shine.com/ |
|
![]() |
#3 |
Участник
|
Ошибка при импорте из прикрепленного файла
Посмотрите файл.
Запускаю импорт из него. Вместо первой сразу начинает импорт со второй строки. Какие варианты исправления и объяснения происходящего? Помимо этого, иногда неверно определяется число столбцов Excel. (больше 100 пишет) Код job для импорта, который использую: X++: static void WrongADOFileImport(Args _args) { ComExcelImportADO_UAI excel; Counter fieldCount; Counter curField; FileNameOpen fileName; ; filename = WinAPI::getOpenFileName(infolog.hWnd(), ["Microsoft Excel","*.xls"], '', "Выберите файл"); if (!filename) throw error("@SYS26757"); excel = new ComExcelImportADO_UAI(fileName); if (excel.openFile()) { fieldCount = excel.getFieldsCount(); box::info(int2str(fieldCount)); while (!excel.eof()) { info(excel.getFieldValue(1, true)); info(excel.getFieldValue(2, true)); info(excel.getFieldValue(3, true)); info(excel.getFieldValue(4, true)); info(excel.getFieldValue(5, true)); for (curField = 6; curField < fieldCount; curField++) { info(excel.getFieldValue(curField, true)); } return; //только первую строку //excel.moveNext(); } } } |
|
Теги |
ado, download, excel, импорт, полезное, axapta |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|