|
VFP 愛用者社區 本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
|
上一篇主題 :: 下一篇主題 |
發表人 |
內容 |
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 文章: 2158
第 2 樓
|
|
回頂端 |
|
|
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 文章: 4214 來自: Taipei,Taiwan
第 5 樓
|
發表於: 星期二 十月 16, 2018 10:15 pm 文章主題: |
|
|
我的習慣是
如果是一次性的轉檔,那就先手動整理成比較好匯入的型式.
如果是多次性的,那就請使用者先整理,以後也必須照同樣方式整理.
如果就是不能整理,那就最好不要做. Orz
如果必須做,先轉成中間的cursor,再整理成最後的table _________________ 如果公司有下列困擾:
1. 找不到便宜,快速,簡易的 生產排程軟體
2. 不知道如何快速排定 採購計劃
3. 成本抓不準,自己算比軟體算有用
4. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
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 文章: 4214 來自: 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. 想學習系統規劃,想找系統架構的顧問
請聯絡我們,也許我們幫得上忙 |
|
回頂端 |
|
|
lygcw9603
註冊時間: 2011-12-25 文章: 129
第 9 樓
|
發表於: 星期五 十月 19, 2018 4:36 pm 文章主題: |
|
|
這個簡單啊,在EXCEL中利用數組轉換為DBF |
|
回頂端 |
|
|
|
|
您 無法 在這個版面發表文章 您 無法 在這個版面回覆文章 您 無法 在這個版面編輯文章 您 無法 在這個版面刪除文章 您 無法 在這個版面進行投票 您 無法 在這個版面附加檔案 您 無法 在這個版面下載檔案
|
|