Привет.
Хочу написать более менее грамотный алгоритм проверки форматно-логического контроля для excel-таблиц. Входные данные: таблицы excel со строго установленным шаблоном, которые присылают пользователи Задача: получить читаемый файл, который с большой долей вероятности можно распарсить и положить в БД Нужно:
проверить и изменить кодировку;
проверить орфографию;
убрать нечитаемые символы;
заменить табуляцию на пробелы;
два и более пробела подряд заменить на один и т.д.
Подскажите, встречался ли вам в теории или практике подобный алгоритм проверки, который из "плохих" файлов делает форматированные/читаемые?
Подобные вещи делал на VBA, ничего сложного не вижу. Это простой replace данных в ячейках на соответствующие (это про лишние пробелы, табуляцию, нечитаемые символы) - нужно просто справочники насоздавать с пониманием, что на что менять.
Пользователи постоянно будут придумывать какие-то новые косяки, но это всё будет выявляться со временем и исправляться в новых справочниках.
2zlukov, данные - нормативные акты, выдержки из законов, т.е. использоваться будет в 99% случаев (есть ссылки на адреса в интернете):
кириллица обоих регистров
. , : ; " «» № / ?
Вот эти пункты:
-проверить и изменить кодировку;
-проверить орфографию;
-убрать нечитаемые символы;
нужно очень детально расписать с примерами. Потому что сложность решения может меняться на порядки буквально в зависимости от 1-2 слов в этом задании.
Что такое проверить орфографию? Я - не знаю. Где достаточное условие проверки? Неясно.
Кодировки. Надеюсь речь не идет о симметричном шифровании. Но базовых кодировок с кирллицей
всего 4 (cp866/1251/Unicode16/utf8) и обычно задача сводится к проверке что текст статистически похож на кириллицу.
Возьмите готовые надстройки — Plex Excel, Asap Utilities Excel (у Asap даже есть бесплатная версия для Home & Students, русский язык тоже есть) и заверните нужные вам функции оттуда в новый мастер-макрос. Отлаживать проще будет, кмк.
И да, на больших файлах в тысячи строк могут быть тормоза.
И да, на больших файлах в тысячи строк могут быть тормоза.
Антон Киселёв, если сначала считывать все значения с листа в массив, потом в массиве обрабатывать, а уже чистый результат выгружать обратно на лист - должно быть довольно быстро даже на тысячах строк. Главное - не обращаться в каждой строке к очередной ячейке листа, это сжирает львиную долю времени.
Можно погуглить "массивы в VBA". Крайне полезно для тех, кто нечасто пишет макросы
А зачем эксель?
Проблема в том что вам все равно нужно будет как то его обработать.
Создайте веб приложение и пусть в нем вбивают, все автоматом ляжет в бд
Anton, тогда снова приходим к жестко зафиксированным формам.
Возможно на вашей стороне приложение которое парсит эксель и выплевывает результат в базу.
Эксель крут, я знаю, но мне как C# перу проще его отпарсить и вывести результат куда то