powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Office2007
3 сообщений из 3, страница 1 из 1
Office2007
    #34530459
BMJ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
BMJ
Гость
Нажил себе гемморой, но не в том месте где положено, а на голову: поставил MSO 2007 и пошли нестыковки, ранее MSO 2003 сохранялось и в DBF и книга 95-2002, этот (новый) не экспортирует в DBF, его формат не понимает VFP, а вариант сохранения из старых 95 (не подходит потеря оформления ) есть тип 95-2003 но и его не понимает фокс. Может что присоветуете?
Прилагаю варианты файлов из 2007 в родном для него формате -xlsx и 95-2003 xls.
При попытке аппенд дает ошибку (прилагается)
...
Рейтинг: 0 / 0
Office2007
    #34530476
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно по этой причине - снес 2007 нафиг.
Так что если кто его "победил" - напишите
...
Рейтинг: 0 / 0
Office2007
    #34530510
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то типа такого (через COM):

Код: 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.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
SET STEP ON 

cAsc=[ABCDEFGHIJKLMNOPQRSTUVWXYZ] &&& to convert # int letters :-)

#INCLUDE excel10.h	
#define LF CHR( 13 )+CHR( 10 )


LOCAL oExcel as Excel.Application && to make intellisense happy
lcFileName=[c:\vapps\vcpr3\temp\xxx.xlsx]

oExcel=CREATEOBJECT("Excel.Application")
oExcel.visible= .T.
oExcel.DisplayAlerts = .F.

oW=oExcel.Workbooks.Open(lcFileName)
* select sheet  3 
ow.Worksheets[ 3 ].select



nRows	= oExcel.ActiveSheet.UsedRange.Rows.Count
nCols	= oExcel.ActiveSheet.UsedRange.Columns.Count

cLastCol=substr(cAsc,nCols, 1 ) &&& there are more sophisticated ways for wider sheets then A-Z
xx= [create cursor cc1 (]

FOR I =  1  TO nCols
	xx = xx + "F"+TRANSFORM(m.i)+" C(50),"
ENDFOR
xx=LEFT(xx,LEN(xx)- 1 )+[)]
&& create a cursor
&xx 

&& get the range
oRange = oExcel.ActiveSheet.Range("A1:" + cLastCol+TRANSFORM(nRows)  )
* fetch teh data into an array
la1=oRange.value 

SELECT cc1
APPEND FROM ARRAY la1
BROWSE 
тынц

Вариант через ODBC:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
lcFile = GETFILE([XLSX])
IF EMPTY(lcFile)
   RETURN
ENDIF
lcFoder = JUSTPATH(lcFile)

TEXT TO lcConnString NOSHOW PRETEXT  15  TEXTMERGE
     DRIVER=Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb);
     UID=admin;
     FIL=excel  12 . 0 ;
     DriverId= 1046 ;
     DefaultDir=<<lcFoder >>;
     DBQ=<<lcFile>>
ENDTEXT

lnSQL = SQLSTRINGCONNECT(lcConnString)
SQLEXEC(lnSQL,"SELECT * FROM [sheet1$]",[aaaa])
SQLDISCONNECT( 0 )
SELECT aaaa
BROWSE NORMAL
Были советы там-же через OLE DB Provider...
Код: plaintext
Provider=Microsoft.ACE.OLEDB. 12 . 0 ;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0;HDR=YES";
тынц
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Office2007
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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