Чтение и запись файлов DBF

Введение

DBF (DataBase File) — это устаревший формат файлов баз данных, первоначально представленный dBASE в начале 1980-х годов. Несмотря на возраст формата, файлы DBF по-прежнему широко используются во многих отраслях для хранения структурированных данных, особенно в бухгалтерии, ГИС и других специализированных приложениях. Aspose.Cells позволяет легко интегрировать эти устаревшие файлы в современные рабочие процессы электронных таблиц .NET.

Библиотека поддерживает как чтение, так и запись файлов DBF, предоставляя вам возможность:

  • Импортировать данные из существующих файлов DBF в объекты Workbook Aspose.Cells для дальнейшей обработки или преобразования в другие форматы.
  • Создавать новые файлы DBF с нуля или путём преобразования данных из других форматов электронных таблиц.
  • Сохранять определения полей, типы данных и структуры записей при передаче данных в формат DBF и обратно.

Файлы DBF также можно открывать непосредственно в Microsoft Excel и других приложениях для работы с электронными таблицами, что делает их удобным мостом между устаревшими системами и современными инструментами для работы с электронными таблицами.

Поддерживаемые версии DBF и функции

Aspose.Cells поддерживает следующие версии формата DBF:

  • dBASE III — оригинальный и наиболее широко поддерживаемый вариант формата DBF.
  • dBASE IV — расширенная версия, которая поддерживает дополнительные типы данных и поля большего размера.

Поддерживаемые функции

Библиотека обеспечивает комплексную поддержку следующих операций:

  • Чтение данных DBF в объект Workbook с сохранением всех записей и определений полей.
  • Запись данных рабочей книги обратно в формат DBF для экспорта в приложения, совместимые с dBASE.
  • Обработка общих типов данных, используемых в файлах DBF, включая символьные, числовые поля, поля дат и логические поля.
  • Сохранение определений полей, таких как имя поля, тип и длина, во время операций чтения/записи.

Ограничения и рекомендации

При работе с файлами DBF учитывайте следующие ограничения:

  • Максимальное количество полей в файле — 128.
  • Максимальный размер записи — 4000 байт.
  • Имена полей ограничены 10 символами, должны быть в верхнем регистре и не должны содержать пробелов.
  • Значения дат в файлах DBF хранятся в формате YYYYMMDD.
  • Кодировка символов может различаться в зависимости от исходного приложения (обычно Windows-1252 или OEM-кодировки).

Чтение файла DBF

Aspose.Cells упрощает загрузку данных из файла DBF в объект Workbook. Библиотека использует класс LoadOptions для указания исходного формата, обеспечивая правильную интерпретацию данных в процессе загрузки.

Чтение файла DBF с помощью Aspose.Cells

Чтобы прочитать файл DBF, необходимо создать экземпляр LoadOptions, установить его свойство LoadFormat в значение LoadFormat.Dbf и передать его в конструктор Workbook вместе с путём к файлу. После загрузки данные становятся доступными через коллекцию Worksheets, где вы можете перебирать ячейки, извлекать значения или обрабатывать данные по мере необходимости.

Следующий пример демонстрирует, как загрузить существующий файл DBF в Aspose.Cells, получить доступ к первому рабочему листу и прочитать значения ячеек.

using System;
using System.IO;
using System.Text;
using Aspose.Cells;

string dataDir = "Data/";
string filePath = Path.Combine(dataDir, "example.dbf");

LoadOptions loadOptions = new LoadOptions(LoadFormat.Dbf);

Workbook workbook = new Workbook(filePath, loadOptions);

Worksheet worksheet = workbook.Worksheets[0];

Cells cells = worksheet.Cells;

StringBuilder sb = new StringBuilder();

int maxRow = cells.MaxDataRow;
int maxCol = cells.MaxDataColumn;

for (int i = 0; i <= maxRow; i++)
{
    for (int j = 0; j <= maxCol; j++)
    {
        Cell cell = cells[i, j];
        string value = cell.StringValue;
        sb.Append("|").Append(value);
    }
    sb.Append("|").AppendLine();
}

Console.WriteLine(sb.ToString());

string outputPath = Path.Combine(dataDir, "output.xlsx");
workbook.Save(outputPath, SaveFormat.Xlsx);

Console.WriteLine("DBF file loaded successfully. Converted XLSX saved at: " + outputPath);

Запись файла DBF

Запись данных в файл DBF выполняется по той же схеме, что и сохранение в любом другом формате электронных таблиц с помощью Aspose.Cells. Вы создаёте или загружаете Workbook, заполняете рабочий лист данными, а затем вызываете метод Save, указывая SaveFormat.Dbf в качестве целевого формата.

Запись файла DBF с помощью Aspose.Cells

Чтобы создать файл DBF, выполните следующие шаги:

  1. Создайте новый экземпляр Workbook.
  2. Получите доступ к первому рабочему листу из коллекции Worksheets.
  3. Заполните рабочий лист данными, включая заголовки в первой строке и записи в последующих строках.
  4. Вызовите метод Workbook.Save, передав путь к файлу и SaveFormat.Dbf в качестве параметров.

Следующий пример демонстрирует, как создать новый файл DBF с нуля. Он заполняет рабочий лист примерами данных, содержащими различные типы данных (строки, числа и даты), чтобы проиллюстрировать, как обрабатываются типы полей при экспорте в формат DBF.

using System;
using System.IO;
using Aspose.Cells;

string outputDir = @"C:\Output\";
string filePath = Path.Combine(outputDir, "output.dbf");

if (!Directory.Exists(outputDir))
{
    Directory.CreateDirectory(outputDir);
}

Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets[0];
Cells cells = worksheet.Cells;

// Заголовки столбцов
cells[0, 0].PutValue("ID");
cells[0, 1].PutValue("Name");
cells[0, 2].PutValue("Department");
cells[0, 3].PutValue("Salary");
cells[0, 4].PutValue("HireDate");

// Строка данных 1
cells[1, 0].PutValue(101);
cells[1, 1].PutValue("John Smith");
cells[1, 2].PutValue("Engineering");
cells[1, 3].PutValue(75000.50);
cells[1, 4].PutValue(new DateTime(2020, 3, 15));

// Строка данных 2
cells[2, 0].PutValue(102);
cells[2, 1].PutValue("Jane Doe");
cells[2, 2].PutValue("Marketing");
cells[2, 3].PutValue(68000.75);
cells[2, 4].PutValue(new DateTime(2019, 7, 22));

// Строка данных 3
cells[3, 0].PutValue(103);
cells[3, 1].PutValue("Bob Johnson");
cells[3, 2].PutValue("Finance");
cells[3, 3].PutValue(82000.00);
cells[3, 4].PutValue(new DateTime(2021, 1, 10));

// Строка данных 4
cells[4, 0].PutValue(104);
cells[4, 1].PutValue("Alice Brown");
cells[4, 2].PutValue("Human Resources");
cells[4, 3].PutValue(71000.25);
cells[4, 4].PutValue(new DateTime(2018, 11, 5));

// Строка данных 5
cells[5, 0].PutValue(105);
cells[5, 1].PutValue("Charlie Wilson");
cells[5, 2].PutValue("Operations");
cells[5, 3].PutValue(79500.80);
cells[5, 4].PutValue(new DateTime(2022, 5, 30));

// Установка ширины столбцов для лучшей читаемости
worksheet.Cells.SetColumnWidth(0, 8);
worksheet.Cells.SetColumnWidth(1, 20);
worksheet.Cells.SetColumnWidth(2, 20);
worksheet.Cells.SetColumnWidth(3, 12);
worksheet.Cells.SetColumnWidth(4, 14);

workbook.Save(filePath, SaveFormat.Dbf);

Рекомендации по типам данных и форматированию

При передаче данных между Aspose.Cells и форматом DBF важно понимать, как типы данных сопоставляются между двумя системами, чтобы обеспечить целостность данных.

Типы ячеек и типы полей DBF

Значения ячеек Aspose.Cells автоматически преобразуются в соответствующие типы полей DBF при сохранении:

  • Строки сопоставляются с символьными (C) полями.
  • Числовые значения (целые числа и десятичные дроби) сопоставляются с числовыми (N) полями.
  • Значения дат сопоставляются с полями даты (D) в формате YYYYMMDD.
  • Логические значения сопоставляются с логическими (L) полями.

Кодировка

Файлы DBF могут использовать различные кодировки символов в зависимости от приложения, в котором они были созданы. Aspose.Cells прозрачно обрабатывает кодировку в большинстве случаев, но если у вас возникают проблемы с отображением символов, может потребоваться проверить кодировку исходного файла.

Правила для имён полей

Имена полей DBF должны соответствовать следующим правилам:

  • Максимальная длина — 10 символов.
  • Должны начинаться с буквы.
  • Не должны содержать пробелов или специальных символов.
  • Сохраняются в верхнем регистре независимо от регистра, использованного при вводе.

Проверка результата

После записи файла DBF вы можете проверить результат, открыв его в Microsoft Excel или любом приложении, совместимом с dBASE. Данные должны отображаться в табличном виде с именами полей в качестве заголовков столбцов и записями, заполненными в соответствии с предоставленными вами данными.

Преобразование между DBF и другими форматами

Одним из наиболее практичных вариантов использования чтения и записи файлов DBF с помощью Aspose.Cells является преобразование данных между форматом DBF и современными форматами электронных таблиц, такими как XLSX, XLS или CSV. Поскольку Aspose.Cells поддерживает широкий спектр форматов, вы можете легко загрузить файл DBF и сохранить его в любом другом поддерживаемом формате или наоборот.

Например, вы можете прочитать файл DBF, применить форматирование или вычисления с помощью API Aspose.Cells, а затем сохранить результат в виде файла XLSX для распространения среди пользователей, работающих с современными приложениями для работы с электронными таблицами. И наоборот, вы можете взять данные из файла XLSX или CSV и экспортировать их в формат DBF для интеграции с устаревшими системами.