Re: замена команды Import from xls | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Вам показали как можно работать с excel через его АПИ - в предложенном примере записываются данные в ячейки, если же заменить строчку внутри цикла на
Это не самый быстрый и оптимальный способ (особенно топорен способ формирования адреса ячейки, т.к. куда как логичнее выглядело бы XLSheet.Cells(m.lnPer, 1).Value), но для начала разберитесь с ним, а потом поиск по форуму - есть масса примеров, в т.ч. и то как быстро можно забирать из экселя целые блоки данных (в фоксовый массив). ------------------ WBR, Igor |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Спасибо за помощь.
Но прежде чем перейти к другим примерам, хотелось бы разобраться почему часть данных считывается, а часть нет. Что же это за избирательность такая? При том, что считывание чисто числовых столбцов и чисто символьных выполняется отлично. |
Re: замена команды Import from xls | |
---|---|
Владимир Максимов Сообщений: 14098 Откуда: Москва Дата регистрации: 02.09.2000 |
У таблицы DBF одно поле (один столбец) может содержать данные только одного типа. Например, только символьные. Или только числовые. Если Вы работаете с листом Excel как с таблицей DBF, то вынуждены считаться с этим ограничением. Как следствие, адекватно прочитаны будут только те данные тип которых совпадает с типом данных соответствующего поля полученной таблицы. Остальные вернут NULL. |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Спасибо, это понятно.
Тогда скажите, а как прочитать данные из Эксель, содержащий и символьные и числовые значения? |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
И еще вопрос: А можно ли из эксель 2007 сохранить файлы в формате Excel5.0/95?
|
Re: замена команды Import from xls | |
---|---|
WbrErr Сообщений: 1960 Дата регистрации: 05.12.2006 |
|
Re: замена команды Import from xls | |
---|---|
WbrErr Сообщений: 1960 Дата регистрации: 05.12.2006 |
Из эксель 2007 можно сохранить файлы в формате Excel5.0/95 при помощи самого эксель 2007.
|
Re: замена команды Import from xls | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Как прочитать значения ячеек листа Excel из VFP с помощью OLE вам уже показали и дали все необходимые ссылки. Если вы сохраните книгу Excel в формате Excel5.0/95, то можете преобразовать лист в таблицу командой IMPORT FROM ... TYPE XLS. При этом для колонок Excel, которые содержат символьно-числовые данные, будут созданы поля символьного типа, а числовые данные будут преобразованы в соответствующие строковые значения. Цитата:Добавлю, что для этого нужно после "Сохранить как" выбрать "Другие форматы", после чего в комбо "Тип файла" выбрать "Книга Microsoft Excel 5.0/95 (*.xls) Исправлено 1 раз(а). Последнее : akvvohinc, 13.11.11 16:45 |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Вот спасибочки огромное!
А то я дурень в эти "др. форматы" и не заглядывал! Все отлично импортировалось! и буквы и цифры! |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
А вот интересно, можно ли программно из Фокса открыть диалоговое окно, выбрать файл Эксель 97/2007, затем его программно сохранить в формате 95 и тут же импортировать?
|
Re: замена команды Import from xls | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Можно. Диалог запроса - фоксовый GETFILE(), далее создание экземпляра экселя, открытие файла - это уже всё было, и наконец SaveAs(). Будьте уж столь любезны, научитесь пользоваться ПОИСКОМ.
------------------ WBR, Igor |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Спасибо! Поиском постараюсь, конечно, научиться.
Вот только я рано еще радовался - все хорошо читается, но при длине строки не больше 35 символов.... а у меня 80. И что делать? (опять поиск, что ли? А чего искать?) |
Re: замена команды Import from xls | |
---|---|
of63 Сообщений: 25250 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
|
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Спасибо, конечно... но я сделал проще.
Т.к. у меня поле с буквами и цифрами меньше 36 символов, то я использовал оба метода и из двух таблиц сделал одну! Ессно файл в формате Эксель 95. Сначала считываю длинные символьные данные ------------------ lcFile = GETFILE() IF EMPTY(lcFile) THEN RETURN ENDIF store SQLSTRINGCONNECT(; "DRIVER={Microsoft Excel Driver (*.xls)};" + ; "FIL=Excel 97;" + ; "DefaultDir=D:\bdv1_data\;" + ; "DBQ="+lcFile); TO gn ?SQLexec(gn, 'select * from "Ëèñò1$"') =SQLDISCONNECT(0) ------------------- Потом считываю символьно-цифровые поля: ----------------------------------- SELECT bdv1kdspxls2 APPEND FROM '&lcFile' TYPE XLS &&as 1251 &&delimiter WITH TAB ну и далее столбец с символьно-цифровыми полями переписываю в первую таблИцу ---------------------- ВСЕ ОТЛИЧНО ПОЛУЧИЛОСЬ! |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Поиском аж за год ничего не нашел... в смысле SaveAs(95)? |
Re: замена команды Import from xls | |
---|---|
of63 Сообщений: 25250 Откуда: Н.Новгород Дата регистрации: 13.02.2008 |
плин, чего там не найти... когда в комадном окне отркроешь. этот ексел:
o = createobject("Application.Ecxel") и дальше: ? o. и там высвечиваются ...Вот оттуда и списал:
? VAL(m.o.Version) && под Office2007 - 12.0, ранее был 11.0 (ну, в интернете там все написано... блин, в ИЕ либое порно, там все все находят, любой вид извращений, а Excel.SaveAs - ну, не может быть сложным моментом...) (щас вынужден писать в VB6 дипломчик (там ужасный редактор текста прог, набор штантных видеообьектов крайне убогий, все надо брать из МС, исплевался, 3 недели уже пишу... а шо делать? ), так там это "ИнтелигентСервис" вполне присутствует, странно, тогда же был и VFP6, вроде, что-то я не помню, что такое удобство в ВФП было, может не заметил, ... я правда не особо замечаю новшества, консерватор...) Исправлено 8 раз(а). Последнее : of63, 13.11.11 22:15 |
Re: замена команды Import from xls | |
---|---|
akvvohinc Сообщений: 4219 Откуда: Москва Дата регистрации: 11.11.2008 |
Цитата:Не знаю, в чем у вас проблемы, так как у меня ничего подобного не происходит - отлично отрабатывает до положенного максимума (254 символов/поле). Какой версией VFP пользуетесь? Пришлите ваш xls-файл, могу попробовать импортировать его... |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Спасибо все огромное за участие.
of63 Я в Экселе и с Экселем не работаю. Только использую как промежуточное передаточное звено. В одной программе "сохранить как Эксель", а в другой "импорт Эксель". Бывает, если проект сырой, то перед импортом в Экселе просматриваю, где чего не хватает. Поэтому никогда не разбирался как там куда обращаться. akvvohinc Фокс у меня 9-ый. Если делаю "сохранить как текст" и потом в фоксе "импорт текст" - все работает с писком. Без ограничений и проблем. Но для некоторых товарищей нужно сделать и импорт из Эеселя - вот и парюсь! И Эксель у них 2007-ой. Так что надо программно и пересохранить и импортировать. Времени разбираться самому нет и не будет. И так вечерами и в субботу приходится работать. А на Фоксе себе делаю вспомогательную базу, а то голова кругом уже идет. Думаю покопаться в SET установках.... |
Re: замена команды Import from xls | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ну так пересохраните в формате текстового файла (их несколько разных видов в экселе есть, CSV например) и не парьтесь ни с ODBC драйвером, ни с TYPE XLS.
Вообще если на принимающей стороне заведомо есть эксель (а иначе чем же "конвертировать"), то может оказаться проще напрямую из него и читать - открыть книжку, потом
------------------ WBR, Igor |
Re: замена команды Import from xls | |
---|---|
Olegv Сообщений: 69 Откуда: Санкт-Петербург Дата регистрации: 29.11.2007 |
Ну так я и хочу пересохранить... но в ответ на
lcFile = GETFILE() IF EMPTY(lcFile) THEN RETURN ENDIF LOCAL XLApp, XLSheet, lnPer XLApp = GETOBJECT('', 'excel.application') XLApp.VISIBLE= .F. XLApp.WorkBooks.ADD(lcFile) XLApp.ActiveWindow.WINDOWSTATE = 2 .ActiveWorkbook.SaveAs Filename:="lcFile", FileFormat:=xlExcel9795,; Password:="", WriteResPassword:="", ReadOnlyRecommended:=False,; CreateBackup:=False мне пишут "неверный синтаксис"... |
© 2000-2024 Fox Club  |