12.08.2011, 15:22 | #18 |
Участник
|
а у меня не заработало, все исправления, которые есть использовал, всё равно не хочет нормально работать
использовал вот этот job X++: static void CorrectADOFileImport(Args _args) { ExcelImportADO excel; Counter fieldCount; Counter curField; FileNameOpen fileName; COM adoxCatalog = new COM(@"ADOX.Catalog"); COM Tables; COM Table; COM Columns; COM Column; int i; ; filename = WinAPI::getOpenFileName(infolog.hWnd(), ["Microsoft Excel","*.xls"], '', "Выберите файл"); if (!filename) throw error("@SYS26757"); excel = new ExcelImportADO(fileName); if (excel.openFile()) { fieldCount = excel.getFieldsCount(); adoxCatalog.ActiveConnection(excel.getConnection()); Tables = adoxCatalog.Tables(); Table = Tables.Item(0); if (Table) { Columns = Table.Columns(); for (i=0;i<Columns.Count();i++) { Column = Columns.Item(i); if (Column) info(Column.Name()); } 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(); } } } } пробегая дебаггером заметил, что он даже не читает его, вылетая вот с этой ошибкой Цитата:
Метод "Open" в COM-объекте класса "ADODB.Recordset" возвратил код ошибки 0x80004005 (E_FAIL), который означает: Недопустимое имя '0$'. Проверьте, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.
p.s. dax 2009, строка в declaration "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + %1 + ";Extended Properties='Excel 8.0;HDR=No;FirstRowHasNames=0;IMEX=1'" p.p.s. а так хочется использовать этот класс для того, чтобы записывать данные в таблицы через классы Ax типа AxInventTable и им подобные хочу сам немного доработать этот класс, чтобы в первой ячейка например указывалась таблица, в которую вставлялись поля, а дальше список полей во второй строке, после чего строчки с данными. Думаю тогда импорт через стандартные группы определений Excel сам собой бы отпал с его низкой скоростью. Последний раз редактировалось niksen; 12.08.2011 в 16:48. |
|