Задача: Сохранить файл с данными в формате dbf.
Есть разные способы решения данной задачи. Очень часто люди используют пакет MS Office. Excel или Access умеют работать с данным форматом.
Это несколько суровый способ:
1) требует наличия онных на машине у пользователя.
2) COM - со всем вытекающим гемором.
В принципе, в коорпоративной среде пункт 1 не проблема. Пункт 2, если по десять раз в день пользователям не переустанавливают офис - в целом, можно смириться с тупыми глюками, которые похоже и не собираются фиксить, а также необходимостью вызывать методы с 20-ю параметрами, половина из которых ни на что не влияет, и оставлена Майкрософтом для обратной совместимости.
Так как мы в своем приложении используем Excel для определенных целей, идея использовать Excel для экспорта в dbf показалась мне заманчивой, тем более, что он поддерживает все версии формата.
Какого же было мое разочарование, когда выяснилось, что по причинам судовой тягомотины Майкрософт удалила возможность сохранять файлы dbf в MS Excel 2007. Читать он умеет, а вот сохранять фиг. Учитывая, что у доброй половины пользователей именно Excel 2007 - делать под 2003, а потом доказывать, что он должен обязательно быть у пользователя, как то не хочеться.
И тут на помощь приходит гугл. Утилит и библиотек, которые бы могли конвертировать csv в dbf не меряно, но большинство из них стоит примерно по 20$.
Единственное бесплатное и вроде бы работающее решение было найдено на соурсфордже
Экспорт осуществляется в dbf 3. По умолчанию файл сохраняется в кодировке ASCII. Имея исходники, нужно поменять код в двух местах, чтобы экспортировать в любой кодировке.
P.S. Если сгенерированный мной сегодня файл, завтра не получиться загрузить в банковскую АБС - будет не хорошо. Верим в лучшее
3 комментария:
Приветствую,Андрей.Нашёл в твоём блоге, что ты использовал библиотеку dbfexporter,где упомянул,что для выгрузки не в ASCII,а в другой кодировке, необходимо поменять код в 2-х местах.Мне нужна кириллица,а выгружаются вопросики:((Подскажи пожалуйста,что для этого надо поменять в коде. (skype: sedan_skype) Буду очень благодарен за помощь
Да за день самому написать свой dbfexporter можно, но лень, как известно, двигатель прогресса...
Ну разве что урезанную версию, не делать там всякие Memo и Picture - то может быть, если день будет удачным:)
Отправить комментарий