Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
22 октября 2018 г. 12:30

Чтение текста и добавление в массив

массив, текст

Здравствуйте.

Хочу сделать чтение доковских файлов разного размера и записывание их куда либо, скорее всего в массив и в файл.

Скажите пожалуйста, как правильно записать такой текстовый массив?


Виртуальный хостинг со скидкой 10 процентов
Виртуальный хостинг со скидкой 10 процентов
EVILEG предлагает надёжный хостинг со скидкой 10% на виртуальный хостинг и 5% на VPS
14

Мне кажется, что вопрос не совсем корректно поставлен. Вордовские файлы - это не только текст.

Можно о задаче подробнее? Что за файлы будут?



0

Текстовый файлы - это резюме. Планирую сделать их чтение, хранение, чтение из массива и поиск.


0

резюме подразумевает наличие вёрстки и т.д.?

Как бы целые огранизации разработчиков, типо разработчиков LibreOffice и OpenOffice, с немаленькими бюджетами и штатами специалистов, а также большим комьюнити вольных разработчиков, которые пытаются помогать развитию этих проектов, до сих пор не смогли сделать 100 процентную поддержку импорта доковских документов, а вы хотите это сделать в одиночку?

Мне кажется, что вы не осознаёте масштаб проблемы )))

Что именно хотите читать оттуда? Вся информация содержится в блоках вёрстки с кучей служебной информации, которую просто так не выдрать с документов типа *.doc, *.docx

0

Я бы начал изучать эту тему с вот этой ссылки - https://wiki.qt.io/Handling_Microsoft_Word_file_format

Тут совсем не много текста, но очень много информации.

Но я бы не взялся за такую работу - она, на мой взгляд, не реализуема. Резюме не стандартизованы, не говоря уже об оформлениях и прочем.

Дешевле посадить девочку, которая это будет копипастить.




0

Вот и я о том же )) овчинка выделки не стоит. Проще написать паука, который скачает все открытые резюме на хедхантере, или каком-нибудь ином ресурсе.

0

Спасибо за ссылку.

Мне нужна довольно простенькая  программка, поэтому справлюсь сам.

Для меня пока стоит вопрос с чтением.

Можно ли с помощью ActiveX записывать в QAxContainer и потом как то сохранять и читать этот контейнер?





0

Попробовал добавить

QT       += core gui qaxcontainer

Выдает ошибку неизвестного модуля.

Скажите пожалуйста, у меня не полная версия QT или нужно скачивать какую-то библиотеку?

0

В той ссылке на документацию, что вы привели, написано иначе


CONFIG += qaxcontainer
0

Спасибо. Не заметил. Как оказалось правильно теперь писать так.

QT       += core gui axcontainer

Но когда пишу так

 QAxObject   axObject("Word.Application");

выдает ошибку

D:\QTProject\ReaderResume\main.cpp:9: ошибка: 'QAxObject' was not declared in this scope

QAxObject   *documents = axObject.querySubObject("Documents");

Не знаете, как правильно прочитать доковский файл используя это?

0

Вот так оказывается можно читать doc  и  docx

QAxObject   wordApplication("Word.Application");
    QAxObject *documents = wordApplication.querySubObject("Documents");
    QAxObject *document = documents->querySubObject("Open(const QString&, bool)", "C:\\ForResume\\2.docx", true);
    QAxObject *words = document->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());
    }
    qDebug()<<textResult;
1

Вы - Молодец!

Там получается сплошной текст?

0

Нет, с пробелами и закодированными спец символами..

Забыл добавить строчку на закрытие файла

document->dynamicCall("Close (boolean)", false);

И еще беда, если в тексте картинка есть, то появляется всплывающие окно и нужно нажимать ок, не знаю как убрать...



0

К сожалению, тут придётся документацию на ActiveX зачитывать до дыр, как мне кажется (((((

0

Еще оказалось, что для адекватной работы нужно делать замену слэшей при запросе имени, иначе не работает

void MainWindow::on_AddResumeButton_clicked()  //Function and button Add resume
{
    QString setOpenResumeName=(QFileDialog::getOpenFileName(0, "Открыть резюме в формате ворд", "", "*.doc *.docx *.rtf"));//путь , вариант расширения "*.cpp *.h"    
qDebug()<<setOpenResumeName;
    setOpenResumeName.replace(QRegExp("[/]"), "\\"); //замена символов   
qDebug()<<setOpenResumeName;
    QAxObject   wordApplication("Word.Application");
    QAxObject *documents = wordApplication.querySubObject("Documents");
    QAxObject *document = documents->querySubObject("Open(const QString&, bool)", setOpenResumeName, true);
    QAxObject *words = document->querySubObject("Words");
    QString TextResume;
    int countWord = words->dynamicCall("Count()").toInt();
    for (int a = 1; a <= countWord; a++){
        TextResume.append(words->querySubObject("Item(int)", a)->dynamicCall("Text()").toString());
    }
    document->dynamicCall("Close (boolean)", false);
    TextResume.replace(QRegExp("[\r]"), "\r\n"); //замена символов
    qDebug()<<TextResume;
}
0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
N
23 марта 2019 г. 7:52
Nico03

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4
Y
22 марта 2019 г. 9:39
Yavlados

Qt - Тест 001. Сигналы и слоты

  • Результат:21баллов,
  • Очки рейтинга-10
ЭА
22 марта 2019 г. 5:02
Эвелина Алексеева

C++ - Тест 001. Первая программа и типы данных

  • Результат:53баллов,
  • Очки рейтинга-4
Последние комментарии
22 марта 2019 г. 12:32
Евгений Легоцкой

Ну может бибилотеки не те положили? У вас сборка для MinGW, а либы для MSVC.
ВН
22 марта 2019 г. 11:08
Волчонок Над-Пропастью

Из кьюта приложение не хочет запускаться, аварийно завершается, но каких-либо ошибок не выдаёт. Оно открывается, после нажатия "старт" зависает и завершается. Если не из кьюта запускать дебаг ...
21 марта 2019 г. 15:49
Евгений Легоцкой

серьезно? Эта ошибка 404 уже даже не относится к данному вопросу. В каких-то urls в вашем проекте. Вопросы, которые не относятся непосредственно к статье, задавайте, пожалуйста на...
АБ
21 марта 2019 г. 15:00
Артем Бел

а это где? сейчас ошибка в debag такая: Page not found (404)Request Method: GETRequest URL: http://amadowshop.site/accounts/profile/
21 марта 2019 г. 12:47
Евгений Легоцкой

не вижу здесь проблемы, поменяйте url для callback в приложения oauth в социальных сетях https://amadowshop.site/auth/verify/complete/facebook/
Сейчас обсуждают на форуме
m
22 марта 2019 г. 19:40
monevich

int main(int argc, char *argv[]){ QApplication a(argc, argv); MainWindow w; w.show(); if (argc==2) { w.openFile(argv[1]); } return a.exec();} Допустим...
22 марта 2019 г. 12:29
Дмитрий

Да, мьютекс добавил, но в том потоке, где сигнал вызывается.
ВН
22 марта 2019 г. 9:04
Волчонок Над-Пропастью

Да, на эту проблему! Зато у меня теперь новая, ругается на подключение QMediaPlayer, пишет, что не находит подобного файла или библиотеки. Пока не нашла как исправить, только вариант с переуст...
22 марта 2019 г. 8:58
Михаиллл

4) это , похоже, для создания видоизмененных страниц, для анимации. 3,5) добавить фвйл/qt/ui.qml
22 марта 2019 г. 8:04
Евгений Легоцкой

Привет. Если там std::vector , то наверное можно заранее подготовить вектор с необходимым количеством элементов и просто устанавливать значение по индексу элемента. Но в данном слу...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы