powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Ошибка формата из xls (2003) в dbf (vfp9)
15 сообщений из 15, страница 1 из 1
Ошибка формата из xls (2003) в dbf (vfp9)
    #36582033
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые коллеги! Подскажите, есть ли выход из следующей ситуации.
Смысл такой. Некая организация шлет нам запросы в екселевских таблицах. Шлет не по одному файлу, а в архиве их может быть достаточно. Я состряпал небольшую програмульку на vfp9, которая обрабатывает эти файлы. Т.е. алгоритм следующий: по очереди екселевские таблички закидываются в dbf, далее инфа обрабатывается и кидается обратно в есел (не в тот же, а новый). Все работает прекрасно, но есть одно НО!!!
Обязательно из всего списка присланных экселевских файлов найдутся несколько файликов (примерно как 6 из 36), которые при операции APPEND FROM либо IMPORT ругаются на кривой формат xls-файла. Обычно я захожу в этот xls-файл и заменяю например символ * в таблице либо на пусто либо на " (т.е. какая то беда со спец символами). После этого обрабатывается файл нормально. Но ведь конечному пользователю нужно, чтобы такого не было (особенно когда запросы обрабатывает начальник отдела (не очень дружащий с ПК и разными ПО)).
Для примера вложил архив:
2.xls - кривой запрос (присутствуют *)
1.xls - тот же самый запрос, но убраны все *.
tab.prg - для того чтобы не тратить время создание таблички.
temp.prg - собственно примеры применяемых комманд APPEND FROM и IMPORT

Может кто то сталкивался с данной проблеммой и подскажет как можно обойти проблему.
VFP9, MS Office 2003
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36582132
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kochegra,

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

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

В-третьих. Несмотря на все предусморенные меры, все равно найдется таблица, не подходящая под программу. Если возможно, пусть изготовитель таблиц тоже последит за их наполнением, например, при помощи тех же фоксовых программ, выдающих ошибки, если в таблице есть спецсимволы.
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36582138
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbikПеред каждым импортом нужно прописать форматы ячеек в столбцах каждой Эксель-таблицы, например, как текстовый.Имеется ввиду в фоксовой программе, а не вручную. Делается это через Эксель-макросы, в форуме об этом писалось.
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36582173
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу 3-го. В том то и дело, пробовал разговаривать, говорят итак всем пошли на встречу (не только нам шлют, но и другим организациям, а их в городе достаточно), и типа выбрали оптимальный вариант ексель - как файл обмена. Хотя по мне, так лучше бы либо текстовы либо dbf сразу. В общем гос структура, че хотят, то и делают, остальное как хотите :-)

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

по первому. В экселе можно поиском * найти. Тока при поиске надо не * писать, а ~*.
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36582177
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbikigorbikПеред каждым импортом нужно прописать форматы ячеек в столбцах каждой Эксель-таблицы, например, как текстовый.Имеется ввиду в фоксовой программе, а не вручную. Делается это через Эксель-макросы, в форуме об этом писалось.

Думал в эту сторону посмотреть. Попробую поискать.
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36583592
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел статейку по переводу макросов в фокс.
В целом смыл понятен. Но в примере создается новый файл екселя (CREATEOBJET).
А как открыть существующий? Не подскажете?
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36583648
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kochegra,

GETOBJECT()
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36583710
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
igorbik,

не о том

вот так

Код: plaintext
1.
kreved=createobject("Excel.Application")
kreved.workbooks.open("X:\medved.xls")
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36587304
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наконец то появилось время. Все сделал. ТОлько последнее осталось. Не подскажите как в фоксе сохранить теперьоткрытый ексел с преобразованиями. Т.е. у меня ексел открывается, команды преобразования в формат текстовый выполняется. Осталось только автоматом сохранить и закрыть ексель. Подскажите как можно это сделать?
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36587348
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Local loExcel
loExcel=createobject("Excel.Application")
With loExcel
	.workbooks.open("c:\maint.xls")
	* .....
	.ActiveWorkbook.SaveAs("c:\maint2.xls")
	.ActiveWorkbook.close(.f.)
EndWith 
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36587510
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Все классно!
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36593898
Kochegra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи! Есть еще такой минус.
Делаю:
Экспортирую в эксел
Код: plaintext
export to &d_pc2 type XLS
Далее обрабатываю этот эксель переводом макросов экселя в фоксе

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
LOCAL loExcel as Excel.Application
loExcel=CREATEOBJECT('Excel.Application')
LOCAL loBook as Excel.Workbook
loBook = m.loExcel.workbooks.open('C:\FSSP\out\tmp\&stxt')
LOCAL loSheet as Excel.Worksheet
loSheet = m.loBook.Sheets( 1 )

#DEFINE xlCenter - 4108 
FOR i= 1  TO  14 
m.loSheet.Cells( 2 ,i).ClearContents
LOCAL loUnion
loUnion = m.loExcel.UNION(m.loSheet.Cells( 1 ,i),m.loSheet.Cells( 2 ,i))
WITH loUnion
	m.loUnion.MergeCells = .T.
	m.loUnion.HorizontalAlignment = xlCenter
	m.loUnion.VerticalAlignment = xlCenter
	m.loUnion.WrapText = .T.
ENDWITH 
ENDFOR 
... и т.д. и т.п
После сохраняю как ...
Код: plaintext
1.
m.loExcel.ActiveWorkbook.SaveAs('C:\FSSP\out\&stxt')
m.loExcel.ActiveWorkbook.close(.t.)

После этого сообщение (в прикрепленном файле)
"Файл такойто является Микрософт ексел 2.1. Обновить формат ексель?"
Можно ли сделать так, чтобы либо автоматом обновлял (говорил ДА), либо может как то по другому экспортировать?
Что скажете.
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36594097
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
    
ActiveWorkbook.SaveAs Filename:="C:\Книга1.xls", FileFormat:=xlExcel9795, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False

тыдынц

это я к тому, что у SaveAs куча параметров
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36594108
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДалее обрабатываю этот эксель переводом макросов экселя в фоксе

макросы можно не переводить,
а прилепить к открытому файлику и тупо выполнить
самим-же ёкселем,
будет и шустрее и мозг не нужно ломать,
до опред.момента удовлетворения желаний
очень просто макросы записываются в самом ёкселе методом
жмакания мышом,
поэтому проще ети-же макросы и натравливать
на какие-то копии подобных ф-ков.
...
Рейтинг: 0 / 0
Ошибка формата из xls (2003) в dbf (vfp9)
    #36595883
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Kochegra,

у екселя есть свойство DisplayAlerts. Если его поставить в .F. то спрашивать ничего не будет, а будет делать что говорят, потом нужно не забывать поставить в .T., а то спрашивать совсем перестанет :)
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Ошибка формата из xls (2003) в dbf (vfp9)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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