11.03.2010, 15:18 | #33 |
Боец
|
Несколько по-другому решил такую же проблему. Идея в следующем:
1) Копируем шаблон отчета (*.xlt) во временную папку (WinApi::getTempPath()), одновременно присвоив ему нужное имя 2) Печатаем отчет на основе скопированного и переименованного шаблона из временной папки 3) Удаляем скопированный шабон. Способ чуть более тяжелее, но и "чуть" более надежнее, при этом позволяет делать SaveAs с управляемым именем. Недостатоки 1. Копирование файла 2. Excel, собако, таки приписывает в конце единичку X++: FileNameOpen copyAndRenameTemplate(FileNameOpen _templateFilePath, FileName _newFileName) { FilePath filePath; FileName fileName; FileExtension fileExt; Counter fileIdx; ; [filePath, fileName, fileExt] = fileNameSplit(_templateFilePath); tmpTempaleFilePath = WinApi::getTempPath() + _newFilename + fileExt; if ( WinApi::fileExists(_templateFilePath) && WinApi::fileExists2(WinApi::getTempPath()) ) { tmpTempaleFilePath = WinApi::getTempPath() + _newFilename + fileExt; WinApi::copyFile(_templateFilePath, tmpTempaleFilePath, true); } return tmpTempaleFilePath; } X++: void deleteTmpTempaleFile() { ; if (WinApi::fileExists(tmpTempaleFilePath)) WinApi::deleteFile(tmpTempaleFilePath); } X++: try { reportTemplateFile = this.copyAndRenameTemplate(reportTemplateFile, newFileName); excel = new ComExcelDocument_RU(); excel.open(reportTemplateFile, false); this.deleteTmpTempaleFile(); this.printReport(); excel.visible(true); } Последний раз редактировалось DSPIC; 11.03.2010 в 15:23. |
|