Vấn đề khi import exel (.xlsx)

Liên hệ QC

lenongree

Thành viên tích cực
Tham gia
26/1/10
Bài viết
942
Được thích
675
Chào các anh chị trong diễn dàn GPE, em có vấn đề nhờ các anh chị giúp đỡ!!
Do đặc thu công việc của em, nên em phải thường xử lý vài trăm ngàn có khi tới cả triệu dòng dữ liệu, với dữ liệu lớn như vậy xử lý trên excel rất nặng, chậm và dễ bị treo, nên em phải chuyển dữ liệu excel sang foxpro, nhưng có vấn đề là khi em cài Excel 2013 trở xuống và Win 7 trở xuống thì import bình thường, nhưng khi em cài excel 2016 hoặc WIN 8.1, 10 thì lại không import được. Đây là code của em (code của foxpro):

LOCAL lcXLBook AS STRING, lnSQLHand AS INTEGER, ;
lcSQLCmd AS STRING, lnSuccess AS INTEGER, ;
lcConnstr AS STRING
CLEAR
SPATH=GETFILE('XLSx,xls', 'Select file', 'Select', 0, 'Select file')
lcXLBook = SPATH


lcConnstr = [Driver=] + ;
[{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] + ;
[DBQ=] +lcXLBook


IF !FILE(lcXLBook )
? [Excel file not found]
RETURN .F.
ENDIF
lnSQLHand = SQLSTRINGCONNECT( lcConnstr )
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
SELECT * FROM xlResults INTO TABLE newfile2010
SELECT newfile2010
FOR i=1 TO FCOUNT()
LOCAL ARRAY slen(i)
sfiel=ALLTRIM(FIELD(i))
SELECT newfile2010
DO CASE
CASE VARTYPE(&sfiel)='C' AND OCCURS('/',Sfiel)=2
ALTER table newfile2010 alter COLUMN &sfiel d(8)
CASE VARTYPE(&sfiel)='N'
REPLACE ALL &sfiel WITH 0 FOR ISNULL(&sfiel)
ALTER table newfile2010 alter COLUMN &sfiel n(15)
CASE VARTYPE(&sfiel)='C'
SELECT MAX(cd) slen FROM (SELECT &sfiel,LEN(&sfiel) cd FROM newfile2010) a1 INTO CURSOR a2
SELECT a2
GOTO 1
slen(i)=IIF(slen=0,1,slen)
ALTER table newfile2010 alter COLUMN &sfiel c(slen(i))
ENDCASE
SELECT newfile2010
endf
BROWSE NOWAIT
COPY TO d:\excel10
SQLDISCONNECT( lnSQLHand )


Em biết nó không kết nối được với [Driver=] + ;
[{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] nhưng không biết cách để xử lý!!!
Em không biết là excel 2016 và Win 8.1, 10 thì cái driver này có bị mất hay thay đổi vị trí không
Em không thể cài excel 2016 và Win 8.1, 10 vì nó ảnh hưởng tới công việc, mong các anh chị giúp đỡ!!
Vì có liên quan đến excel nên em đăng bài, mong các anh chị giúp đỡ!!! Em cám ơn các anh chị!!!
 
Lần chỉnh sửa cuối:
Bài ở đây có thể giúp bạn. Object này chủ yếu để thao tác trực tiếp lên file xlsx. Mình cũng chưa rõ cách dùng object này để import vào table nhưng chắc là được. Nếu cần bạn có thể nêu câu hỏi vào đó xem?
 
Nếu được thì bạn đưa lên cho mình biết với nhé. Công việc mình cũng dùng foxpro nhưng mình chỉ biết mỗi lệnh browse và quit.
 
Nếu được thì bạn đưa lên cho mình biết với nhé. Công việc mình cũng dùng foxpro nhưng mình chỉ biết mỗi lệnh browse và quit.
Cái này nó tạo ra file excel xlsx bạn ơi, chứ không tạo ra file DBF
Bạn muốn sài import file excel xlsx thi sài cái code của mình ở trên, nhưng giới hạn là excel 2013 trở xuống và win 7 trở xuống, trong các cái import mình thấy cài này là ok nhất, nhưng kẹt nỗi là nó không thể kết nối được với [Driver=[/COLOR]{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] khi cài excel 2016 và win 8.1,10
 
Lần chỉnh sửa cuối:
Híc, có anh chị bào biết cái [Driver=[/COLOR]{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] (ODBC) này không???
 
Cái này nó tạo ra file excel xlsx bạn ơi, chứ không tạo ra file DBF
Bạn muốn sài import file excel xlsx thi sài cái code của mình ở trên, nhưng giới hạn là excel 2013 trở xuống và win 7 trở xuống, trong các cái import mình thấy cài này là ok nhất, nhưng kẹt nỗi là nó không thể kết nối được với [Driver=[/COLOR]{Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};] khi cài excel 2016 và win 8.1,10
Mục đích chính của class đó để thao tác trên file xlsx trong đó có cả đọc ghi nên mình nghĩ có thể có cách đọc file xlsx để đưa vào dbf, ở trang đó có nút Leave comment để hỏi mà.
 
Web KT

Bài viết mới nhất

Back
Top Bottom