VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

如何將多分頁的XLSX文件轉為DBF格式

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
ufochen



註冊時間: 2003-09-17
文章: 165


第 1 樓

發表發表於: 星期二 十月 16, 2018 3:03 am    文章主題: 如何將多分頁的XLSX文件轉為DBF格式 引言回覆

附圖 B、G 是歌號,D、I是歌名,E、J是演唱者
請問這種格式(XLSX)的文件要如何轉成有3個欄位(歌號、歌名、演唱者)的DBF文件
要所有分頁的歌號、歌名、演唱者都轉成同一個DBF文件
請幫忙一下,謝謝!!
回頂端
檢視會員個人資料 發送私人訊息
garfield
Site Admin


註冊時間: 2003-01-30
文章: 2157


第 2 樓

發表發表於: 星期二 十月 16, 2018 10:13 am    文章主題: 引言回覆

參考這篇
http://vfp.sunyear.com.tw/viewtopic.php?t=5872&highlight=excel+oledb

_________________
利用>>搜尋<<的功能會比問的還要快得到答案.
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
CPS0204



註冊時間: 2014-08-24
文章: 441


第 3 樓

發表發表於: 星期二 十月 16, 2018 4:58 pm    文章主題: 引言回覆

使用 程式及迴圈,將資料一筆一筆讀出來,然後寫到DBF中

FNAME1=GETFILE('XLS;XLSX','SOURCE')

EOLE=CREATEOBJECT("Excel.application")
EOLE.WORKBOOKS.OPEN(FNAME1)
*EOLE=EOLE.WORKBOOKS(1).SHEETS(3)
J=1

FOR I=2 TO 300
J=I
E03= EOLE.CELLS(J,3).VALUE
...
...
...

NEXT
回圈數則請先判斷一次:
J=1
DO WHILE .T.

IF !EMPTY(EOLE.CELLS(J,1).VALUE) OR !EMPTY(EOLE.CELLS(J,2).VALUE)
J=J+1
ELSE
EXIT
ENDIF
ENDDO

則可算出每欄的最大筆數!再套用上述的迴圈讀資料進DBF


CPS0204 在 星期二 十月 16, 2018 6:41 pm 作了第 3 次修改
回頂端
檢視會員個人資料 發送私人訊息
ufochen



註冊時間: 2003-09-17
文章: 165


第 4 樓

發表發表於: 星期二 十月 16, 2018 5:32 pm    文章主題: 引言回覆

CPS0204 寫到:
使用 程式及迴圈,將資料一筆一筆讀出來,然後寫到DBF中

FNAME1=GETFILE('XLS;XLSX','SOURCE')

EOLE=CREATEOBJECT("Excel.application")
EOLE.WORKBOOKS.OPEN(FNAME1)
*EOLE=EOLE.WORKBOOKS(1).SHEETS(3)
J=1

FOR I=2 TO 300
J=I
E03= EOLE.CELLS(J,3).VALUE
...
...
...
next i

謝謝您提供這個方法...
由於每個Sheet 的資料筆數都不一樣,例如國語歌曲Sheet 有一萬多筆而宗教歌曲Sheet
只有十幾筆,用For 迴圈似乎不可行 ...
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 5 樓

發表發表於: 星期二 十月 16, 2018 10:15 pm    文章主題: 引言回覆

我的習慣是

如果是一次性的轉檔,那就先手動整理成比較好匯入的型式.

如果是多次性的,那就請使用者先整理,以後也必須照同樣方式整理.

如果就是不能整理,那就最好不要做. Orz

如果必須做,先轉成中間的cursor,再整理成最後的table

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
violetlkk



註冊時間: 2003-06-21
文章: 82
來自: kaohsiung

第 6 樓

發表發表於: 星期三 十月 17, 2018 2:05 am    文章主題: 引言回覆

這個 excel 檔 看起來不複雜呀
1. 就使用 3樓 的方式來讀取
2. 用歌號來判斷, 一直往下讀取
3. 這個excel的歌號應該是一行有,一行沒有
4. 作個判斷 , 當超過n行讀不到歌號 , 就表示到尾巴了
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件
perry



註冊時間: 2014-07-20
文章: 203


第 7 樓

發表發表於: 星期三 十月 17, 2018 8:40 am    文章主題: 引言回覆

j=xlapp.workbooks(1).sheets.count
for i=1 to j
j1=xlapp.workbooks(1).sheets(i).usedrange.rows.count &&各試算表使用列數
for i1=1 to j1
. 判斷直欄值,有則新增至dbf
.
next
next
回頂端
檢視會員個人資料 發送私人訊息
syntech



註冊時間: 2003-05-16
文章: 4211
來自: Taipei,Taiwan

第 8 樓

發表發表於: 星期三 十月 17, 2018 3:29 pm    文章主題: 引言回覆

1. ODBC 開CURSOR
2. COPY TO A_PART FIELDS B~E FOR !EMPTY(ALLTRIM(B))
3. COPY TO B_PART FIELDS G~J FOR !EMPTY(ALLTRIM(G))
4. USE MY_TABLE
5. APPEND FROM A_PART
6. APPEND FROM B_PART


----
Old School ~~~~~

_________________
如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問

請聯絡我們,也許我們幫得上忙
回頂端
檢視會員個人資料 發送私人訊息 發送電子郵件 AIM Address
lygcw9603



註冊時間: 2011-12-25
文章: 126


第 9 樓

發表發表於: 星期五 十月 19, 2018 4:36 pm    文章主題: 引言回覆

這個簡單啊,在EXCEL中利用數組轉換為DBF
回頂端
檢視會員個人資料 發送私人訊息
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作