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

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

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

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

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

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


14

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

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



0

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


0

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

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

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

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

Для Django рекомендую VDS-хостинг TIMEWEB

0

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

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

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

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




0

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

Для Django рекомендую VDS-хостинг TIMEWEB

0

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

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

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

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





0

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

QT       += core gui qaxcontainer

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

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

0

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


CONFIG += qaxcontainer

Для Django рекомендую VDS-хостинг TIMEWEB

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

Вы - Молодец!

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

Для Django рекомендую VDS-хостинг TIMEWEB

0

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

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

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

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



0

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

Для Django рекомендую VDS-хостинг TIMEWEB

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

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
16 ноября 2018 г. 19:09
Илья Завьялов

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

  • Результат:31баллов,
  • Очки рейтинга-10
16 ноября 2018 г. 12:49
Ирина Минигузина

C++ - Тест 003. Условия и циклы

  • Результат:0баллов,
  • Очки рейтинга-10
16 ноября 2018 г. 8:55
Vitaliy

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

  • Результат:52баллов,
  • Очки рейтинга-4
Последние комментарии
16 ноября 2018 г. 6:50
Евгений Легоцкой

Добрый день! шаблон не находит, или шаблон неправильно прописали, или тег шаблона неправильно написан, иных выводов сделать не могу, из того, что вы написали. трейсбек нужно смотреть. Со...
16 ноября 2018 г. 6:48
Евгений Легоцкой

пройтись циклом по всем виджетам в обратном порядке for (int i = ui->vertialLayout->count() - 1; i >= 0; --i){ QWidget* w = ui->verticalLyout->itemAt(i)->widget();...
15 ноября 2018 г. 21:35
chunk

Доброго времени суток Евгений. Не подскажете что я делаю не так? Получаю ошибку такого характера: Reverse for 'add_comment' with arguments '('',)' not found. 1 pattern(s) tried: ...
15 ноября 2018 г. 15:35
Михаиллл

Спасибо. Похоже где то описку сделал, поэтому не работало. Я добавил на verticalLayout много виджитов. А можно ли их как то быстро и просто удалить?
15 ноября 2018 г. 14:55
Евгений Легоцкой

verticalLayout - это, по-моему предположению, должен быть у вас объект класса QVBoxLayout, который наследован от QBoxLayout. Поэтому открываете документацию на QVBoxLayout ...
Сейчас обсуждают на форуме
17 ноября 2018 г. 23:20
Евгений Легоцкой

Три года назад я подключал ffmpeg в проект на Qt/С++ на первой работе. И кодирование декодирование удалось запустить. Подключал как библиотеку. Думаю, что в зависимости от проекта мо...
17 ноября 2018 г. 14:13
Чарльз Грин

Я сейчас занимаюсь мультимедией, это аудио и видео, программы для концертов и т. д. Бибилиотека Qt очень помогает, она надежная, а надежность в моих приложениях очень важный фактор чтоб не пол...
16 ноября 2018 г. 16:28
Евгений Легоцкой

Добрый день! Спасибо, что воспользовались именно форумом. Заниматься курсовыми работами чьими-то ни было у меня времени нет, у самого полторы работы. Но что-то подсказать на фо...
16 ноября 2018 г. 9:52
Евгений Легоцкой

Отладчик!!!! Версия комплекта MSVC 2015 + компилятор 14.0!!!!
Присоединяйтесь к нам в социальных сетях

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