Конвертирование данных из Microsoft Excel в формат DBF. Полное описание решения

dBASE - одна из самых старых систем управления базами данных, и формат файла dBASE (DBF) применялся долгое время. Microsoft Access поддерживает экспорт данных в такие форматы файлов dBASE: dBASE III, dBASE IV, dBASE 5 и dBASE 7.

Обратите внимание на то, что поддержка dBASE имеет указанные ниже требования.

    Подписка на Office 365 Если вы являетесь подписчиком Office 365, убедитесь, что у вас установлена последняя версия Office. Если вы являетесь ИТ-специалистом, управляющим процессом обновления Office 365, посетите страницу выпуск каналов, чтобы узнать, какие обновления предоставляются в каждом канале.

    Office 2016 Установите следующие обновления в указанном порядке: 2 мая 2017 г., обновление для Office 2016 (кб3115501) и Май 2, 2017, Update для Access 2016 (кб3178700) .

    Выпуски Office 2016 "нажми и работай" Обновления применяются автоматически.

Экспорт данных в файл dBASE

В результате будет создан файл dBASE в указанном расположении и формате.

Access 2013 не поддерживает формат dBASE

Экспорт в формат dBASE не поддерживается в Access 2013. Для работы с файлами dBASE попробуйте обновить подписку на Office 365. Экспорт в формат dBASE доступен в версиях Access для подписки на Office 365.

  • Tutorial

В этой статье я расскажу как загрузить много огромных dbf файлов, состоящих из миллионов записей в вашу базу данных на ms sql сервере за приемлемое время.

Задача на первый взгляд тривиальна. Можно использовать мастер в sql management studio или функцию OPENROWSET через запрос.

Но первый вариант после нескольких попыток отпал из за разных глюков и необходимости загрузки множества файлов в одну таблицу (около 100 файлов). К тому же при продолжительной загрузке вылетала ошибка.

Второй вариант тоже не подошел из за различной разрядности драйверов и разрядности сервера.

Так как файл просто огромный, то было решено читать его через поток и записывать в базу. Далее после прочтения строки в файле надо эту строку записать в табличку. Первое что пришло на ум это использовать insert, но запись в этом случае заняла бы слишком много время.

И тут я вспомнил про другой механизм записи через SqlBulkCopy, который позволяет заливать огромное число записей без запросов insert.
На деле это использование класса SqlBulkCopy, для осуществления записи через который надо реализовать один лишь интерфейс IDataReader.

Итак начнем с реализации интерфейса public class BDFBulkReader: IDataReader

Начнем с функции, которая возвращает значение текущей записи:
public object GetValue(int i) { return R]; }
Обращу ваше внимание на то что поля в файле и поля в таблице могут быть в разном порядке. А по индексу хотелось бы получать значение для соответствующего поля таблицы. Поэтому я использовал дополнительно словарь FieldIndex, где сопоставление имен полей номеру в таблице sql. По номеру берется имя поля, по имени из словаря R берется значение из прочитанной строки dbf файла. В итоге для n го индекса в бд GetValue вернет соответствующее значение.
Dictionary R = new Dictionary(); Dictionary FieldIndex = new Dictionary();

FieldIndex будем передавать уже заполненный для таблицы, а R будет заполнять при вызове самими reader"ом функции Read, которую в дальнейшем тоже реализуем.

Итак, конструктор:

System.IO.FileStream FS; byte buffer; int _FieldCount; int FieldsLength; System.Globalization.DateTimeFormatInfo dfi = new System.Globalization.CultureInfo("en-US", false).DateTimeFormat; System.Globalization.NumberFormatInfo nfi = new System.Globalization.CultureInfo("en-US", false).NumberFormat; string FieldName; string FieldType; byte FieldSize; byte FieldDigs; int RowsCount; int ReadedRow = 0; Dictionary R = new Dictionary(); Dictionary FieldIndex = new Dictionary(); public BDFBulkReader(string FileName, Dictionary FieldIndex) { FS = new System.IO.FileStream(FileName, System.IO.FileMode.Open); buffer = new byte; FS.Position = 4; FS.Read(buffer, 0, buffer.Length); RowsCount = buffer + (buffer * 0x100) + (buffer * 0x10000) + (buffer * 0x1000000); buffer = new byte; FS.Position = 8; FS.Read(buffer, 0, buffer.Length); _FieldCount = (((buffer + (buffer * 0x100)) - 1) / 32) - 1; FieldName = new string[_FieldCount]; FieldType = new string[_FieldCount]; FieldSize = new byte[_FieldCount]; FieldDigs = new byte[_FieldCount]; buffer = new byte; FS.Position = 32; FS.Read(buffer, 0, buffer.Length); FieldsLength = 0; for (int i = 0; i < _FieldCount; i++) { FieldName[i] = System.Text.Encoding.Default.GetString(buffer, i * 32, 10).TrimEnd(new char { (char)0x00 }); FieldType[i] = "" + (char)buffer; FieldSize[i] = buffer; FieldDigs[i] = buffer; FieldsLength = FieldsLength + FieldSize[i]; } FS.ReadByte(); this.FieldIndex = FieldIndex; }

Его задачи это открыть файл, определить имена полей, их число и их типы. Второй параметр конструктора, как я писал выше, это словарь соответствий, чтобы, например, по первому номеру поля мы гарантированно получили нужное поле из файла.

Теперь перейдем к реализации bool Read(). Она вернет true в случае если строка успешно прочитана. И false в случае если строка не была прочитана и в то же время был достигнут конец данных.

Public bool Read() { if (ReadedRow >= RowsCount) return false; R.Clear(); buffer = new byte; FS.ReadByte(); FS.Read(buffer, 0, buffer.Length); int Index = 0; for (int i = 0; i < FieldCount; i++) { string l = System.Text.Encoding.GetEncoding(866).GetString(buffer, Index, FieldSize[i]).TrimEnd(new char { (char)0x00 }).TrimEnd(new char { (char)0x20 }); Index = Index + FieldSize[i]; object Tr; if (l.Trim() != "") { switch (FieldType[i]) { case "L": Tr = l == "T" ? true: false; break; case "D": Tr = DateTime.ParseExact(l, "yyyyMMdd", dfi); break; case "N": { if (FieldDigs[i] == 0) Tr = int.Parse(l, nfi); else Tr = decimal.Parse(l, nfi); break; } case "F": Tr = double.Parse(l, nfi); break; default: Tr = l; break; } } else { Tr = DBNull.Value; } R.Add(FieldName[i], Tr); } ReadedRow++; return true; }

Еще раз напомню, что после ее вызова прочитанная строка запишется в словарь R, для последующего чтения reader"ом.
Итак, осталось реализовать, метод возвращающий число полей:

Public int FieldCount { get { return _FieldCount; } }

И заглушки для интерфейса:

Public void Dispose() { FS.Close(); } public int Depth { get { return -1; } } public bool IsClosed { get { return false; } } public Object this { get { return new object(); } } public Object this { get { return new object(); } } public int RecordsAffected { get { return -1; } } public void Close() { } public bool NextResult() { return true; } public bool IsDBNull(int i) { return false; } public string GetString(int i) { return ""; } public DataTable GetSchemaTable() { return null; } public int GetOrdinal(string name) { return -1; } public string GetName(int i) { return ""; } public long GetInt64(int i) { return -1; } public int GetInt32(int i) { return -1; } public short GetInt16(int i) { return -1; } public Guid GetGuid(int i) { return new Guid(); } public float GetFloat(int i) { return -1; } public Type GetFieldType(int i) { return typeof(string); } public double GetDouble(int i) { return -1; } public decimal GetDecimal(int i) { return -1; } public DateTime GetDateTime(int i) { return new DateTime(); } public string GetDataTypeName(int i) { return ""; } public IDataReader GetData(int i) { return this; } public long GetChars(int i, long fieldoffset, char buffer, int bufferoffset, int length) { return -1; } public char GetChar(int i) { return " "; } public long GetBytes(int i, long fieldOffset, byte buffer, int bufferoffset, int length) { return -1; } public byte GetByte(int i) { return 0x00; } public bool GetBoolean(int i) { return false; } public int GetValues(Object values) { return -1; }

Где в Dispose() я просто закрываю файл.

После того как интерфейс реализован, можно написать метод для загрузки файла:

Void SaveToTable(FileInfo dir, string TableName, string connestionString, Dictionary FieldIndex) { using (var loader = new SqlBulkCopy(connestionString, SqlBulkCopyOptions.Default)) { loader.DestinationTableName = TableName; loader.BulkCopyTimeout = 9999; loader.WriteToServer(new BDFBulkReader(dir.FullName, FieldIndex)); } }

Вот и все. В эту функцию осталось передать расположение файла, имя таблицы, строку подключения и соответствующий словарь соответствий, например:

Dictionary FieldIndex= new Dictionary(); FieldIndex.Add(0, "POSTALCODE"); FieldIndex.Add(1, "IFNSFL"); FieldIndex.Add(2, "TERRIFNSFL"); FieldIndex.Add(3, "IFNSUL"); FieldIndex.Add(4, "TERRIFNSUL"); FieldIndex.Add(5, "OKATO"); FieldIndex.Add(6, "OKTMO"); FieldIndex.Add(7, "UPDATEDATE"); FieldIndex.Add(8, "HOUSENUM"); FieldIndex.Add(9, "ESTSTATUS"); FieldIndex.Add(10, "BUILDNUM"); FieldIndex.Add(11, "STRUCNUM"); FieldIndex.Add(12, "STRSTATUS"); FieldIndex.Add(13, "HOUSEID"); FieldIndex.Add(14, "HOUSEGUID"); FieldIndex.Add(15, "AOGUID"); FieldIndex.Add(16, "STARTDATE"); FieldIndex.Add(17, "ENDDATE"); FieldIndex.Add(18, "STATSTATUS"); FieldIndex.Add(19, "NORMDOC"); FieldIndex.Add(20, "COUNTER");

Все, всем спасибо за внимание, приятной загрузки.

Простенькая программка для переноса данных из файлов dbf в таблицы Microsoft Excel.


Предыстория этой утилиты следующая: в 1с-ке есть выгрузка данных в древний и могучий формат dBase, например списки товаров с ценами и т.д. и т.п. Так вот, некоторые программы, с лёгкостью импортируют наборы данных из таблиц Excel, а про dBase не знают.


Выгрузка 1с сохраняет данные в кодировке WIN1251 (может это конечно и настраивается где-то, не проверял), однако после открытия такого файла в Excel-е, информация отображается «крякозябрами». Это происходит, потому что Microsoft Excel по умолчанию открывает таблицы dBase в кодировке CP866 (DOS).


Собственно, всё это я к тому, что слишком тяжёлым испытанием оказывается для простого пользователя, как, что, куда и с чем перекодировать, какие кнопки для этого нажимать и какие действия выполнять. Именно поэтому и была поставлена задача как можно проще и чтобы сразу.


P.S.: ни разу не претендую на уникальность и гениальность, так как в Интернете полно подобных софтов, которые меняют кодировки и делают много чего ещё, однако большинство из них платные, да и лишний функционал только отягчает муки простых обывателей.


Программа для экспорта данных из файлов dBase в Microsoft Excel.


Главное окно программы.


После того как программа запущена, нужно нажать на кнопку "Открыть" и в диалоге выбора файлов выбрать тот dbf, который будет экспортироваться в Excel.


* * *


Главное окно программы с загруженным dbf-файлом.


Если файл успешно загружен, его данные отобразятся в таблице. В самом верху в поле "Исходный файл", будет показан полный путь и имя загруженного файла dbf.


После этого нужно нажать на большую кнопку "Экспортировать данные", находящуюся сразу под таблицей с информацией.


* * *


Окно с запросом о масштабировании колонок.


Если с dbf-файлом не было никаких проблем, вы должны увидеть окно с запросом о масштабировании размеров столбцов, это означает нужно ли в Excel-e растянуть колонки по ширине данных.


* * *


Если все операции прошли успешно, будет запущен экземпляр Excel cо всеми выгруженными в него данными.

Может случиться так, что dbf-файл не содержит служебной информации о кодировке, в таком случае будет выдано сообщение "В dbf-файле отсутствует информация о кодировке."


На рисунках ниже, красным цветом показано и написано какую из кнопок "Да" или "Нет" нужно нажать в том или ином случае:


В случае если текст в таблице нечитабельный.


* * *


В случае если текст в таблице читается нормально.

Особенности программы


В системе должен быть установлен Microsoft Excel.
Dbf-файлы открываются в монопольном режиме.
Содержимое blob-полей не переносится.
Работоспособность программы проверялась на Windows XP и Windows 7.
Утилита абсолютно бесплатна и не требует установки, это значит, скачиваешь и пользуешься.

DBF - файл баз данных, возможность работы с которым раньше интегрировалась в среду Microsoft Office. С форматом работали приложения Access и Excel, позже Access был выведен из состава пакета и стал отдельной программой, а в Excel с 2007 года поддержка DataBaseFile была существенно ограничена.

При невозможности открыть DBF-файл напрямую в Excel его нужно предварительно конвертировать.

Однако DBF хоть и считается многими устаревшим форматом, но до сих пор широко используется в специализированных программах в сфере бизнеса, проектирования, инженерной сфере. Везде, где требуется работа с большими массивами информации, их структурирование и обработка, выполнение запросов. Например, программный комплекс 1С Предприятие целиком основан на управлении базами данных. А учитывая, что масса офисной документации и данных проходит в Excel, то вопрос интегрированной работы с этими форматами актуален и востребован.

Проблемы Excel при работе с DBF

В Excel 2003 была возможность открыть и редактировать DBF , а также сохранять в этом формате документы XLS:

  1. На панели меню выбрать «Файл».
  2. Далее, нажать «Сохранить как».
  3. Выбрать из выпадающего списка «*.dbf».

ВАЖНО. Начиная с 2007 года вы можете открыть и просмотреть в Excel формат баз данных, но не можете вносить изменения, а также сохранять в нём документы.xls. Стандартные средства программы больше не предусматривают такой возможности.

Однако существуют специальные надстройки для приложения, добавляющие ему такую функцию. В сети на различных форумах программисты выкладывают свои разработки, можно найти разные варианты. Наиболее популярную надстройку, которая называется XslToDBF, можно скачать с сайта разработчика http://basile-m.narod.ru/xlstodbf/download.html. Загрузка бесплатная, но по желанию можно поддержать проект, перечислив любую сумму на кошелёк или карту.

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

  1. Скачайте архив с указанного выше сайта.
  2. Извлеките из него XlsToDBF.xla и сохраните на своём компьютере.
  3. В Excel зайдите в меню кнопкой со значком Майкрософт слева, «Параметры».
  4. В разделе «Параметры Excel» выберите «Надстройки».
  5. В строке «Управление/Надстройки Excel» нажмите «Перейти».
  6. Нажмите «Обзор» и укажите сохранённый XlsToDBF.xla.
  7. В списке надстроек должна появиться запись «XLS -> DBF» с поставленной галочкой проверки. Отметьте, если её нет.
  8. Теперь вы можете сохранять.xls в формат.dbf. С того же сайта можно скачать подробную инструкцию по использованию. Главное, правильно подготовить табличные данные.
  9. После того как таблица готова, выберите любую заполненную ячейку и нажмите Alt и F
  10. В открывшемся окне макроса в поле наберите XlsToDBF, регистр не важен.
  11. Нажмите «Выполнить».
  12. Если вы правильно подготовили и оформили данные, то в папке, где находится исходный XLS, будет сохранён и файл базы данных.

Если вы не хотите ничего менять в Office, не доверяете надстройкам и сторонним приложениям, то можно предложить более трудоёмкий способ преобразовать файл XLS в DBF:

  1. Приобретите и установите программу Microsoft Access.
  2. В Excel подготовьте и сохраните документ.
  3. Нажмите кнопку «Открыть» в MS Access и выберите файл.
  4. Теперь нужно корректно настроить импорт.
  5. Выберите лист, с которого начнёте. Если их несколько, всё равно придётся делать по одному.
  6. Если в таблице есть строка заголовков, поставьте соответствующую галочку.
  7. Далее, можно изменить имя таблицы.
  8. Теперь нажмите на «Внешние данные».
  9. Жмите кнопку «Экспорт», «Дополнительно».
  10. Выберите «Файл dBase».
  11. Укажите имя и место сохранения.

Такой способ не всегда работает удачно, часто возникают ошибки в обработке данных, в последующем сохранении. И он весьма долгий и неудобный.

Конвертация

Чтобы не мучиться самим с офисными программами, создано множество приложений , позволяющих перевести данные из одного формата в другой. Во-первых, почти все мощные программы по работе с СУБД предполагают возможность экспорта в XLS и загрузки из него. Во-вторых, есть небольшие утилиты, специализирующиеся на конвертации. Вот некоторые из них:


Во всех этих программах преобразование сводится к тому, что нужно открыть исходный файл, а затем выполнить команду «Конвертировать» или «Экспорт».

Существуют и бесплатные сервисы онлайн-преобразования. На таких сайтах предлагается прислать (загрузить) исходный файл, нажать «Конвертировать», после чего появится ссылка на преобразованный документ. Насколько можно доверять таким услугам, решение индивидуальное, на свой страх и риск.

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

DBF – это популярный формат хранения и обмена данными между различными программами, а в первую очередь, между приложениями, которые обслуживают базы данных и электронные таблицы. Хотя он и стал устаревать, но продолжает оставаться востребованным в различных сферах. Например, с ним продолжают активно работать бухгалтерские программы, а контролирующие и государственные органы принимают значительную часть отчетов в данном формате.

Но, к сожалению, Эксель, начиная с версии Excel 2007, прекратил полноценную поддержку указанного формата. Теперь в этой программе можно только просмотреть содержимое DBF-файла, а сохранить данные с указанным расширением встроенными инструментами приложения уже не получится. К счастью, имеются другие возможности конвертации данных из программы Excel в нужный нам формат. Рассмотрим, каким образом это можно выполнить.

В Excel 2003 и в более ранних версиях этой программы можно было сохранить данные в формате DBF (dBase) стандартным путем. Для этого нужно было кликнуть по пункту «Файл» в горизонтальном меню приложения, а затем в открывшемся списке выбрать позицию «Сохранить как…» . В запустившемся окошке сохранения из списка требовалось выбрать наименование нужного формата и нажать на кнопку «Сохранить» .

Но, к сожалению, начиная с версии Excel 2007, разработчики Microsoft посчитали dBase устаревающим, а современные форматы Эксель слишком сложными для того, чтобы тратить время и средства на обеспечение полной совместимости. Поэтому в Excel осталась возможность читать DBF-файлы, но поддержка сохранения данных в этом формате встроенными программными инструментами была прекращена. Тем не менее, существуют некоторые способы конвертации данных сохраненных в Excel в DBF при помощи применения надстроек и другого программного обеспечения.

Способ 1: программа WhiteTown Converters Pack

Существует ряд программ, которые позволяют конвертировать данные из Excel в DBF. Один из самых простых способов конвертирования данных из Excel в DBF является использование пакета утилит для конвертирования объектов с различным расширением WhiteTown Converters Pack.

Хотя процедура установки данной программы проста и интуитивно понятна, все-таки подробно остановимся на ней, указав на некоторые нюансы.

  1. После того, как вы скачали и запустили инсталлятор, сразу открывается окошко Мастера установки , в котором предлагается выбрать язык для дальнейшего проведения процедуры инсталляции. По умолчанию там должен отобразиться тот язык, который установлен на вашем экземпляре Windows, но при желании его можно поменять. Мы же это делать не будем и просто жмем на кнопку «OK» .
  2. Далее запускается окно, в котором указывается место на системном диске, куда будет устанавливаться утилита. По умолчанию это папка «Program Files» на диске «C» . Тут лучше тоже ничего не менять и нажать на клавишу «Далее» .
  3. Затем открывается окно, в котором можно выбрать, какие именно направления преобразования вы хотите иметь. По умолчанию выбраны все доступные компоненты конвертирования. Но, возможно, некоторые пользователи не захотят устанавливать их все, так как каждая утилита занимает место на жестком диске. Во всяком случае, именно для нас важно, чтобы стояла галочка около пункта «XLS (Excel) to DBF Converter» . Установку остальных компонентов пакета утилит пользователь может выбрать на свое усмотрение. После того, как настройка произведена, не забываем кликнуть по клавише «Далее» .
  4. После этого открывается окно, в котором производится добавление ярлыка в папке «Пуск» . По умолчанию ярлык называется «WhiteTown» , но при желании можно изменить его наименование. Жмем на клавишу «Далее» .
  5. Затем запускается окно, в котором спрашивается, создавать ли ярлык на рабочем столе. Если вы хотите, чтобы он был добавлен, то оставьте галочку около соответствующего параметра, если не хотите, то снимите её. Затем, как всегда, жмем на клавишу «Далее» .
  6. После этого открывается ещё одно окошко. В нем указаны основные параметры установки. Если пользователя что-то не устраивает, и он хочет отредактировать параметры, то следует нажать на клавишу «Назад» . Если все в порядке, то щелкаем по кнопке «Установить» .
  7. Начинается процедура установки, прогресс которой будет отображать динамический индикатор.
  8. Затем открывается информационное сообщение на английском языке, в котором выражается благодарность по поводу инсталляции данного пакета. Жмем на клавишу «Далее» .
  9. В последнем окошке Мастера установки сообщается, что программа WhiteTown Converters Pack успешно установлена. Нам остается только нажать на кнопку «Завершить» .
  10. После этого на Рабочем столе появится папка под названием «WhiteTown» . Она содержит ярлыки утилит по конкретным направлениям конвертации. Открываем эту папку. Перед нами предстает большое число утилит, входящих в пакет WhiteTown по различным направлениям конвертации. При этом каждое направление имеет отдельную утилиту для 32-битной и 64-битной операционной системы Windows. Открываем приложение с наименованием «XLS to DBF Converter» , соответствующее разрядности вашей ОС.
  11. Запускается программа XLS to DBF Converter. Как видим, интерфейс англоязычный, но, тем не менее, он интуитивно понятен.

    Сразу открывается вкладка «Input» («Ввод» ). Она предназначена для того, чтобы указать объект, который следует конвертировать. Для этого жмем по кнопке «Add» («Добавить» ).

  12. После этого открывается стандартное окошко добавления объекта. В нем нужно перейти в ту директорию, где размещена нужная нам книга Excel c расширением xls или xlsx. После того, как объект найден, выделяем его наименование и жмем на кнопку «Открыть» .
  13. Как видим, после этого путь к объекту отобразился во вкладке «Input» . Жмем на клавишу «Next» («Далее» ).
  14. После этого мы автоматически перемещаемся во вторую вкладку «Output» («Вывод» ). Здесь нужно указать в какую именно директорию будет выводиться готовый объект с расширением DBF. Для того, чтобы выбрать папку сохранения готового DBF-файла, жмем на кнопку «Browse…» («Просмотреть» ). Открывается небольшой список из двух пунктов «Select File» («Выбрать файл» ) и «Select Folder» («Выбрать папку» ). На самом деле эти пункты лишь означают выбор различного вида окон навигации для указания папки сохранения. Делаем выбор.
  15. В первом случае это будет обычное окно «Сохранить как…» . В нем будут отображаться, как папки, так и уже существующие объекты dBase. Переходим в ту директорию, где желаем произвести сохранение. Далее в поле «Имя файла» указываем то наименование, под которым желаем, чтобы значился объект после конвертации. После этого жмем на кнопку «Сохранить» .

    Если же вы выберите вариант «Select Folder» , то откроется упрощенное окошко выбора директории. В нем будут отображаться только папки. Выбираем папку для сохранения и жмем на кнопку «OK» .

  16. Как видим, после любого из этих действий путь к папке для сохранения объекта будет отображен во вкладке «Output» . Для перехода к следующей вкладке щелкаем по клавише «Next» («Далее» ).
  17. В последней вкладке «Options» («Параметры» ) очень много настроек, но нас больше всего интересует «Type of memo fields» («Тип поля memo» ). Кликаем по полю, в котором по умолчанию стоит настройка «Auto» («Авто» ). Открывается список типов dBase для сохранения объекта. Этот параметр очень важен, так как далеко не все программы, работающие с dBase, умеют обрабатывать все типы объектов с данным расширением. Поэтому заранее нужно знать, какой тип выбрать. Существует возможность выбора из шести различных типов:
    • dBASE III ;
    • FoxPro ;
    • dBASE IV ;
    • Visual FoxPro ;
    • >SMT ;
    • dBASE Level 7 .

    Делаем выбор того типа, который нужен для применения в конкретной программе.

  18. После того, как выбор сделан, можно переходить к непосредственной процедуре конвертирования. Для этого жмем на кнопку «Start» («Старт» ).
  19. Запускается процедура преобразования. Если в книге Эксель имеется несколько листов с данными, то для каждого из них будет создан отдельный DBF-файл. О завершении процесса конвертации будет свидетельствовать зеленый индикатор прогресса. После того, как он дойдет до конца поля, жмем на кнопку «Finish» («Финиш» ).

Готовый документ будет расположен в той директории, которая была указана во вкладке «Output» .

Единственный существенный недостаток способа с применением пакета утилит WhiteTown Converters Pack состоит в том, что бесплатно можно будет провести только 30 процедур конвертирования, а потом придется приобретать лицензию.

Способ 2: надстройка XlsToDBF

Конвертировать книгу Эксель в dBase непосредственно через интерфейс приложения можно с помощью установки сторонних надстроек. Одной из лучших и наиболее удобных из них является надстройка XlsToDBF. Рассмотрим алгоритм её применения.

  1. После того, как скачали архив XlsToDBF.7z с надстройкой, распаковываем из него объект под названием XlsToDBF.xla. Так как архив имеет расширение 7z, то распаковку можно проводить либо стандартной программой для этого расширения 7-Zip, либо с помощью любого другого архиватора, который поддерживает работу с ним.
  2. После этого запускаем программу Эксель и переходим во вкладку «Файл» . Далее перемещаемся в раздел «Параметры» через меню в левой части окна.
  3. В открывшемся окошке параметров кликаем по пункту «Надстройки» . Перемещаемся в правую часть окна. В самом его низу расположено поле «Управление» . Переставляем в нем переключатель в позицию «Надстройки Excel» и щелкаем по кнопке «Перейти…» .
  4. Открывается небольшое окошко управления надстройками. Жмем в нем на кнопку «Обзор…» .
  5. Запускается окошко открытия объекта. Нам нужно перейти в ту директорию, где находится распакованный архив XlsToDBF. Заходим в папку под одноименным названием и выделяем объект с наименованием «XlsToDBF.xla» . После этого жмем на кнопку «OK» .
  6. Затем мы возвращаемся в окошко управления надстройками. Как видим, в списке появилось наименование «XLS -> DBF» . Это и есть наша надстройка. Около неё должна стоять галочка. Если галочка отсутствует, то ставим её, а затем жмем на кнопку «OK» .
  7. Итак, надстройка установлена. Теперь открываем документ Эксель, данные из которого нужно преобразовать в dBase, или же просто набираем их на листе, если документ ещё не создан.
  8. Теперь нам нужно будет произвести некоторые манипуляции с данными, чтобы подготовить их к конвертации. Прежде всего, добавляем две строки над шапкой таблицы. Они должны быть самыми первыми на листе и иметь наименования на вертикальной панели координат «1» и «2» .

    В самой верхней левой ячейке вписываем наименование, которое мы хотим присвоить создаваемому DBF-файлу. Оно состоит из двух частей: собственно названия и расширения. Допускается использование только латиницы. Пример такого наименования – «UCHASTOK.DBF» .

  9. В первой ячейке справа от наименования нужно указать кодировку. Существует два варианта кодировки с применением данной надстройки: CP866 и CP1251 . Если ячейка B2 пустая или в ней установлено любое значение отличное от «CP866» , то по умолчанию будет применяться кодировка CP1251 . Ставим ту кодировку, которую считаем нужной или оставляем поле пустым.
  10. Далее переходим к следующей строке. Дело в том, что в структуре dBase каждый столбец, именуемый полем, имеет свой тип данных. Существуют такие их обозначения:
    • N (Numeric) – числовой;
    • L (Logical) – логический;
    • D (Date) – дата;
    • C (Character) – строковый.

    Кроме того, в строковом (Cnnn ) и числовом типе (Nnn ) после наименования в виде буквы следует указывать максимальное количество символов в поле. Если в числовом типе применяются десятичные знаки, то их количество тоже нужно указать после точки (Nnn.n ).

    Существуют и другие типы данных в формате dBase (Memo, General и т.д.), но данная надстройка с ними работать не умеет. Впрочем, с ними не умел работать и Excel 2003, когда ещё поддерживал конвертацию в DBF.

    В нашем конкретном случае первое поле будет строковым шириной в 100 символов (C100 ), а остальные поля будут числовыми шириной в 10 символов (N10 ).

  11. В следующей строке расположены наименования полей. Но дело в том, что они тоже должны быть внесены на латинице, а не на кириллице, как у нас. Также в наименовании полей не допускаются пробелы. Переименовываем их согласно этим правилам.
  12. После этого подготовку данных можно считать оконченной. Выделяем на листе курсором с зажатой левой клавишей мыши весь диапазон таблицы. Затем переходим во вкладку «Разработчик» . По умолчанию она отключена, поэтому перед дальнейшими манипуляциями нужно её активировать и включить работу макросов . Далее на ленте в блоке настроек «Код» кликаем по значку «Макросы» .

    Можно сделать и чуть проще, набрав комбинацию горячих клавиш Alt+F8 .

  13. Запускается окошко макросов. В поле «Имя макроса» вводим наименование нашей надстройки «XlsToDBF» без кавычек. Регистр при этом не важен. Далее щелкаем по кнопке «Выполнить» .
  14. Макрос в фоновом режиме выполняет обработку. После этого в той же папке, где расположен исходный Excel-файл, будет сформирован объект с расширением DBF с тем наименованием, которое было задано в ячейке A1 .

Как видим, данный способ значительно сложнее предыдущего. Кроме того, он весьма ограничен по количеству используемых типов полей и создаваемых типов объектов с расширением DBF. Ещё одним недостатком является то, что директорию создания объекта dBase можно назначать только перед процедурой конвертирования, путем прямого перемещения в папку назначения исходного Excel-файла. Среди преимуществ данного способа можно отметить то, что в отличие от предыдущего варианта, он абсолютно бесплатен и практически все манипуляции производятся непосредственно через интерфейс Эксель.

Способ 3: программа Microsoft Access

Хотя у новых версий Excel и нет встроенного способа сохранение данных в формате DBF, но, тем не менее, вариант с применением приложения Microsoft Access более всего приблизился к тому, чтобы назвать его стандартным. Дело в том, что эта программа выпущена тем же производителем, что и Эксель, и также входит в пакет Microsoft Office. К тому же, это самый безопасный вариант, так как не нужно будет связываться с программным обеспечением сторонних производителей. Microsoft Access специально предназначен для работы с базами данных.

  1. После того, как все необходимые данные на листе в Эксель введены, для того, чтобы конвертировать их в формат DBF, нужно сначала произвести сохранение в одном из форматов Excel. Для этого кликаем по иконке в виде дискеты в левом верхнем углу окна программы.
  2. Открывается окно сохранения. Переходим в ту директорию, где желаем, чтобы файл был сохранен. Именно из этой папки его нужно будет потом открыть в Microsoft Access. Формат книги можно оставить по умолчанию xlsx, а можно поменять на xls. В данном случае это не критично, так как все равно мы сохраняем файл только для того, чтобы преобразовать его в DBF. После того, как все настройки выполнены, жмем на кнопку «Сохранить» и закрываем окно Excel.
  3. Запускаем программу Microsoft Access. Переходим во вкладку «Файл» , если она открылась в другой вкладке. Жмем на пункт меню «Открыть» , расположенный в левой части окна.
  4. Запускается окно открытия файла. Переходим в ту директорию, где мы сохранили файл в один из форматов Excel. Чтобы он отобразился в окне, переставляем переключатель формата файлов в положение «Книга Excel (*.xlsx)» или «Microsoft Excel (*.xls)» , в зависимости от того, в каком из них книга была сохранена. После того, как наименование нужного нам файла отобразилось, выделяем его и жмем на кнопку «Открыть» .
  5. Открывается окно «Связь с электронной таблицей» . Оно позволяет максимально корректно переместить данные из файла Excel в Microsoft Access. Нам нужно выбрать лист Эксель, данные из которого мы собираемся импортировать. Дело в том, что даже если в файле Excel содержалась информация на нескольких листах, то импортировать её в Access можно только отдельно и, соответственно, потом преобразовать её в отдельные файлы DBF.

    Также существует возможность импорта информации отдельных диапазонов на листах. Но в нашем случае это не нужно. Устанавливаем переключатель в позицию «Листы» , а затем выбираем тот лист, откуда собираемся брать данные. Корректность отображения информации можно просмотреть в нижней части окна. Если все удовлетворяет, жмем на кнопку «Далее» .

  6. В следующем окне, если ваша таблица содержит заголовки, нужно поставить галочку около пункта «Первая строка содержит заголовки столбцов» . Затем жмем на кнопку «Далее» .
  7. В новом окне связи с электронной таблицей можно при желании изменить имя связанного элемента. Затем жмем на кнопку «Готово» .
  8. После этого откроется диалоговое окно, в котором будет сообщение о том, что связывание таблицы с файлом Excel завершено. Жмем на кнопку «OK» .
  9. В левой части интерфейса программы появится наименование таблицы, которое мы присвоили ей в последнем окне. Дважды щелкаем по нему левой клавишей мыши.
  10. После этого таблица отобразится в окне. Перемещаемся во вкладку «Внешние данные» .
  11. На ленте в блоке инструментов «Экспорт» кликаем по надписи «Дополнительно» . В открывшемся списке выбираем пункт «Файл dBase» .
  12. Открывается окно экспорта в формат DBF. В поле «Имя файла» можно указать место хранения файла и его наименование, если те, которые указаны по умолчанию, вам по какой-то причине не подходят.

    В поле «Формат файла» выбираем один из трех типов формата DBF:

    • dBASE III (по умолчанию);
    • dBASE IV ;
    • dBASE 5 .

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

    После того, как все настройки выставлены, жмем на кнопку «OK» .

  13. Если после этого появилось сообщение об ошибке, то попробуйте экспортировать данные, используя другой тип формата DBF. Если же все прошло нормально, то появится окно, в котором сообщается, что экспорт выполнен успешно. Жмем на кнопку «Закрыть» .

Созданный файл в формате dBase будет находиться в той директории, которая была указана в окне экспорта. Далее с ним вы можете производить любые манипуляции, включая импорт его в другие программы.

Как видим, несмотря на то, что в современных версиях Excel отсутствует возможность сохранения файлов в формате DBF встроенными инструментами, тем не менее, данную процедуру можно осуществить с помощью применения других программ и надстроек. При этом следует отметить, что наиболее функциональный способ конвертирования – это использование набора утилит WhiteTown Converters Pack. Но, к сожалению, количество бесплатных преобразований в нем ограничено. Надстройка XlsToDBF позволяет выполнить конвертацию абсолютно бесплатно, но процедура намного сложнее. К тому же функционал данного варианта очень ограничен.

«Золотой серединой» является способ с использованием программы Access. Как и Excel – это разработка компании Microsoft, а поэтому сторонним приложением его уже не назовешь. К тому же данный вариант позволяет конвертировать файл Excel в несколько типов формата dBase. Хотя по этому показателю Access все-таки уступает программе WhiteTown.

Поделиться