powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Экспорт данных из Excel в Visual FoxPro(dbf-файл).
20 сообщений из 45, страница 2 из 2
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149408
tor_shift,
можешь еще сохранить файл Excel в формате dbf3 (если Excel 2007 не позволяет этого сделать, то сначала в формате Excel 2003, потом на другом компьютере с Excel 2003 в формате dbf3).
Файл формата dbf3 Foxpro открывает, только кодовую страницу надо указать правильную.
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149445
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Просмотрите ещё раз пожалуйста мои файлы,только мысленно как бы отбросьте эти точки(...).
Представьте что числовые значения по столбцу NUMLS повторяются(изначально так построена структура таблицы Excel,кот.нужно переконвертировать в dbf),они также повторяются и в готовой "таблице" dbf(foxpro 5.0),
но проблема с столбцом SH1 в уже преобразованной таблице dbf.
В некоторых ячейках данные неправильные.(
к примеру таблица в Excel

NUMLS NUMSH SH1 .. .. .. MESTO
.
38414 161.000
38414 145.000
.
.
38421 3.000 <<<<<<
38421 1.000 <<<<<<обратите внимание
.
.
38426 1.233



после преобразования и просмотра через Фокса:

NUMLS NUMSH SH1 .. .. .. MESTO
.
38414 161.000
38414 145.000
.
.
38421 36586.0 <<<<<<<обратите внимание
38421 36526.0 <<<<<<<
.
.
38426 1.233
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149480
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ffffffffffffffffffffffffffff,

На машине установлен excel 2007.
И проблемно будет для сотрудниц переходить на другой эксел,они не смогут.
Сделал для удобства даже кнопочку пожилым работницам для превода в dbf,а что-то пошло не так...
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149560
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте просто "тупо" сохранение данных из Excel в формате CSV. И посмотрите этот тектовый файл, что там получается.
А в FoxPro импортируйте, как показано в моём посте...
НЕ НАДО формировать таблицу Фокса средствами Excel...
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149710
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Можно так: Закинуть данные (и только данные, безо всяких описаний и заголовков) на отдельный лист, Сохранить этот лист в формате CSV. Затем Запустить Фокс, Открыть таблицу - и добавить в неё записи из текстового файла (Table-Append Record...)

Я охранил файл excel с расширением csv для Dos.
Я запустил Фокс,далее я не нахожу,указанных Вами пунктов.


Попробовал так File-->Open-->мой файл csv-->ok
Открылось окно с перечисленными записями через точку с запятой:
38414;1234522344778;161.000;;е;б
38414;5784833322333;145.000;;Ј;б
38421;16723839405064;3.000;;е;б
38421;53435465677232;1.000;;е;Є
38426;41456238594954;;;е;ў

Пробовал сделать Import-->type Microsoft Excel 5.0 and 97 (XLS)-->from мой файл csv-->ok-->
Появляется сообщение:
Microsoft Excel file format is invalid.
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149853
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor_shiftВладимирМ,

Просмотрите ещё раз пожалуйста мои файлы,только мысленно как бы отбросьте эти точки(...).
Представьте что числовые значения по столбцу NUMLS повторяются(изначально так построена структура таблицы Excel,кот.нужно переконвертировать в dbf),они также повторяются и в готовой "таблице" dbf(foxpro 5.0),
но проблема с столбцом SH1 в уже преобразованной таблице dbf.
В некоторых ячейках данные неправильные.(
к примеру таблица в Excel

NUMLS NUMSH SH1 .. .. .. MESTO
.
38414 161.000
38414 145.000
.
.
38421 3.000 <<<<<<
38421 1.000 <<<<<<обратите внимание
.
.
38426 1.233



после преобразования и просмотра через Фокса:

NUMLS NUMSH SH1 .. .. .. MESTO
.
38414 161.000
38414 145.000
.
.
38421 36586.0 <<<<<<<обратите внимание
38421 36526.0 <<<<<<<
.
.
38426 1.233

Посмотрите, все-таки, пример автора кода по преобразованию содержимого Excel в DBF. У него в примере используется в качестве символа-разделителя - запятая. Точнее, тот символ, который указан как символ-разделитель целой и дробной части в том экземпляре Excel, где Вы этот код и запускаете.

У Вас же в качестве символа разделителя выступает точка.

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

Если Вы указываете, что поле SH1 должно быть числовое, то и в Excel этот столбец должен быть отформатирован как числовой. И разделитель целой и дробной части должен быть такой же, как в Excel.

Повторю еще раз. Все проблемы связаны с тем, как данные отформатированы в самом Excel.

Если Вы сможете понять макрос Excel, то преобразованием там занимается вот этот метод

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Public Function ValToDBF(val As Variant) As String

    ' Преобразование в строку
    If DBFType = dftCharacter Then
        ValToDBF = Space(Size)
        LSet ValToDBF = CStr(val)
    End If

    ' Преобразование в дату
    If DBFType = dftDate Then
        ValToDBF = format(val, "YYYYMMDD")
    End If

    ' Преобразование в логическое значение
    If DBFType = dftLogical Then
        ValToDBF = IIf(CBool(val), "T", "F")
    End If

    ' Преобразование в числовое значение
    If DBFType = dftNumeric Then
        ValToDBF = Space(Size)
        RSet ValToDBF = Trim(format(val, "0" + IIf(Precision >  0 , "." + String(Precision, "0"), "")))
        ValToDBF = Replace(ValToDBF, ",", ".")
    End If
End Function

По сути, преобразование в числовое значение выполняет внутренняя функция Excel с именем format(). Вот у этой функции и "сносит крышу", когда она пытается преобразовать в число явную символьную строку. Во что она это преобразует, заранее сказать невозможно. Как только Вы вместо "3.00" напишете "3,00" (т.е. просто вместо точки укажите запятую), то все встает на место.

Нет, ну можно, конечно, модифицировать функцию преобразования в числовое значение следующим образом


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    ' Преобразование в числовое значение
    If DBFType = dftNumeric Then

        ' Замена не корректных символов-разделителей на текущий символ-разделитель Excel
        val = Replace(val, ",", Application.International(xlDecimalSeparator))
        val = Replace(val, ".", Application.International(xlDecimalSeparator))

        ValToDBF = Space(Size)
        RSet ValToDBF = Trim(format(val, "0" + IIf(Precision >  0 , "." + String(Precision, "0"), "")))
        ValToDBF = Replace(ValToDBF, ",", ".")
    End If

Только это до тех пор, пока вместо символа-разделителя целой и дробной части не окажется, к примеру, дефис
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149924
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor_shiftЯ охранил файл excel с расширением csv для Dos.
Я запустил Фокс,далее я не нахожу,указанных Вами пунктов.Откройте таблицу NewFile.dbf - и вы увидите появившийся пунктик меню "Table"...
А вообще, я же говорил о том, что после запуска FoxPro вам достаточно выполнить хотя бы в командном окне три строчки кода.
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149964
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot ВладимирМ]tor_shiftВладимирМ,

Нет, ну можно, конечно, модифицировать функцию преобразования в числовое значение следующим образом


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
    ' Преобразование в числовое значение
    If DBFType = dftNumeric Then

        ' Замена не корректных символов-разделителей на текущий символ-разделитель Excel
        val = Replace(val, ",", Application.International(xlDecimalSeparator))
        val = Replace(val, ".", Application.International(xlDecimalSeparator))

        ValToDBF = Space(Size)
        RSet ValToDBF = Trim(format(val, "0" + IIf(Precision >  0 , "." + String(Precision, "0"), "")))
        ValToDBF = Replace(ValToDBF, ",", ".")
    End If



Скажите пожалуйста,как можно подправить функцию ValToDBF и можно ли поставить дополнительную строку в ValToDBF:
Код: plaintext
val = Replace(val, "-", Application.International(xlDecimalSeparator))
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37149972
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Так это в командной строке нужно прописывать.
Я не сразу понял,извините
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150038
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor_shift Скажите пожалуйста,как можно подправить функцию ValToDBF и можно ли поставить дополнительную строку в ValToDBF:
Код: plaintext
val = Replace(val, "-", Application.International(xlDecimalSeparator))

А кто мешает попробовать?

Только следует иметь в виду, что данная модификация повлияет на ВСЕ поля, которые должны быть числовыми. А Вы уверены, что Вам никогда не понадобятся отрицательные числа? Как собираетесь отличать минус от дефиса, как символа-разделителя?
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150060
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Вроде работает.
А как быть к примеру с преобразованием дат,подскажите?

К примеру нужно будет добавить столбец с датами,как с ними работать?
В excel формат 04.03.2011,
а в fox'е если не ошибаюсь 04-03-2011
или не обязательно в таком формате как 04-03-2011?

Впринципе,я уже попробовал с датами типа 04.03.2011 для экселя и
переводится они на формат 04/03/2011 в foxe.
Как Вы думаете это допустимый стандарт?
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150070
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Можно ли при составлении таблицы Excel указать для позиций,расположенных под наименованием NUMSH,тип Дополнительный-->Табельный номер?
Табельный номер относится к char типу данных или всё-таки нет?
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150114
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor_shiftА как быть к примеру с преобразованием дат,подскажите?

К примеру нужно будет добавить столбец с датами,как с ними работать?
В excel формат 04.03.2011,
а в fox'е если не ошибаюсь 04-03-2011
или не обязательно в таком формате как 04-03-2011?

Впринципе,я уже попробовал с датами типа 04.03.2011 для экселя и
переводится они на формат 04/03/2011 в foxe.
Как Вы думаете это допустимый стандарт?
То, как данные хранятся "внутри" Excel или DBF, не есть то, как они отображаются.

Для начала настройте формат отображения дат в FoxPro. Это пункт меню

Tools \ Options \ закладка Regional \ в поле "Date Format" установите значение "German"

Это тот формат отображения дат, который принят у нас ДД.ММ.ГГГГ

А физический способ хранения дат в DBF-таблицах всегда один и тот же и ни от каких способов отображения не зависит.

Правильность перевода целиком и полностью на стороне Excel. Если Excel сумеет понять, что в ячейке записана дата (не важно в каком формате), то и в DBF дата попадет "как надо".

tor_shiftМожно ли при составлении таблицы Excel указать для позиций,расположенных под наименованием NUMSH,тип Дополнительный-->Табельный номер?
Табельный номер относится к char типу данных или всё-таки нет?
У Вас же есть описание как, где и что указывать в файле Excel, чтобы получился корректный файл DBF. Вот, в соответствии с инструкцией, и располагайте.

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

В Visual FoxPro подобное возможно только для таблиц, включенных в контейнер базы данных. Но данный код не предполагает создание такого контейнера.
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150122
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

я располагал как раз в соответствии с инструкцией.
Но когда я указываю в excel тип значений для NUMSH,данные меняются на 16ричный формат.
В таком формате операторы не смогут заносить данные,как же быть тогда?

Я сегодня объяснял как использовать кнопку и так скажем шапку таблицы при формировании документа dbf,много возмушения услышал))
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150137
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tor_shiftя располагал как раз в соответствии с инструкцией.
Но когда я указываю в excel тип значений для NUMSH,данные меняются на 16ричный формат.
В таком формате операторы не смогут заносить данные,как же быть тогда?
У Вас NUMSH - это текстовое поле. Вот и укажите в Excel формат столбца как "Текстовый". Потом укажите тип столбца и еще раз проверьте, что формат столбца остался "Текстовый".

Дело в том, что если формат ячейки в Excel оставлен в значении по умолчанию как "Общий", то Excel, сам, в силу своего понимания, пытается определить, какой тип данных записан в ячейке. Ну, а раз у Вас там одни цифры, вот он и предполагает, что это число. Соответственно его и конвертирует. Ну, а то, что числа отображаются в научном (16-ричный - это совсем другое) формате объясняется ограничением уже формата отображения числовых данных. В общем, в данном случае, Excel "слишком умный".

PS: Надеюсь, Вы знаете как установить формат всех ячеек одного столбца Excel? Надо щелкнуть по заголовку столбца левой клавишей мыши. После того, как столбец окажется выделенным, щелкнуть по тому же заголовку, но уже правой клавишей мыши. В открывшемся меню выбрать пункт "Формат ячейки" и выбрать "Текстовый"
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150551
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМ,

Спасибо Вам.
Всё вроде сегодня объяснил на счёт типов данных и запятых.
Файл сформировали,в главном офисе дали добро )
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150562
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM,

Спасибо за помощь.
Взял всё-таки версию Excel,тк работать с ней нужно будет оператору.
Оператор сильно привык к экселю и ему сложно будет перестроится на Фокс.
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #37150673
tor_shift
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulWist,

Я пробовал сделать Ваш вариант.
Сохранил эксел файл как Книга Excel поместил в корень С:\.
Ввёл в консоли код,указал имя файла,оставил русскую локаль,запустил на исполнение клавишей enter.
Появилось сообщение о переменной gn: variable 'GN' is not found.

Что не правильно делаю подскажите пожалуйста?
Просто хочу побольше разобраться с Фоксом.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #38797443
Лобок
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
быть умным бывает вредно.... Вот ссылка на конвертер из excel в dbf бесплатная версия преобразовывает 50 записей но если купите будет преобразов. все ) Удачи
http://www.whitetown.com/ru/xls2dbf/
...
Рейтинг: 0 / 0
Экспорт данных из Excel в Visual FoxPro(dbf-файл).
    #39074448
1c_begin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привит!!!мне надо перекинуть с одного dbf файла значение колонки IIK у иной dbf файл у колонку TIN. Как мне это сделать?
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Экспорт данных из Excel в Visual FoxPro(dbf-файл).
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]