Мануал по работе с XlsToDBF ver1.xx
На самом деле, всё не так сложно. Чтобы надстройка поняла, что от неё требуется и создала ожидаемый DBF-файл, необходимо задать тип, размер, имена полей для конечного DBF-файла, а также его название. Надстройка распознаёт четыре формата полей dBASE: Character (Cnnn), Numeric (Nnn или Nnn.n), Date (D) и Logical (L), т.е такие поля как General, Memo, Currency и т.д. в конечном файле она создать не сумеет. Собственно, родной конвертер предыдущих версий Excel имел такое же ограничение. Рассмотрим пример (файл Price.xls из архива, Лист: Price). Предположим, что существует таблица, которую необходимо сохранить в DBF-файле. В конечном DBF-файле мы хотим, чтобы:
Также мы хотим конечный 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 за точкой. Для наглядности пример. Так хранится в DBF-файле число 630.75 в поле с форматом N14.2: Третья строка описывает наименование полей (максимально 10 символов). Я думаю, больше комментировать здесь нечего. Начиная с четвёртой строки и до конца непрерывной области, располагаются данные. Желательно, чтобы данные соответствовали заданному типу. Красным цветом я отметил те поля, в которых значения не могут быть корректно преобразованы. В таких случаях надстройка задаёт им значения по умолчанию. Например, значение ДА не может быть преобразовано к логическому типу. Поэтому в конечном DBF-файле это поле будет иметь значение FALSE (F). В данном примере то же самое произойдёт и с датами, помеченными красным цветом (в DBF-файле они будут пустые). Запуск макроса надстройки После того, как мы подготовили данные для выгрузки, можно запустить макрос надстройки. Для этого нужно выделить любую ячейку в области данных или заголовка и нажать <Alt+F8>. В диалоговом окне «Макрос» в поле «Имя макроса:» нужно ввести XlsToDBF (регистр не имеет значения) и нажать кнопку <Выполнить>. Если на предыдущем этапе всё сделано верно, то DBF-файл будет сохранён с именем PRICE.DBF в той же папке, где расположена исходная книга Excel. В случае если книга новая и не сохранена, то DBF-файл будет сохранён в папке по умолчанию (скорее всего в папке «Мои документы»). Будьте внимательны: при повторном запуске макроса DBF-файл будет переписан без каких-либо предупреждений. Вот так выглядит созданный файл PRICE.DBF, открытый в среде FoxPro 2.6: В открытом диалоге «Setup» видно, что все поля отформатированы так, как мы и ожидали. Если работа надстройки устраивает, и Вы предполагаете часто её использовать, то для удобства создайте пользовательскую кнопку на ленте и назначьте ей макрос XlsToDBF. В заключение Для тех, кто интересуется программированием на VBA. Код макроса открыт и достаточно прост, можете посмотреть. Исходя из табличных данных, макрос создаёт файл DBF-формата. Для большего понимания, что происходит в программе, необходимо разобраться со структурой DBF-файлов. Посмотреть описание структуры DBF-файла можно здесь. Будут идеи или вопросы, пишите здесь в комментариях! Для личного общения заходите на страницу «Контакты». Буду рад вашим отзывам, замечаниям, предложениям! | |
Добавлять комментарии могут только зарегистрированные пользователи с подтверждённым E-Mail адресом.
| |||||