Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Office2007 / 3 сообщений из 3, страница 1 из 1
16.05.2007, 18:40
    #34530459
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Office2007
Нажил себе гемморой, но не в том месте где положено, а на голову: поставил MSO 2007 и пошли нестыковки, ранее MSO 2003 сохранялось и в DBF и книга 95-2002, этот (новый) не экспортирует в DBF, его формат не понимает VFP, а вариант сохранения из старых 95 (не подходит потеря оформления ) есть тип 95-2003 но и его не понимает фокс. Может что присоветуете?
Прилагаю варианты файлов из 2007 в родном для него формате -xlsx и 95-2003 xls.
При попытке аппенд дает ошибку (прилагается)
...
Рейтинг: 0 / 0
16.05.2007, 18:46
    #34530476
-=AlexiS=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Office2007
Именно по этой причине - снес 2007 нафиг.
Так что если кто его "победил" - напишите
...
Рейтинг: 0 / 0
16.05.2007, 19:02
    #34530510
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Office2007
Что-то типа такого (через 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
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Office2007 / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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