:: Visual Foxpro, Foxpro for DOS
Re: Импорт из Excel 2007 и новее
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Если предполагается наличие на машине Excel, то зачем парится со всякими импортами-экспортами-ODBC и их ограничениями/особенностями, если можно (достаточно быстро) банально обратится к данным через ту-же автоматизацию.
loXL = CREATEOBJECT("Excel.Application")
loWB = loXL.Workbooks.Open(...)
LOCAL laData(1,1)
WITH loWB.Sheets(1)
laData = .Range(.Cells(1,1), .Cells(10, 20)).Value && Размер "забираемого" блока можно подогнать как надо
ENDWITH
DISPLAY MEMORY LIKE laData
...


------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Импорт из Excel 2007 и новее
saya15

Сообщений: 1
Дата регистрации: 10.05.2009
Дополнение к итогам изысканий:
командой IMPORT FROM.... (аналогично через мастер и пункт в меню) файлы созданные в Excel 2010, даже сохраненные с расширением *.xls (не говоря уже о *.xlsx) Foxpro не понимает: "Microsoft Excel file format is invalid".
Но: открываю файл через Excel-2003, копирую (перемещаю) все листы в новую книгу и сохраняю: теперь Foxpro понимает.
хотя: был случай - большой файл- ок.30 листов (много информации) все равно не читался "Microsoft Excel file format is invalid". Оказалось- виноват один из листов, создал чистый с тем же именем и вручную скопировал содержание: помогло.
Ratings: 0 negative/0 positive
Re: Импорт из Excel 2007 и новее
Александр Жевелев
Автор

Сообщений: 2723
Откуда: Новосибирск
Дата регистрации: 09.10.2003
Всегда держу на заметке этот пример (автор указан в комментариях):
*-----------------------------------
* AUTHOR: Trevor Hancock
*support.microsoft.com
* CREATED: 02/15/08 04:55:31 PM
* ABSTRACT: Code demonstrates how to connect to
* and extract data from an Excel 2007 Workbook
* using the "Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
* from the 2007 Office System Driver: Data Connectivity Components
*ссылка (http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en)
*-----------------------------------
*SET STEP ON
LOCAL lcXLBook AS STRING, lnSQLHand AS INTEGER, ;
lcSQLCmd AS STRING, lnSuccess AS INTEGER, ;
lcConnstr AS STRING
CLEAR
lcXLBook = [C:\ex1.xlsx]
lcConnstr = [Driver=] + ;
[{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] + ;
[DBQ=] + lcXLBook
IF !FILE( lcXLBook )
? [Excel file not found]
RETURN .F.
ENDIF
*-- Attempt a connection to the .XLSX WorkBook.
*-- NOTE: If the specified workbook is not found,
*-- it will be created by this driver! You cannot rely on a
*-- connection failure - it will never fail. Ergo, success
*-- is not checked here. Used FILE() instead.
lnSQLHand = SQLSTRINGCONNECT( lcConnstr )
*-- Connect successful if we are here. Extract data...
lcSQLCmd = [Select * FROM "Sheet1$"]
lnSuccess = SQLEXEC( lnSQLHand, lcSQLCmd, [xlResults] )
? [SQL Cmd Success:], IIF( lnSuccess > 0, 'Good!', 'Failed' )
IF lnSuccess < 0
LOCAL ARRAY laErr[1]
AERROR( laErr )
? laErr(3)
SQLDISCONNECT( lnSQLHand )
RETURN .F.
ENDIF
*-- Show the results
SELECT xlResults
BROWSE NOWAIT
SQLDISCONNECT( lnSQLHand )
Ratings: 0 negative/0 positive
Re: Импорт из Excel 2007 и новее
Влад Колосов

Сообщений: 22664
Откуда: Ростов-на-Дону
Дата регистрации: 05.05.2005
CSV - это comma separated values, т.е. "значения, отделённые запятыми". Все остальные разделители - это не CSV.


------------------
Совершенство - это не тогда, когда нельзя
ничего прибавить, а тогда, когда нечего убавить.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 24 (Гостей: 24)

© 2000-2024 Fox Club 
Яндекс.Метрика