Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Ошибка формата из xls (2003) в dbf (vfp9) / 15 сообщений из 15, страница 1 из 1
16.04.2010, 11:36
    #36582033
Kochegra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка формата из xls (2003) в dbf (vfp9)
Уважаемые коллеги! Подскажите, есть ли выход из следующей ситуации.
Смысл такой. Некая организация шлет нам запросы в екселевских таблицах. Шлет не по одному файлу, а в архиве их может быть достаточно. Я состряпал небольшую програмульку на 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
16.04.2010, 12:09
    #36582132
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка формата из xls (2003) в dbf (vfp9)
Kochegra,

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

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

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

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

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

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

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

не о том

вот так

Код: plaintext
1.
kreved=createobject("Excel.Application")
kreved.workbooks.open("X:\medved.xls")
...
Рейтинг: 0 / 0
20.04.2010, 12:26
    #36587304
Kochegra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка формата из xls (2003) в dbf (vfp9)
Наконец то появилось время. Все сделал. ТОлько последнее осталось. Не подскажите как в фоксе сохранить теперьоткрытый ексел с преобразованиями. Т.е. у меня ексел открывается, команды преобразования в формат текстовый выполняется. Осталось только автоматом сохранить и закрыть ексель. Подскажите как можно это сделать?
...
Рейтинг: 0 / 0
20.04.2010, 12:36
    #36587348
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка формата из xls (2003) в dbf (vfp9)
Код: 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
20.04.2010, 13:10
    #36587510
Kochegra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка формата из xls (2003) в dbf (vfp9)
Спасибо! Все классно!
...
Рейтинг: 0 / 0
23.04.2010, 09:30
    #36593898
Kochegra
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка формата из xls (2003) в dbf (vfp9)
Товарищи! Есть еще такой минус.
Делаю:
Экспортирую в эксел
Код: 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
23.04.2010, 10:54
    #36594097
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка формата из xls (2003) в dbf (vfp9)
Код: plaintext
1.
2.
3.
4.
    
ActiveWorkbook.SaveAs Filename:="C:\Книга1.xls", FileFormat:=xlExcel9795, _
        Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False

тыдынц

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

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

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


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