Цитата:
Сообщение от
Fizik
Прошло время. Волею судеб сейчас мы все еще работаем на Axapta 3.0 SP4 Build #11.0
При том корпоративный MS Office уже 2013.
Ошибка работы с Excel снова появилась, причем метод visible() уже переделан.
Обращение к Excel происходит вот таким образом:
excel = new COMExcelDocument_RU();
excel.newFile(#ReportTemplatePath_FileServer + "ApplicationFSS.xltx", false);
excel.insertValue(bookmark, substr(_content, i, 1));
Подскажите, как все же еще можно переделать.
У нас зарубежный клиент, так что вместо COMExcelDocument_RU мы используем свои кастомные наработки. Офис 2013, Аксапта версии 4.0.
Вставить значение можно так:
X++:
public void insertValue(BookMark _bookMark, anyType _anyVal, int _workSheet = 1)
{
COM comRange;
;
this.checkExistDocument();
comRange = this.findRange(_bookMark, _workSheet);
this.insertValueInRange(comRange, _anyVal);
}
X++:
// Creates object range type named the same way as Excel bookmark
// bookMark -> Excel bookmark name
public COM findRange(PPO_MSOfficeBookMark bookMark, int _workSheet = 1) // was protected
{
COM comRange,
comWorkSheet;
COM comApplication;
;
if (m_comDocument)
{
comWorkSheet = this.getWorkSheet(_workSheet);
comApplication = m_comDocument.application();
comWorkSheet.activate();
if (comWorkSheet && comApplication)
{
comRange = comApplication.range(bookMark);
}
}
return comRange;
}
X++:
// Exporting value in Range object
// comRange -> Range object
// anyVal -> Varible for export to Range object
protected void insertValueInRange(COM _comRange, anyType _anyVal)
{
_comRange.value2(_anyVal);
}
Думаю, преобразовать код под свои нужды сможете без проблем.