讀取Excel檔,資料型態問題 |
答題得分者是:max5020
|
jackiemi2_seed
中階會員 發表:37 回覆:97 積分:76 註冊:2006-09-11 發送簡訊給我 |
找了幾篇相關討論文章
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 發送簡訊給我 |
我都是乖乖的開啟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 發送簡訊給我 |
好奇試了一下你的程式, 果然會留空白, 由於這台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 發送簡訊給我 |
感謝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 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |