11.11.2010, 13:04 | #1 |
Участник
|
Создание файла-xlsx (Excel 2007) из файла - xltx (шаблон Excel 2007) не работает
AX 3 SP3
Подскажите, господа, можно ли через BinData работать с excel 2007 также как и с excel 2003. Создаю jod: PHP код:
где _fromFile ="*.xltx" - полный путь к шаблону _toFile ="*.xlsx" - полный путь к новому файлу jod проходит, но файл не открывается. Однако если у него изменить расширение с xlsx на xls, то открывается |
|
11.11.2010, 13:17 | #2 |
Участник
|
я думаю, что дело в том, что 3-я акспата не поддерживает Office 2007 и соответственно формат xlsx.
__________________
С уважением, Александр. |
|
|
За это сообщение автора поблагодарили: 111andrei (1). |
11.11.2010, 17:57 | #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). |