|
|
#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. |
|
|