AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.11.2010, 13:04   #1  
111andrei is offline
111andrei
Участник
Самостоятельные клиенты AX
 
52 / 9 (1) +
Регистрация: 29.04.2004
Адрес: Москва
Создание файла-xlsx (Excel 2007) из файла - xltx (шаблон Excel 2007) не работает
AX 3 SP3
Подскажите, господа, можно ли через BinData работать с excel 2007 также как и с excel 2003.
Создаю jod:
PHP код:
static void _andre_TransferFile(Args _args)
{
BinData             bufferTransfer = new BinData();
    ;
    
    
bufferTransfer.loadFile(_fromFile);
    
bufferTransfer.saveFile(_toFile);

,
где
_fromFile ="*.xltx" - полный путь к шаблону
_toFile ="*.xlsx" - полный путь к новому файлу

jod проходит, но файл не открывается. Однако если у него изменить расширение с xlsx на xls, то открывается
Старый 11.11.2010, 13:17   #2  
samolalex is offline
samolalex
Участник
Аватар для samolalex
Самостоятельные клиенты AX
 
259 / 107 (4) +++++
Регистрация: 18.06.2010
Адрес: Москва
я думаю, что дело в том, что 3-я акспата не поддерживает Office 2007 и соответственно формат xlsx.
__________________
С уважением, Александр.
За это сообщение автора поблагодарили: 111andrei (1).
Старый 11.11.2010, 17:57   #3  
snirk is offline
snirk
Участник
 
36 / 12 (1) ++
Регистрация: 11.07.2007
Есть большое подозрение, что 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();
То все получится. Совет - смотрите в сторону классов ComExcelDocument_RU, ComOfficeDocument_RU
За это сообщение автора поблагодарили: 111andrei (1).
Теги
excel, шаблон

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Ошибка после установки - AX40SP2FP1EE natterru DAX: Администрирование 13 03.09.2010 09:53
Excel 2003 и 2007 if_maks DAX: Программирование 6 07.06.2010 17:11
Печать excel 2007 Bars DAX: Программирование 4 23.07.2009 09:20
AX UK: Excel 2007 Web Data Add-in Blog bot DAX Blogs 1 29.09.2008 18:07
Возникла проблема с получением имени файла при создании своего канала вывода отчетов. oleg_kap DAX: Программирование 3 06.06.2006 14:12

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 16:29.