Как сделать из excel dbf?

Бесплатный конвертер XLS в DBF и DBF в XLS

Конвертер XLS а также XLSX в DBF и DBF в XLSX представляет собой макрос EXCEL, которым можно использовать не только для конвертирования, но и для поиска, заполнения из файла другой структуры по ключевым полям записей и их модификация. Например, если требуется заполнить файл EXCEL, в котором присутствует какое либо ключевое поле (номер счета или код товара) из базы DBF с таким же ключевым полем.

Или же обратная ситуация — есть EXCEL файл, надо модифицировать или заполнить DBF файл. Конечно потребуется коррекция VBA кода макроса, но сочинять и отлаживать «с нуля» не придется.

Идея выложить подобный макрос появилась, когда самому потребовался подобный конвертор, а поиски в интернете указывали только на платные конвертеры, к тому же без возможности что либо изменить под себя. За основу была взята надстройка XlsToDBF, которая распространялась в интернете бесплатно, но найти и скачать ее оказалось не просто. Больше попадались либо платные утилиты, либо он-лайн конверторы. Ни то ни другое не подходило.

Тем более с выходом версии MS Office 2007 в программе Excel по кнопке ( ) в списке возможных вариантов формат dBASE (*.DBF) уже нет. В последующих подавно.

Краткое описание файла конвертора с макросом XLSX_DBF

В скачанном архиве XLSX_DBF.zip (в конце статьи) присутствуют файлы:

Конвертор.xlsm — собственно сам EXCEL файл с макросами.

Файлы для примера конвертации и заполнения

in_file.DBF

LK_in1.xlsx

RK_in2.xlsx

out1.xlsx

out2.xlsx

Еще два файла появятся после нажатия кнопки » Заполнить L,R DBF»

SUB_K.DBF

SUB_L.DBF

Все действия по кнопкам легко подкорректировать в VBA из меню макросов

По умолчанию в файле прописаны пути «D:File». Для удобства разархивируйте архив на диск D в корень и у Вас сохранится начальная настройка каталогов.

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

Для выполнения макроса необходимо в EXCEL включить разрешение на открытие и запуск макросов. В этих макросах ВИРУСОВ НЕТ. Для включения надо в меню «ФАЙЛ» выбрать «Сведения» -> «Параметры»

Далее выбрать «Центр управления безопасностью» -> «Параметры центра управления безопасностью» -> «Параметры макросов» -> «Включить все макросы»

Для запуска конвертора открываутся файл Конвертор.xlsm. Слева кнопки выбора файлов, справа кнопки запуска. Для примера представлены файлы EXCEL (Субсидии и льготы — Out1 и Out2), которые обновляются из IN_FILE.DBF, по ключевому полю LSCHET. В сроки файлов XLSX, где будет найден «Номер лицевого счета» будет заполнено значением из поля «DOLG» файла IN_FILE.DBF.

Вторая часть Конвертор.xlsm демонстрирует создание и заполнение файлов SUB_K.DBF и SUB_L.DBF из LK_in1.xlsx и RK_in2.xlsx согласно заданной структуры. За основу создания взята надстройка XlsToDBF, преобразованная в макрос с исправлением некоторых ошибок.

Макрос (надстройка) XlsToDBF и его описание

    • задать произвольное имя выходного DBF-файла
    • задать тип и размер для каждого поля по усмотрению пользователя
    • задать кодовую страницу (WINDOWS-1251 или DOS-866) для выходного DBF-файла
    • задать параметр MAC для корректного вывода DBF-файла на Macintosh

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

Надстройка умеет работать с четырьмя основными форматами полей DBF: Character (Cnnn), Numeric (Nnn или Nnn.n), Date (D) и Logical (L), т.е такие поля как General, Memo, Currency и т.д. в конечном файле она создать не сумеет. Собственно, родной конвертер предыдущих версий Excel имел такое же ограничение.

Для примера используется файл Price.xls из архива, Лист: Price. Существует таблица EXCEL, которую необходимо сохранить в DBF-файле.

В конечном DBF-файле назначаем необходимые имена полей и форматы, чтобы:

  • Поле Идентификатор имело целочисленный тип (т.е Numeric) шириной в 14 знаков и называлось ID.
  • Поле Наименование — строковый тип (Character) шириной в 100 символов с названием NAME
  • Поле Единица измерения — строковый, 20 символов, с названием ONE_NAME
  • Поле Цена — числовой тип (Numeric) шириной в 14 знаков с двумя знаками за запятой с названием PRICE
  • Поле Включать в прайс — логический тип (Logical) с названием L_PRICE
  • Поле Дата обновления имело тип даты (Date) с названием D_UPDATE
Читать еще:  Как сделать содержание с номерами страниц в excel?

Также мы хотим конечный DBF-файл сохранить с названием PRICE.DBF в кодовой странице (Code Page) DOS-866.

Для того, чтобы получить ожидаемый результат, нужно изменить заголовок таблицы следующим образом (файл Price.xls из архива, Лист: Price_pre).

Первая ячейка первой строки, экспортируемой области, содержит имя конечного файла. Расширение в имени файла на процесс конвертации не влияет, т.е. конечный файл в любом случае будет иметь структуру DBF (dBASE).

Вторая ячейка (B1) указывает макросу надстройки в какой кодовой странице сохранять DBF-файл. Если значение ячейки (B1) отличается от CP866 или не задано совсем, то конечный DBF-файл сохранится в кодовой странице WINDOWS CP1251.

Вторая строка описывает форматы полей, которые мы хотим получить в конечном файле. Здесь хочу отметить, т.к. многие путаются, что числовой формат с дробной десятичной частью, например N14.2 трактуется следующим образом: ширина поля 14 знаков, включая десятичную точку и 2 знака за ней. Т.е. 11 целых знаков, десятичная точка и 2 знака за ней, а не 14 целых знаков и 2 за точкой.

Третья строка описывает наименование полей (максимально 10 символов). Я думаю, больше комментировать здесь нечего.

Начиная с четвёртой строки и до конца непрерывной области, располагаются данные. Желательно, чтобы данные соответствовали заданному типу. Красным цветом я отметил те поля, в которых значения не могут быть корректно преобразованы. В таких случаях надстройка задаёт им значения по умолчанию. Например, значение ДА не может быть преобразовано к логическому типу. Поэтому в конечном DBF-файле это поле будет иметь значение FALSE (F). В данном примере то же самое произойдёт и с датами, отмеченными красным цветом (в DBF-файле они будут пустые).

В макросе файла Конвертор.xlsm эти операции прописаны в VBA коде, макрос — «Вывод_в_dbf()»

Sub Вывод_в_dbf()
Dim i As Integer
Dim strMes As String
Dim strMes1 As String
Dim strMes2 As String
Dim WBook As String
Dim WMak As String
Dim Wind1 As String
strMes = «»
Range(«D13:D200»).Value = «»
Range(«D13»).Value = «Обработка 1»
f_lgot = Range(«D8»).Value
f_sub = Range(«D9»).Value
f_dbf_l = Range(«D10»).Value
f_dbf_r = Range(«D11»).Value

WBook = ThisWorkbook.Name
strMes2 = Range(«D10»).Value
If is_file(f_lgot) = 1 Then
Range(«D13»).Value = «Обработка 1»
Workbooks.Open (f_lgot)
Range(«A1»).Value = strMes2
i = rep_file()
Application.Run «‘Конвертор.xlsm’!XlsToDBF»
ActiveWindow.Close SaveChanges:=False
Windows(WBook).Activate

strMes = strMes + «DBF Файл льгот » & Range(«D10″).Value & » заполнен» & Chr(13) + Chr(10)
Else
strMes = strMes + «. DBF Файл льгот НЕ заполнен!» & Chr(13) + Chr(10)
End If

Запуск макроса надстройки XlsToDBF

После того, как мы подготовили данные для выгрузки, можно запустить макрос надстройки. Для этого нужно выделить любую ячейку в области данных или заголовка и нажать . В диалоговом окне «Макрос» в поле «Имя макроса:» нужно ВРУЧНУЮ ввести XlsToDBF (регистр не имеет значения) и нажать кнопку . Если на предыдущем этапе всё сделано верно, то DBF-файл будет сохранен с именем PRICE.DBF в той же папке, где расположена исходная книга Excel. В случае если книга новая и не сохранена, то DBF-файл будет сохранён в папке по умолчанию (скорее всего в папке «Мои документы»). Будьте внимательны: при повторном запуске макроса DBF-файл будет переписан без каких-либо предупреждений.

Если работа надстройки устраивает, и Вы предполагаете часто её использовать, то для удобства создайте пользовательскую кнопку на ленте и назначьте ей макрос XlsToDBF.

Скачать XLSX_DBF бесплатно

Скачать XlsToDBF бесплатно

Открытие и преобразование DBF-файла в EXCEL

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

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

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

Читать еще:  Как сделать погрешность в excel?

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

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

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

Однако существуют специальные надстройки для приложения, добавляющие ему такую функцию. В сети на различных форумах программисты выкладывают свои разработки, можно найти разные варианты. Наиболее популярную надстройку, которая называется 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» с поставленной галочкой проверки. Отметьте, если её нет. DBF»» src=»https://nastroyvse.ru/wp-content/uploads/2017/05/Ustanovka-nadstryki-v-Microsoft-Excel.jpg» alt=»Запись «XLS -> DBF»» width=»321″ height=»376″ srcset=»https://nastroyvse.ru/wp-content/uploads/2017/05/Ustanovka-nadstryki-v-Microsoft-Excel.jpg 321w, https://nastroyvse.ru/wp-content/uploads/2017/05/Ustanovka-nadstryki-v-Microsoft-Excel-256×300.jpg 256w, https://nastroyvse.ru/wp-content/uploads/2017/05/Ustanovka-nadstryki-v-Microsoft-Excel-72×84.jpg 72w» sizes=»(max-width: 321px) 100vw, 321px» />
  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 и загрузки из него. Во-вторых, есть небольшие утилиты, специализирующиеся на конвертации. Вот некоторые из них:

  1. DBFView — простая программа работы с базами данных, позволяющая редактировать, просмотреть DataBaseFile, открыть его в XLS и импортировать из него без каких-либо дополнительных действий. Поддерживает форматы dbf dBase, Clipper, FoxPro, Visual FoxPro и многие другие.
  2. DBF Viewer Plus — приложение, не требующее установки, с хорошим функционалом. Позволяет создавать базы данных, экспортировать в разные форматы, в том числе в .xls. Включает возможности редактирования, добавления, переименования, сортировки записей, фильтр и поиск, печать и предпросмотр.
  3. WhiteTown Converters Pack — набор утилит по конвертации в различных направлениях, позволяет избежать ошибок и конфликтов при преобразовании из формата в формат.
  4. DBF Commander — профессиональное программное обеспечение, конвертирование лишь небольшая часть его функциональных возможностей.

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

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

Читать еще:  Как в excel сделать линейку с буквами?

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

Как сделать из excel dbf?

Добрый день.
Не поможите изобрести велосипед?
Необходимо отконвертировать Excel в dbf (стандартно из Excel не подходит, по причине неграммотности пользователей).
Вопрос состоит в том, как проще подключиться к Excel и скачать данные в программу?
Спасибо.


YurikGL © ( 2005-07-04 20:09 ) [1]


evvcom © ( 2005-07-05 08:39 ) [2]

Если из Excel его же средствами писать в dbf, то скорее всего ты получишь dbf не с той структурой, что ты ожидаешь. Excel «портит» структуру dbf, поэтому лучше данные из Excel читать (например, через OLE), а потом в dbf их писать (через ADO, BDE или еще чего может придумаешь).


Anatoly Podgoretsky © ( 2005-07-05 08:52 ) [3]

Что то не ладно в датском королевстве. Вот благоприятный случай повысить квалификацию пользователей, обучить более грамотной работе с Эксель. Так нет же, вместо этого тратить средства на создание костыля. А потом удивляемся почему у нас только две беды. Дураки и программисты.


onics ( 2005-07-05 10:21 ) [4]

2 Anatoly Podgoretsky. Сам знаю что не ладно, но писать предется по любому, поскольку это всего-лишь кусок программы, который легко можно было бы и не писать. А как известно: нервные клетки не восстанавливаются.
2 All. Какую технологию доступа к данным Excel, проще реализовать? Время на выбор пути реализации пока есть.
Спасибо.


Anatoly Podgoretsky © ( 2005-07-05 10:23 ) [5]


evvcom © ( 2005-07-05 12:28 ) [6]

структура dbf важна? Или пофиг какой ее сделает Excel?


Anatoly Podgoretsky © ( 2005-07-05 12:34 ) [7]

Ну еще в первом посте указано «(стандартно из Excel не подходит, по причине неграммотности пользователей).» — значит не важна, да и откуда другая возьмется («Конвертация Excel в dbf«). Вроде бы все условия четко указаны.


evvcom © ( 2005-07-05 12:51 ) [8]

Ну пусть будет так. Я не уловил в тексте знания автором факта того, на что я пытался его натолкнуть.


Anatoly Podgoretsky © ( 2005-07-05 13:24 ) [9]

evvcom © (05.07.05 12:51) [8]
А вот здесь ты прав.


onics ( 2005-07-05 14:17 ) [10]

2evvcom Структура dbf уже определена, по ней вопросов нет. Файл Excel формируется из бух.программы и его структура тоже определена с учетом структуры dbf. При стандартном сохранении Excel формирует необходимую ст-ру dbf.
2 Anatoly Podgoretsky Спасибо, через OLE действительно просто, почти реализовал тестовый прогон.
2 All Если возможно, просветите по поводу подключения через ADO, для общего развития.
Спасибо.


Anatoly Podgoretsky © ( 2005-07-05 14:24 ) [11]

onics (05.07.05 14:17) [10]
Через АДО подключаешь к экселю как к базе/таблицы и применяешь стандартные средства. Файл dbf в этом случае не используется, прямое чтение с листа Экселя.


onics ( 2005-07-05 14:30 ) [12]

2 Anatoly Podgoretsky А в качестве Provider что выбирать?


Anatoly Podgoretsky © ( 2005-07-05 14:40 ) [13]

onics (05.07.05 14:30) [12]
Не помню, давно не использовал. Но ты посмотри пример в демос AdoTest там можно потренироваться и там есть выбор провайдера.


onics ( 2005-07-05 15:31 ) [14]

Спасибо, задача решена.
Если кому понадобиться, вот текст тестового прогона.

****
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComObj, Buttons;
var
Excel, sht:variant;
*****
Excel:=CreateOleObject(«Excel.Application»);
Excel.Workbooks.Open(«d:test.xls»);
Excel.Visible := false;
sht := Excel.ActiveSheet;
sht.Columns[«B:D»].Select;
Excel.ActiveWorkbook.SaveAs(«d:test.dbf», 11, false, false, false, false);
Excel.ActiveWorkbook.Close(SaveChanges:=False);
***
if not VarIsEmpty(sht) then begin
VarClear(sht);
end;
if not VarIsEmpty(Excel) then begin
Excel.Quit;
VarClear(Excel);
end;


Doctor Deejay ( 2005-07-08 11:39 ) [15]

Ссылка на основную публикацию
Adblock
detector