04.05.2016, 12:10 | #34 |
Участник
|
Моя старенькая AX2009 начала барахлить при выводе данных в Excel. Я использовал для вывода данных буфер обмена. Через много лет у некоторых пользователей (не у всех) стало вываливаться сообщение "Метод pastespecial возвратил код ошибки Неизвестно, которое обозначает Неизвестно".
В связи с этим переделал движок отчетов на технологию, описанную в этой ветке. Обернул все тонкости работы с Recordset в класс zExcelADO, чтобы программирование отчета происходило на высоком уровне. Вместо нулевых значений в Excel остаются пустые ячейки. Методы DD_DrawGridToTheEnd и DD_FontBoldAndBackColor1 я таскаю с собой уже 10 лет Класс zExcelADO прилагается. Ниже Job с примером X++: static void Job129(Args _args) { zExcelADO e = new zExcelADO(); CustInvoiceJour CustInvoiceJour; int i; ; e.addField(Types::String); e.addField(Types::Date); e.addField(Types::UtcDateTime); e.addField(Types::Real); e.addField(Types::String); while select CustInvoiceJour { i++; if (i > 1000) break; e.addRecord(); e.addCell(CustInvoiceJour.InvoiceId); e.addCell(CustInvoiceJour.InvoiceDate); e.addCell(CustInvoiceJour.createdDateTime); e.addCell(CustInvoiceJour.InvoiceAmount); e.addCell(CustInvoiceJour.salesTable().custTable_CustAccount().Name); } e.toExcel("A4"); e.excel().insertValue("A1", "Список накладных"); e.excel().insertValue("A2", "Первые 1000 штук"); e.excel().insertValue("A3", "Номер"); e.excel().insertValue("B3", "Дата"); e.excel().insertValue("C3", "Дата создания"); e.excel().insertValue("D3", "Сумма"); e.excel().insertValue("E3", "Название клиента"); e.DD_DrawGridToTheEnd("A3", 1, true); e.DD_FontBoldAndBackColor1("A1", "E3", true, -1, -1, -1, -1); e.excel().visible(true); } X++: e.excel(new ComExcelDocument_RU()); e.excel().newFile("Имя файла.xlt",false); |
|
|
За это сообщение автора поблагодарили: Ruff (5), Gustav (10), Player1 (4). |
Теги |
ado, comvariant, excel, faq, odbc, sql, интеграция, прямой доступ, формат дат, экспорт, экспорт в excel |
|
|