Russian Qt Forum
Ноябрь 01, 2024, 07:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: выбор кодировки открытия файла в word  (Прочитано 7081 раз)
aptypr
Гость
« : Сентябрь 14, 2011, 13:16 »

судя по http://msdn.microsoft.com/en-us/library/bb216319%28v=office.12%29.aspx
нужно использовать что-то типа querySubObject("Open(const QString &,,,,..,const QString&)",list)
где в list - QList<QVariant>.Но в консоли постоянно выводится type mismatch parameter 8.
кому нибудь приходилось при открытии документа word указывать кодировку открываемого файла, если да, то подскажите, как это правильно сделать.
Заранее благодарю.
Записан
SeverusSnape
Гость
« Ответ #1 : Сентябрь 14, 2011, 14:06 »

Может быть пригодится - в своей программе использую функцию "Сохранить как", в которой также можно указать кодировку

Код:
void MsWordDocument::saveAsDoc(const QString& filename)
{
   
    if (filename.isEmpty() || QFile::exists(filename))
        return;

    QList<QVariant> params;

    QVariant newFileName(filename);
    QVariant fileFormat(0); //doc
    QVariant LockComments(false);
    QVariant Password("");
    QVariant recent(true);
    QVariant writePassword("");
    QVariant ReadOnlyRecommended(false);

    QVariant EmbedTrueTypeFonts(true);
    QVariant SaveNativePictureFormat(true);
    QVariant SaveFormsData(false);
    QVariant SaveAsAOCELetter(false);
    QVariant Encoding(20127);
    QVariant InsertLineBreaks(false);
    QVariant AllowSubstitutions(false);
    QVariant LineEnding(0);
    QVariant AddBiDiMarks(false);

    params << newFileName << fileFormat << LockComments << Password << recent << writePassword << ReadOnlyRecommended
           << EmbedTrueTypeFonts << SaveNativePictureFormat << SaveFormsData << SaveAsAOCELetter << Encoding
           << InsertLineBreaks << AllowSubstitutions << LineEnding << AddBiDiMarks;


 
    WordApplication->querySubObject("ActiveDocument()")->querySubObject("SaveAs(const QVariant&, const QVariant&,"
       "const QVariant&, const QVariant&, const QVariant&, const QVariant&,const QVariant&, const QVariant&, const QVariant&,"
       "const QVariant&, const QVariant&, const QVariant&, const QVariant&, const QVariant&, const QVariant&, const QVariant&)", params);

}
Записан
aptypr
Гость
« Ответ #2 : Сентябрь 14, 2011, 14:59 »

Код:
    QVariant Encoding(20127);
 
Это откуда такое число взяли?
Записан
SeverusSnape
Гость
« Ответ #3 : Сентябрь 14, 2011, 15:24 »

msdn - отличный справочник
Записан
SeverusSnape
Гость
« Ответ #4 : Сентябрь 14, 2011, 15:25 »

Вот здесь расписаны все константы http://msdn.microsoft.com/en-us/library/aa170976(v=office.11).aspx
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Сентябрь 14, 2011, 15:27 »

msdn - отличный справочник
Ужасный справочник.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
aptypr
Гость
« Ответ #6 : Сентябрь 14, 2011, 15:54 »

Вот здесь расписаны все константы http://msdn.microsoft.com/en-us/library/aa170976(v=office.11).aspx
Ясно, спасибо за ссылку. Правда у меня всё ещё та же ошибка возникает
Код:
    QVariant fileName("C:\\path\\somewhere\\file.ext");
    QVariant confirmConversions(false);
    QVariant readOnly(true);
    QVariant passWordDocument;
    QVariant passwordTemplate("");
    QVariant revent(false);
    QVariant writePasswordDocument("");
    QVariant writePassWordTemplate("");
    QVariant format(0);
    QVariant encoding(1251);
    QList<QVariant> list;
    list<<fileName<<confirmConversions<<readOnly<<NULL<<passwordTemplate<<revent<<writePasswordDocument;
    list<<writePassWordTemplate<<format<<encoding;
    WordDocuments->querySubObject("Open(const QString&,const QString&,const QString&,const QString&,const QString&,const QString&,const QString&,const QString&,const QString&)",list);

Собстенно ошибка(word запускается, но пустое окно) -
QAxBase: Error calling IDispatch member Open: Type mismatch in parameter 8
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.134 секунд. Запросов: 23.