|
|
#1 |
|
Участник
|
Создание файла-xlsx (Excel 2007) из файла - xltx (шаблон Excel 2007) не работает
AX 3 SP3
Подскажите, господа, можно ли через BinData работать с excel 2007 также как и с excel 2003. Создаю jod: PHP код:
где _fromFile ="*.xltx" - полный путь к шаблону _toFile ="*.xlsx" - полный путь к новому файлу jod проходит, но файл не открывается. Однако если у него изменить расширение с xlsx на xls, то открывается |
|
|
|
|
#2 |
|
Участник
|
я думаю, что дело в том, что 3-я акспата не поддерживает Office 2007 и соответственно формат xlsx.
__________________
С уважением, Александр. |
|
|
|
| За это сообщение автора поблагодарили: 111andrei (1). | |
|
|
#3 |
|
Участник
|
Есть большое подозрение, что Axapta тут не причем. С Office 2007 работает замечательно, как и с любым COM-объектом.
Тут скорее вопрос в формате файла .xltx, а точнее его отличия от .xlsx. Попробуйте просто переименовать .xltx в .xlsx вручную, без Axapta. В итоге при открытии увидите ту же ошибку. Вызов BinData не преобразовывает файл из одного формата в другой, а делает точную копию (бинарную) и обзывает другим именем, т.е. то же что и при ручном переименовании. А если использовать связку Axapta-Office, например так: X++: COM m_comApplication;
COM comWorkBooks;
COMVariant varTemlateName;
COM m_comDocument;
;
// bufferTransfer.loadFile(_fromFile);
// bufferTransfer.saveFile(_toFile);
m_comApplication = new COM("Excel.Application");
comWorkBooks = m_comApplication.workBooks();
varTemlateName = new COMVariant(COMVariantInOut::IN, COMVariantType::VT_BSTR);
varTemlateName.bStr(_fromFile);
m_comDocument = comWorkBooks.add(varTemlateName);
varTemlateName.finalize();
comWorkBooks.finalize();
m_comDocument.saveAs(_toFile);
m_comDocument.Close();
m_comDocument.finalize();
m_comApplication.finalize(); |
|
|
|
| За это сообщение автора поблагодарили: 111andrei (1). | |