Что решить заранее

Структура DBF задаётся один раз, при создании файла. До этого стоит определиться с тремя вещами:

  • имена полей: латиница и цифры, не длиннее 10 знаков, по справке Visual FoxPro;
  • тип и ширина каждого поля: текст с шириной, число с шириной и знаками после запятой, дата, логическое. Подробнее — в разделе «Типы полей»;
  • кодировка: та, которую ждёт программа, где таблицу будут открывать. Для русского текста это DOS (cp866) или Windows (cp1251).

На нашем сайте

Если данные уже лежат в таблице Excel, CSV, JSON, дампе SQL или файле XML, DBF собирается из них в конвертере:

  1. Откройте страницу под ваш формат: CSV, Excel, JSON, SQL или XML.
  2. Перетащите файл в окно. Страница покажет поля будущей таблицы: имя, тип и ширину.
  3. Выберите кодировку DBF и нажмите «Собрать DBF».

Типы полей страница определяет по данным: столбец из одних чисел станет числовым, из дат — датовым. Русские имена столбцов переводятся транслитом и укорачиваются до 10 знаков. Текст длиннее 254 знаков обрезается, и об этом страница говорит до сборки.

В LibreOffice Calc

  1. Подготовьте данные на одном листе: в DBF сохраняется только текущий лист.
  2. Выберите «Файл → Сохранить как» и формат dBASE.

Формулы и оформление при сохранении пропадают, по справке LibreOffice. Если таблица открыта из готового DBF, первую строку не меняйте и не удаляйте: в ней лежат сведения, которые нужны dBASE.

В Python

Библиотека dbf Итана Фурмана читает и пишет таблицы dBase, FoxPro и Visual FoxPro, по странице пакета на PyPI. Ставится командой pip install dbf.

import datetime
import dbf

table = dbf.Table(
    'sklad.dbf',
    'kod C(8); naim C(40); cena N(10,2); data D; est L',
    codepage='cp866',
)
table.open(dbf.READ_WRITE)
table.append(('T-001', 'Сверло по металлу 6 мм', 189.50,
              datetime.date(2026, 2, 14), True))
table.close()

Поля в описании идут через точку с запятой: имя, буква типа и ширина в скобках. Параметр codepage задаёт кодировку: cp866 для DOS, cp1251 для Windows. Пример проверен на версии 0.99.11.

В PHP

Для DBF в PHP есть расширение dbase. С версии PHP 5.3.0 оно не входит в поставку и ставится из PECL, по руководству PHP. Таблицу создаёт функция dbase_create: ей передают путь к файлу и список полей.

<?php
$def = array(
  array("date",     "D"),
  array("name",     "C",  50),
  array("age",      "N",   3, 0),
  array("email",    "C", 128),
  array("ismember", "L")
);

if (!dbase_create('/tmp/test.dbf', $def)) {
  echo "Error, can't create the database\n";
}

Пример взят из описания dbase_create. Имена полей там ограничены 10 знаками, поля memo и индексы расширение не поддерживает.

В 1С

В платформе 1С:Предприятие с таблицами DBF работает объект XBase. Он создаёт базу произвольной структуры, индексы и индексный файл, по описанию платформы на сайте 1С. Структуру можно задать только у новой базы, созданной этим объектом.

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

Откройте готовый файл на странице просмотра DBF: там видны записи и поля с типом и шириной. Если вместо русских букв набор знаков, переключите кодировку в списке. Та, при которой текст читается, и нужна программе, где таблицу будут открывать.

Нашли ошибку?