CsvDocument/ru

From Free Pascal wiki
Revision as of 09:56, 27 February 2011 by Vvzh (talk | contribs) (* added category)
Jump to navigationJump to search

English (en) русский (ru)

О библиотеке

Библиотека CsvDocument - это модуль Free Pascal, содержащий набор классов для работы с файлами в формате CSV. Библиотека была разработана для обмена табличными данными с OpenOffice Calc / MS Office Excel с использованием CSV в качестве промежуточного формата.

Возможности:

  • Последовательное чтение CSV файла (поле за полем) с помощью класса TCSVParser. Не очень удобно, зато позволяет экономить память при обработке больших файлов.
  • Чтение/запись произвольного поля с помощью класса TCsvDocument. Данный подход основан на объектной модели документа, поэтому требует больше памяти.
  • Реализация CSV совместима с реализацией в OpenOffice Calc / MS Office Excel, т.е. CSV-файлы, сохранённые из Calc/Excel, можно читать с помощью CsvDocument, и наоборот.
  • Поддерживается как кодировка UTF-8, так и кодовые страницы windows-xxx. Библиотека использует тип string для всех строковых операций и сама не осуществляет каких-либо преобразований. Следует помнить, что Excel не поддерживает CSV-файлы в кодировке UTF-8.
  • Поддержка переводов строки внутри полей CSV. В том числе из-за этого пришлось изобретать велосипед. Следует помнить, что из пары OO Calc / MS Excel переводы строки в полях поддерживает только Calc.
  • Доступ к полям по аналогии с компонентом StringGrid: TCsvDocument.Cells[ACol, ARow]. Доступ к полям безопасен, т.е. при чтении несуществующего поля возвращается пустая строка, а не вызывается исключение типа "Index out of bounds". Для того, чтобы отличить пустое поле от несуществующего, можно воспользоваться методами HasRow/HasCell и свойствами RowCount/ColCount.
  • Нет искусственных ограничений на длину поля, число строк/столбцов, и т.д. Естественные ограничения сохраняются: производительность системы, объём свободной памяти, ограничение в 2 Гб на длину строки типа string, и ограничение на максимальное значение 32-разрядного знакового целого типа.
  • Для версии 0.3 и выше - соответствие неофициальной спецификации формата CSV http://www.creativyst.com/Doc/Articles/CSV/CSV01.htm

Автор

Владимир Жиров

Лицензия

modified LGPL (та же, что у FPC RTL и Lazarus LCL).

Зависимости

Библиотека представляет собой один файл с исходным кодом и зависит только от FPC RTL и FCL.

Изменения

Версия 0.1 (22.01.2010)

  • первый выпуск

Версия 0.2 (31.05.2010)

  • исправлено некорректное преобразование символов конца строки
  • исправлена компиляция со включенными проверками диапазона (Range checks)
  • стала доступна функция QuoteCSVString, упрощающая генерацию CSV без использования класса TCsvDocument
  • выполнена небольшая чистка кода

Версия 0.3 (14.01.2011)

  • изменён API CsvParser: callback-методы заменены на пару методов ResetParser/ParseNextCell, чтобы библиотеку можно было использовать в функциональных программах (без объявления объектов). Пример использования нового API можно посмотреть в TCSVDocument.LoadFromStream.
  • изменён API CsvDocument: метод TrimEmptyCells переименован в RemoveTrailingEmptyCells
  • поддерживается удаление пробельных символов в начале и конце поля. Добавлено новое свойство TrimWhitespace. Внимание: TrimWhitespace по умолчанию включено.
  • поддерживается поиск по строке/столбцу с помощью методов IndexOfRow(AString, ACol) / IndexOfCol(AString, ARow)
  • улучшена производительность
  • выполнена чистка кода
  • добавлен набор простых тестов

Статус

Beta

Загрузка

Последнюю версию можно загрузить с lazarus-ccr:

http://sourceforge.net/projects/lazarus-ccr/files/CsvDocument/CsvDocument%200.3/csvdocument-0.3.zip/download

Архив содержит саму библиотеку и демонстрационное приложение.

Установка и использование

Достаточно добавить модуль CsvDocument в секцию uses. Если необходимо, можно установить путь к модулю в свойствах проекта.

Обратная связь

Просьба отправлять сообщения об ошибках и патчи по адресу, указанному в исходном коде библиотеки.