Читаем CSV...
Читаем CSV...
Это так - посмеятся...
Есть спецификация CSV и есть договоренность об том, что клиент будет поставлять данные в CSV -файлах.
У мелкомягких в Висуал Васике есть CSV-реадер.
Там, конечно, мелкомягкий вариант, но основную работу по чтению/нарезке и распаковке полей он делает.
Остальное уже можно подкрутить ручками...
Теперь основные проблемные моменты:
1. Вместо CSV-файла присылается Excel-файл.
Простенько и со вкусом - отредактировали в ехцеле, кликнули - отправить... ну а на нашей стороне надо разбираться - ексел то его открывает без проблем, а вот реадер - обламывается...
Починить на нашей стороне - можно, но довольно неприятно. Неприятность в основном в том, что получаются два разных формата одного документа и оба надо суппортить.
Не чиню - оператор запрашивает файл в правильном формате.
2. Количество запятых в заголовке не соответствует количеству запятых в данных.
Ну это понятное дело - тамошний прогер спецификацию на CSV в глаза не видел, но будет доказывать что его код работает правильно.
Починить тамошнего прогера - нереально. Реадер мелкомягких - работает, но количество возвращаемых полей не контролируется.
Так что на нашей стороне код адаптируется под чтение данных с разным количеством полей.
3. Второй заголовок в теле документа.
Выглядит так, что кто-то настраивал репорт и установил постраничный режим.
Вот так - по-странично - и выплевываются данные в файлик. С заголовками на каждой странице... но в сплошном документе,
Реадер мелкомягких вполне нормально читает второй заголовок... как строку данных.
Снова адаптируется код на нашей стороне.
4. Количество запятых в первом и последующем заголовках не совпадает.
Ну это такой пустячек... правда прогер клиента слегка подвисает от вопроса почему заголовки не совпадают, но это его не подвигает прочесть спецификацию.
Так же как и 3. - решается у нас по месту.
5. Пустые строки.
Обычно - в конце файла. Но может быть и в начеле, и в средине, Просто кто-то просматривал/правил файл и по случаю в пару-тройку раз нажал Ентер.
Не помню как реагирует мелкомягкий реадер - вроде возвращает строку с одним полем - но данных в любом случае там нет.
Опять - чинится у меня.
6. Куча строк без данных в документе.
Как это можно получить предстваляю плохо. Выглядит - нормально - строка с правильным - т.е. -1/+2 - количеством запятых.
Никаких данных между запятыми не наблюдается. Просто строка из запятых.
Ужас данной ситуации в том, что нашего оператора невозможно обучить распознаванию ситуации - в Екселе все выглядит прилично, никаких буковок на месте цифирек не имеется.
Но, как обычно, чинится на нашей стороне.
Можно, конечно и плакать над уровнем квалификации используемых прогеров, но... Я - не плачу, Я никогда не плачу, есть у меня другие интересы...
А вообще - интересует - Что еще можно сделать неправильно в экспорте данных в CSV-формате?
Я бы переписал реадер и позабыл об проблемах...