線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3200
推到 Plurk!
推到 Facebook!

讀取Excel檔,資料型態問題

答題得分者是:max5020
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-05-25 14:31:26 IP:61.218.xxx.xxx 訂閱
找了幾篇相關討論文章
http://delphi.ktop.com.tw/board.php?cid=168&fid=918&tid=93152
http://delphi.ktop.com.tw/board.php?cid=30&fid=66&tid=58951
只是連線設定加上IMEX=1即可

但實際執行上發現
在前面8筆資料(excel 2~9列)中,其中一筆資料型態是文字
該欄位才會以文字型態讀取
請問一下,有方法可以在前面8筆資料都不是文字型態強制以文字型態讀取嗎???

1.xls,後面文字型態會出現空白
2.xls,因為A8那列資料為文字型態,所以全部資料都有捉出來
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
編輯記錄
jackiemi2_seed 重新編輯於 2009-06-01 09:00:46, 註解 無‧
max5020
資深會員


發表:30
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-05-25 14:41:30 IP:59.120.xxx.xxx 訂閱
我都是乖乖的開啟EXCEL,
一筆一筆讀資料

[code delphi]
procedure TfmStk029.XLS2Price1(const sFileName: String);
var j: Integer;
ExcelAP, ExcelWB: Variant;
s: String;
begin
try
ExcelAP:= CreateOleObject('Excel.Application');
ExcelWB:= ExcelAP.WorkBooks.OPEN(sFileName);
ExcelAP.Worksheets[1].Select;
// Append Data from Excel
DataSet_Detail.DisableControls;
j:= 1;
repeat
j:= j 1;
DataSet_Detail.Append;
DataSet_Detail.FieldByName('prc1s_partNo').asString:= ExcelAP.Cells[j, 1].Value;
DataSet_Detail.FieldByName('prc1s_new').asFloat:= ExcelAP.Cells[j, 2].Value;
DataSet_Detail.Post;
s:= ExcelAP.Cells[j 1, 1].Value;
until ( s = '');
finally
ExcelAP.Quit;
end;
DataSet_Detail.First;
DataSet_Detail.EnableControls;
end;

[/code]
ycl2005
一般會員


發表:15
回覆:14
積分:5
註冊:2005-10-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-05-26 16:32:00 IP:211.75.xxx.xxx 訂閱
好奇試了一下你的程式, 果然會留空白, 由於這台PC(甲)沒有安裝DELPHI, 所以就把程式COPY到另一台PC(乙),想說看看source code,
在看之前又再測試一次, 結果這台PC測出來的結果, 不管1.xls 或2.xls 都不會有空白, 因為太有意思就繼續查原因.
最後得出一個結果供你參考.

PC(甲) 資料來源(ODBC)裡 ODBCJT32.DLL 的版本是4.00.6304.00 =====> 這個RUN出來的結果有空白.
PC(乙) 資料來源(ODBC)裡 ODBCJT32.DLL 的版本是4.00.6305.00 =====> 這個RUN出來的結果皆正常.

我想應該是這個原因造成結果不同.
jackiemi2_seed
中階會員


發表:37
回覆:97
積分:76
註冊:2006-09-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-06-01 08:59:40 IP:61.218.xxx.xxx 訂閱
感謝max5020兄及ycl2005兄的回覆

照max5020兄的程式,改用一筆一筆去讀,真的可以解決問題
只是程式要重新改寫,

有關ycl2005兄提到的ODBCJT32.DLL,
目前公司是用win 2000 sp4 office 2000
我電腦的版本是4.0.6200.0
office 2000安裝檔裡的版本是4.0.3711.8
安裝新版的office搞不好有機會版本比4.00.6305.00新,
但以公司目前的狀況不太可能更新OS或office,
看來只好改程式了

因為max5020兄解決小弟目前的問題,
所以得分就給max5020兄了
但也很感謝ycl2005兄,發現ODBCJT32.DLL版本差異
導致程式執行結果有不同的結果

用ExcelAP的方式速度比OLEDB慢一點點,
如果ODBCJT32.DLL版本比4.00.6304.00新,
用OLEDB的方式就可以了
------
OS : Win 7 pro
Program : Delphi 7
DataBase : Ms Sql 2008
系統時間:2024-11-23 10:37:24
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!