Перейти к содержанию

Компьютерная Техника и программы


Рекомендуемые сообщения

Опубликовано

Я бы делал так:

 

Форма с кнопкой выбора файла с расширением doc

Если файл выбран - создаю объект - экземпляр приложения Ворд в фоновом режиме

открываю в нем выбранный файл

выполняю Сохранить как в формате *.txt

закрываю Ворд.

Получаю строку из содержимого текстовика

Подсчитываю количество уникальных слов

Удаляю текстовик

Предъявляю результат

 

Это то, что очень быстро без напряга, но это ехе с длл-ками.

Если заморочиться, то можно сделать макрос в самом ворде и ассоциировать с ним кнопку.

Но это нужно читать документацию.

 

Но мой способ не самый оптимальный из предложенных.

Я б передал много МБ, необходимых для автономного запуска. Это ехе и 4 длл-ки

 

Самое правильное решение - это использовать объектную модель самого Ворда. Ему видней, что у него слово.

Но, во-первых, нам даже не сказали, какой Офис стоит на той машине, во-вторых, задача все равно расплывчатая.

 

Например, я могу перебирать коллекцию абзацев (Paragraphs).

Но вдруг там есть таблицы, содержимое ячеек которых тоже нужно включать в подсчет.

Сохранить как тхт по идее вытянет из них эти слова, а при решении средствами Ворд уже нужно знать, обходить ли и коллекцию таблиц.

А вдруг, наоборот, таблицы в подсчет включать нельзя ? Тогда сохранить как тхт не подойдет и придется обходить коллекцию параграфов, формируя строку последовательным прибавлением содержимого каждого последующего. Это, если не средствами макроса Вард а из моей родной среды, то тоже ненапряжно и быстро. Но решение уступает альтернативно предложенным тем, что больше МБ передать

 

Опять же колонтитулы, подписи к рисункам. В постановке ничего не сказано.

 

Если нужна предельная точно подсчета, то я бы делал ставку на объектную модель Ворда, чтобы не упустить какую-то неочевидную деталь.

Я там теми функциональностями ворда и близко всеми не пользуюсь, так что при должном воображении можно текст попрятать в нем в уму непостижимый уровень вложенности в самые экзотические объекты.

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

 

Ворд предлагает в сатистике подсчет количества слов в документе. Вот знать бы, что с его точки зрения входит в этот подсчет, получить бы доступ к этому множеству, дальше уже его обработать как нам нужно.

 

Но х.з.

 

Но если текст в данной задачи - это то, что вытянет ворд при Файл-Сохранить как тхт, то это усложнение того не стоит.

  • Ответов 5.2 тыс
  • Создана
  • Последний ответ

Топ авторов темы

  • Outlawif

    641

  • andreyyy

    437

  • Cardopusher

    361

  • Faust

    329

Топ авторов темы

Опубликовано
Самое правильное решение - это использовать объектную модель самого Ворда
Так я так и делаю в последнем скрипте. Только без сохранений и прочих танцев с бубнами, в документе ворда есть коллекция words, которая хоть и в тупорылом виде, но хранит именно коллекцию всех слов в документе. Фильтруем знаки препинания и прочие символы регуляркой и выбираем уникальные встроенной функцией павершелла. Выводим результат в консоль и на всякий пожарный сохраняем уникльную коллекцию в текстовый файл.

 

Формы с кнопками это моветон )) Но можно конечно сделать, вообще не проблема. Вообще один exe файл могу сделать, это одним ключом при билде делается. И запустится без фреймверка.

Опубликовано
Формы с кнопками это моветон ))

 

та ладно.

Гораздо проще работать с каким-то интерфейсом, чем запускать файл с параметром.

 

А затраченное время + несколько минут.

Что ж в этом моветонного-то.

 

Насчет коллекции words шикардос значит. Я не помню по памяти такую коллекцию. А искать в документации - слишком ленивая жопа.

Интересно, что туда включает Ворд. К примеру, содержимое таблиц будет включено в подсчет

 

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

Отталкваться от того, что это стандартный общепринятый подход к подсчету слов в документе.

 

Если они тупо используют эту коллекцию, то твое решение отличное.

 

Опубликовано
что туда включает Ворд
Все что есть на странице, кроме хедеров страниц. Ну там где автоматически проставляется номер страницы и прочая чешуя. Содержимое странички полностью бьется на эти ворды. Таблицы, скрытые слова, какие-то вставки объектов, все что имеет текст в себе.
затраченное время + несколько минут
Скрипт, который я написал, гарантированно работает с любым виндовсом, где установлен павершелл и ворд любой версии. Если на компе есть ворд, который может открыть доку - скрипт сработает. При вызове ворда из своего приложения может быть тысяча и один баг, связанный с тем что ты не знаешь какая версия ворда установлена на машине. Ты собственно сам написал. Вот к примеру у меня на компе стоит офис 365, онлайновый который. Интероповская библиотека его тупо не видит - падает на попытке создать приложение ворд и все. А скрипт работает.

 

Можно конечно вызвать павершелл скрипт из приложения )) Но это просто лютое извращение. Особенно отлавливать аутпут потом.

 

ЗЫ Все можно. Вообще все можно. Можно открыть ворд без ворда. Но это не пара минут, это бесячая отладка тупорылого майкрософтовского @#$%$^%.

Опубликовано
Скрипт, который я написал, гарантированно работает с любым виндовсом, где установлен павершелл и ворд любой версии.

 

речь не про твой скрипт.

Я вообще.

Ты до этого предлагал запуск программы при условии, что программа лежит в том же каталоге, что и файл.

 

Ну чем хуже запустить откуда угодно и стандартным виндовым диалогом открытия файла показать программе файл ?

 

Твой скрипт крутой - тут базара нет.

 

Опубликовано
стандартным виндовым диалогом открытия файла
Ну если в этом смысле, то дело привычки просто. Мне с консольками быстрее и проще.

 

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

 

Опубликовано
Щас еще Котик скажет что док файл надо найти сначала поиском в гугле и скачать его на машину без инета. Вот тут я конечно призадумаюсь ))
0utlaw,

не. обычный скаченный готовый док файл.

задача сравнить объем вакабулара в двух иностранных книжках.

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

Опубликовано
стандартный инструментарий для работы с текстом у
у seo-шников

 

Опубликовано
в двух иностранных книжках
Ну вот, текст оказывается иностранный, а не русский...

 

Те, для кого это типовая задача, легко нагуглят в интернетах. Или напишут в консоли. Grep'нуть можно спокойно.

 

Шоб в ворде, да еще без инета - это все не похоже на стандартную задачу современности вообще в принципе.

Опубликовано
. но я все равно ничо не понял, что с тхт делать.

 

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

 

В примере со скриптом текстовик не нужен. Создаешь файл блокнотом (новый), копируешь через буфер в него содержимое, которое написал Кирилл, сохраняешь с любым именем. Переименовываешь, меняя расширение на ps1

 

запускаешь его с параметром - твой док-файл.

 

Например кладешь в одну директорию скрипт и док. Открываешь папку в Тотал Коммандере

ctr+Enter находясь на файле скрипта - он добавится в командную строку

следом ctr+Enter находясь на файле док - он добавляется командную строку после файла скрипта.

Жмешь Энтер.

 

А, ну да, в регулярное выражение Кирилл добавлял кирииллические символы.

Не подходит значит.

 

 

Создайте учетную запись или войдите, чтобы комментировать

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти
×
×
  • Создать...