Написать конвертер из Word, Excel в .txt или .dbf
5691
10
Задача:
Есть файл в каком -то формате Word 97-2007, Excel 97-2007, OpenOffice, html.
Файлов будет ~10000 в год, источники разнообразны, поэтому разнообразие форматов обеспечено.
Все файлы содержат таблицы (возможно еще какое то бла бла, но интересны только таблицы).
Конвертер должен уметь выцеплять таблицу из исходника, определять в ней нужные столбцы, и заносить это в .txt c фиксированной длиной полей (или .dbf).

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

Задача разбора строки.
Реальный составитель исходника может также слить воедино данные, которые предполагалось иметь в разных столбцах. (Пример: адрес (район, н.п., улица, дом, квартира) могут быть слиты все поля, а могут только последние три или четыре - последние три поля не всегда могут быть; ФИО- тоже сливают вместе, тут проще, поделить по пробелу).

Могут ли уважаемые участники форума порекомендовать: способы написания продукта / место, где про это хорошо написано / готовый продукт / иные способы решения задачи.
Nikita1003
Есть сильные подозрения, что при заполненных как попало исходниках результат работы любого конвертера придется править руками. В конечном счете будет проще и, главное, дешевле посадить человека конвертить вручную. 30 файлов в день - не так много.

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

А оптимальный вариант, по-моему - стандартизировать заполнение исходников. Как так получается, что они в разных форматах и могут заполняться как попало?
Nikita1003
В такой постановке вопроса (из любой куче мусора нужно выделить что-то, хотя возможно оно на себя не похоже, а может его вообще нет) что-то вразумительное вряд-ли получится. Стандартизируйте формы, объяснив второй стороне что "прислать в своей форме" означает не прислать вообще.
Напишите клиентское приложение, которое будет в интерактивном режиме (типа мастер заполнения) будет на основе ввода формировать файл одного стандарта, например xml и высылать его.
Леопольд
Стандартизация ввода - замечательное и очевидное решение.
Однако непосредственные поставщики исходников для нас недоступны. Работа с ними ведется через посредника. Посредник слабо заинтересован в результате (перспективы по усилению интереса призрачны), но тем не менее готов сотрудничать при условии минимальных издережек. Т.е. отдать указание о предоставлении данных он готов (и это уже хорошо), но внедрить наш клиент или помочь наладить обратную связь с его подопечными - уже не готов. Они сбором своих данных не собираются, поэтому хранение данных никак не регламентировано, отсюда разнообразие форматов.
Короче, задача наша, мы и паримся.

Необходимость ручной работы при обработке этих файлов нам понятна. Хотелось бы ее все же по максимуму автоматизировать, что бы один человек мог обрабатывать хотя бы по 200 файлов в день. Т.е открывает файл, оценивает содержимое, ставит нужные галочки в конвертере, запускает конвертацию. (ну какая то минимальная проверка должна быть - чтобы числовые данные не оказались в чисто текстовом поле и наоборот)
Надо будет, посадим на обработку до пяти человек (данные сливаются три - четыре раза в год, каждый раз в течение 2х недель, и их надо за 3 недели забить в базу).
Полностью ручная обработка файлов нереальна - обьем велик.
Допустимо 2% некондиции.
Nikita1003
Напишите приложение и разошлите конечным заполняльщикам. Дабы приложение в интерактивном режиме спрашивало "то что нужно", формировало один файл одного стандартного формата и потом сей файл бы отсылался. То есть контроль правильности ввода идет при первичном заполнении формы (ну например как на веб-страницах проверяют совпадение пароля и подтверждения пароля), а уже проверенные данные отсылались.
Nikita1003
Я думаю что не получиться. Я в данной ситуации поступаю так. Самостоятельно (ручками) стандартизурую присланные данные. А затем уже загружаю. Но у меня и объем 10-20 таких документов в полугодие
Denfil
Для Офиса - написать макрос.
Кстати, и для HTML тоже прямо в Excel написать макрос и пусть всю кучу документов разбирает.
Вопрос только - насколько разные документы будут?
Nikita1003
Могут ли участники порекомендовать продукт или способ.

Да уж. Вы студент первого курса? Если так продолжайте учиться а не спрашивать, как и чем решить неопределённую задачу.
Достаточно простые макросы для Wordaб Excel и т.п. которые будут в интерактивном режиме преобразовывать входной поток в таблицы выхода, при этом в неопределенных местах спрашивать операторы как поступить с входными данными. Вот и все.

Учится думать и работать. :umnik:
kisnik
ННП с обратной стороны - тотже фокспро тянул, во всяком случае, из екселя без проблем
Nikita1003
Для разбора такого кол-ва мусора можно попробовать создать N-ое кол-во шаблонов.

Например: для поля "Адрес" написать все возможные варианты того как это выглядит у поставщиков информации и что с этим можно сделать.

Так как поставщики разные, то скорее всего у нгих всегда будут данные у каждого в своем формате... Так что можно разнести инфу еще и по поставщикам.

Но вот чем это писать, я я соглашусь с тем что лучше кого то нанять. Искуственного Интелекта у нас еще не придумали..... :миг:
maxxx
я думаю, что стандартизация ввода информации - есть единственно правильное решение. Дело в том что сами стандарты документов того же ворда от 97 до 07 сильно изменились за 10 лет. и писать универсальный конвертер - архисложная, долгая и неразумная задача.

ну а в качестве универсализации ввода можно использовать либо XML либо JSON - кому как нравиться...