Russian Qt Forum

Qt => ActiveX => Тема начата: aptypr от Сентябрь 14, 2011, 13:16



Название: выбор кодировки открытия файла в word
Отправлено: 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 указывать кодировку открываемого файла, если да, то подскажите, как это правильно сделать.
Заранее благодарю.


Название: Re: выбор кодировки открытия файла в word
Отправлено: SeverusSnape от Сентябрь 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);

}


Название: Re: выбор кодировки открытия файла в word
Отправлено: aptypr от Сентябрь 14, 2011, 14:59
Код:
    QVariant Encoding(20127);
 
Это откуда такое число взяли?


Название: Re: выбор кодировки открытия файла в word
Отправлено: SeverusSnape от Сентябрь 14, 2011, 15:24
msdn - отличный справочник


Название: Re: выбор кодировки открытия файла в word
Отправлено: SeverusSnape от Сентябрь 14, 2011, 15:25
Вот здесь расписаны все константы http://msdn.microsoft.com/en-us/library/aa170976(v=office.11).aspx


Название: Re: выбор кодировки открытия файла в word
Отправлено: Пантер от Сентябрь 14, 2011, 15:27
msdn - отличный справочник
Ужасный справочник.


Название: Re: выбор кодировки открытия файла в word
Отправлено: aptypr от Сентябрь 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