|
|
|
|
#1 |
|
Участник
|
Нет, буфер обмена не использовал. К сожалению, никак не могу понять, как добавлять в буфер обмена данные и потом их в эксель вставлять в несколько столбцов
.
|
|
|
|
|
#2 |
|
Участник
|
Цитата:
Код: textBuffer textBuffer = new TextBuffer();
str MyText;
;
while select inventtable
{
MyText = inventtable.ItemId + num2char(9) // символ 9 - это табуляция для перехода в следующую колонку
+ inventtable.ItemName + num2char(9)
+ "\n"; // это перевод строки
textbuffer.appendText(MyText);
}
file.InsertText("A2", textBuffer); // вставляем буфер начиная с ячейки А2 |
|
|
|
| За это сообщение автора поблагодарили: Dimk (1). | |
|
|
#3 |
|
Moderator
|
Цитата:
![]() P.S. Да, и текстовое значение "000333" после вставки останется текстовым значением "000333", не превратившись в число 333. |
|
|
|
| За это сообщение автора поблагодарили: Dimk (1). | |
|
|
#4 |
|
Участник
|
всем спасибо, буду разбираться дальше
|
|
|
|
|
#5 |
|
Участник
|
Цитата:
Единственное, с чем лично я столкнулся в использовании ADODB.Recordset, - это работа в 3-хуровневой конфигурации, когда данные для отчета (и сам Recordset) формируются, как и положено, на сервере, а выводятся в Excel на клиенте. В этом случае необходимо организовать передачу данных на клиента и формировать Recordset там, что я реализовал через небольшой вспомогательный класс. Структура Recordset передается в виде запакованного массива контейнеров [название_поля, тип_поля_ADO], а данные - в виде запакованного Map (номер строки->контейнер данных). Для передачи структуры Recordset Map не подходит - названия колонок отсортируются по алфавиту Выглядит работа примерно так: X++: #define.ReportTemplateName ('ReportTemplate.xlt') // нзвания полей - заголовков табличной части шаблона и названия колонок в RecordSet #define.fldAccountNum ('AccountNum') #define.fldTransDate ('TransDate') #define.fldDocumentDesc ('DocumentDesc') #define.fldAmount ('LineAmount') // названия полей в шапке шаблона #define.fldHdrLine1 ('headerLine1') #define.fldHdrLine2 ('headerLine2') #define.fldHdrLine3 ('headerLine3') // название ячейки, откуда будет начат вывод строк #define.fldReportLines ('reportLines') // экземпляр Uni_ReportChannelExcel, созданный на клиенте и переданный отчету Uni_ReportChannel repChannel; // ... { Map mapReport; real nLine; // номер строки данных отчета в Map - вдруг диапазона int не хватит... void outputReportHeader() { UserInfo userInfo; ; repChannel.initReportChannel(#ReportTemplatePath_RU + #ReportTemplateName); select firstonly name from userInfo where userInfo.id == curuserid(); repChannel.insertReportValue(#fldHdrLine1, this.reportTitle()); repChannel.insertReportValue(#fldHdrLine2, strfmt("@DIS10758", currencyCode)); repChannel.insertReportValue(#fldHdrLine3, strfmt("Отчет сформирован: %1 %2, пользователь: %3", today(), time2str(timenow(),0,0), userInfo.name)); repChannel.insertReportValue(#fldAccountNum,"@DIS8614"); // и т.д. - вставка полей шапки отчета } void outputReportBody() {; repChannel.outputReportBody(mapReport.pack(), #fldReportLines); } void outputReportFooter() {; // вставка итоговых полей отчета // освобождение используемых COM-объектов repChannel.finalize(); } void dumpReportStr(str _p1, TransDate _p2, str _p3, Amount _p4) {; mapReport.insert(nLine,[_p1, // #fldAccountNum _p2, // #fldTransDate _p3, // #fldDocumentDesc _p4]); // #fldAmount nLine++; } void initReportStruct() { #CCADO Array arrFields = new Array(Types::Container); int i = 1; ; arrFields.value(i, [#fldAccountNum, #adBSTR] ); i++; arrFields.value(i, [#fldTransDate, #adDBDate]); i++; arrFields.value(i, [#fldDocumentDesc, #adBSTR] ); i++; arrFields.value(i, [#fldAmount, #adDouble]); repChannel.initReportBuffer(arrFields.pack()); } ; // поехали... initReportStruct(); mapReport = new Map(Types::Real, Types::Container); nLine = 1.0; while select * from tmpTbl order by TransDate { // подготовка данных к выводу и... dumpReportStr(tmpTbl.AccountNum, tmpTbl.TransDate, tmpTbl.DocDesc, tmpTable.Amount); } // вывод в Excel outputReportHeader(); outputReportBody(); outputReportFooter(); } |
|
|
|
| За это сообщение автора поблагодарили: aidsua (1), Gustav (9). | |
|
|
#6 |
|
Участник
|
См. также http://axapta.mazzy.ru/lib/direct_sql/
|
|
|
|
| За это сообщение автора поблагодарили: Dimk (1). | |
| Теги |
| ax3.0, excel, законченный пример, отчет, экспорт, экспорт в excel, шаблон |
|
|
|