[Решено]QAxObject чтение файлов



  • Здравсвуйте, уважаемые форумчане.

    Есть проблема - точно не представляю как прочесть файл разрешения .doc, .docx с помощью QAxObject.
    Сразу оговорюсь - много лазил в сети и даже писал на этот же форум в англоязычный раздел. "писал на этот же форум в англоязычный раздел":http://qt-project.org/forums/viewthread/15526/#79321http://qt-project.org/forums/viewthread/15526/#79321

    Про открытие и вставку текста в файл я примерно понял - выше это подробно описано. Однако процесс чтения текста (желательно без разметки) остаётся тайной, покрытой мраком. Документация, сгенерированная тем же QAxObject тоже не прояснила ситуацию.

    Помогите, пожалуйста.



  • Привет.
    Уже наверно догадался после англо-форума, что все дело тут в Visual Basic.
    methods, properties, events все оттуда. если чего нужно сделать с текстом, файлом или самим Вордом почитай справку именно по Visual Basic.
    Итак чтение.
    как мне кажется (может ошибочно) самый простой способ чтение по словам:
    читать будем в QTextEdit

    @
    QAxObject *docA = word->querySubObject("ActiveDocument"); //в продолжение анго-поста
    QAxObject *words = docA->querySubObject("Words");
    QString textResult; //будущий результат
    int countWord = words->dynamicCall("Count()").toInt(); //кол-во слов в тексте
    //на самом деле он обманывает, считает зараза с пробелами :(
    for (int a = 1; a <= countWord; a++){
    textResult.append(words->querySubObject("Item(int)", a)->dynamicCall("Text()").toString());
    }
    ui->textEdit->setText(textResult);
    @

    В помощь -посоветовал- порекомендовал бы книгу В.Корнякова "Программирование документов и приложений MS Office в Delphi". для с++ похожего не находил.



  • Так, вроде работает. Осталась одна загвоздка. При таком чтении файла, конец строки обозначается странным символом. Я не знаю как указать программе на конец строки.

    Задача следующая:
    @
    for (int a = 1; a <= countWord; a++)
    textResult.append(words->querySubObject("Item(int)", a)->dynamicCall("Text()").toString());

    QStringList testList = textResult.split("\n");
    @

    То есть я хочу разделить получившуюся строку на элементы массива, но символне распознается. Можно как-то определить конец строки средствами Visual Basic? Или как обозначить этот символ, чтобы Qt могла его воспринять?



  • Нашёл! Всем на будущее: символ конца строки ( или, как он называется в word "разрыв строки") это "\v". Просто ориентируемся на него, вместо "\n".

    Всё, проблема решена, топик можно закрывать. Всем большое спасибо! =)


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.