全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1359
推到 Plurk!
推到 Facebook!

請問 delphi 可以同時開啟 3 個 excel 檔案嗎 ?? ---- water

尚未結案
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-28 11:13:57 IP:61.222.xxx.xxx 未訂閱
小弟 第一次 使用 delphi 開發程式.(也是第一次開發 Windows 程式):      遇到一個難題:需要開啟3個 Excel 檔 . (假設分別=AAA.BBB.CCC)      AAA.BBB 為讀取      CCC為寫入 (如果檔案已存在.要刪除or清空)      不隻程式碼要如何下??            PS:AAA.BBB.CCC & 程式都在同一資料夾      PS:內容大概:先讀AAA.到BBB找對映資料.COPY to CCC         請各位前輩指點一下.小第先謝了      ---- water    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-28 11:43:43 IP:63.84.xxx.xxx 未訂閱
您好﹗    不知您使用何種存取方法﹖如果所有的Excel檔案皆在同一目錄﹐可參考使用BDE存取的Query元件﹒    SQL語法可較簡單地完成您提及的要求﹐前提就是記得使用提供SQL語法的資料集元件(如Query, ADOQuery) < class="code">將AAA, BBB所有內容加到CCC中﹐例﹕ begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('Insert Into CCC Select AAA.*, BBB.* From AAA, BBB'); Query1.ExecSQL; end; 將CCC所有內容清除﹐例﹕ begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('Delete From CCC'); Query1.ExecSQL; end; 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-28 11:52:22 IP:61.222.xxx.xxx 未訂閱
請問此方法可以其他電腦 沒有裝 SQL & BDE . 可以單獨執行嗎 ?? 因為我的電腦有裝 bde client . 但使用者沒有    ---- water    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-28 11:59:39 IP:63.84.xxx.xxx 未訂閱
您好﹗    若使用BDE存取﹐應需要安裝BDE﹒ 另一個方法就是使用ADO存取﹐字串連接資料庫﹐方便之處就是不需要安裝BDE了﹒    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-28 12:09:15 IP:61.222.xxx.xxx 未訂閱
thk . 請教 以下程式碼 : 不使用 DirectoryListBox1       要如何改成開啟 AAA.BBB.CCC 檔案功能 ?     var sDir, sFileName,FileName : string; MsExcel, MsExcelWorkBook : Variant; i, j, iSheet: integer; sTemp, sF_Temp,sExcelFile, sCheck, sData : String; begin   sDir := DirectoryListBox1.Directory;   sFileName := FileListBox1.Items[FileListBox1.ItemIndex];   FileName := sDir + '\'+ sFileName;   try       MsExcel := CreateOleObject('Excel.Application');       MsExcelWorkBook := MsExcel.WorkBooks.OPEN(FileName);       MsExcel.Worksheets['sheet1'].select;   except       MessageDlg('Can''t Open Excel!!',mtWarning,[mbOK],0);       Exit;   end;    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-28 12:35:04 IP:63.84.xxx.xxx 未訂閱
您好﹗    您的目的僅僅是開啟AAA,BBB,CCC這三個Excel檔案嗎﹖若僅僅是如此﹐并不需要使用到OLE Automation機制方法﹒經簡單的函數即可開啟﹕ Use ShellAPI //引用ShellAPI單元
begin
  Try
    ShellExecute(handle, 'Open', PChar('D:\AAA.xls'), Nil,
      Nil, SW_SHOWNORMAL);    
  Except
    ShowMessage('無法開啟');
  end;
end;
參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-28 13:11:49 IP:61.222.xxx.xxx 未訂閱
我把目前所需要得的程式功能說明一下:      1.把AAA檔案(實際為:工單生產排程)(大概有好幾萬筆.分別於3的SHEET)     今天的生產工單號(實際上要輸入 D1-D2 )找出來       2.把找到工單.到BBB檔案(實際為:工單詳細資料)(有好幾萬筆.10的SHEET)     把必要得欄位拷貝到CCC檔案.     同時把某些欄位資料前後加'*'拷貝到下一個欄位相同cell     設定有'*'的欄位使用 code39碼 字型      3.列印條碼user.使用excel直接開啟CCC.就可以知道要列印資料     (其他單位user視情況在修正程式功能)     ---- water       一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-11-28 13:30:00 IP:61.222.xxx.xxx 未訂閱
傳圖比較清楚    圖1:生產排程     圖2:工單明細 圖3:預計輸出檔 一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-11-28 13:38:46 IP:61.222.xxx.xxx 未訂閱
插個話,原來excel用到極致可以拿來排程 話說回來,與其跟這些excel內的資料搏鬥 或許重新系統分析後,以資料庫的模式來設計會比較可行 參考看看.... 不過...真的蠻佩服設計這些表格的人,還是這就是您設計的, 如果不是您設計的,您可以考慮把設計表格的人找來協助系統分析會比較好的唷... excel好強,如果excel能夠多人存取速度夠快,那可能會很多人會沒飯吃,至少小弟就是第一個...
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-11-28 13:51:58 IP:61.222.xxx.xxx 未訂閱
要使用資料庫.大概要很久以後的事了 目前可否先幫我度過難關 先教我如何把檔案連結起來 我第一次使用DELPHI寫程式.基礎知識不太行. 我寫CLPEER5有10年功力    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-11-28 14:01:47 IP:61.222.xxx.xxx 未訂閱
我跟你有類似的經驗... 不過..考量到下列因素,就... 1.excel表格內的資料一致性,是否都是依照欄位.=>每欄內容對應且每列資料輸入的呢?講白話一點就是有沒有資料是中間一半(rows)又被插入其他資料的... 2.而且裡面很有可能已經設定一些formula,勉強讀取進來後運算處理,仍然會有問題. 小弟不敢否認您的十年clipper功力,然而要在短時間內使用陌生的工具在不一樣的平台(dos->windows)仍然會有困難,困難的因素不是人的問題,而是大環境的問題,您或許可以考慮外包會比較能夠解決的唷, ktop上高手就像螞蟻一樣多,廣發英雄帖應該可以一呼百應的唷.... good luck
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-11-28 15:21:31 IP:61.222.xxx.xxx 未訂閱
檢查了一下.因該沒問題. 我打算用此程式當我入門DELPHI考驗 本公司也有DELPHI高手.可是他是別的部門. 要改如此功能.又合用的程式.必須懂工廠生產流程 EXCEL是以前沿用到現在    我現在程式卡在如何同時開啟3個檔.請指點一下    ---- water    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#13 引用回覆 回覆 發表時間:2003-11-28 17:18:26 IP:63.84.xxx.xxx 未訂閱
您好﹗    從貼圖來看﹐使用SQL應會比較簡便一些﹐介于您之前提到未安裝BDE﹐所以建議您可使用ADO存取﹒    使用三個ADOConnection分別通過字串連接﹐Link到此三個Excel資料庫檔案(注意﹕使用ADOConnection的Microsoft Jet 4.0 OLE DB Provider連接Excel資料庫形態時﹐需要在ConnectionString屬性設定之全部頁次的Extended Properties(擴展屬性)中建立Excel 8.0的資料庫名稱﹐以便使ADO認得Excel資料庫形態檔案﹒    而后的步驟﹐就可以使用三個ADOQuery分別對應三個資料庫﹐并擷取相關的Sheet(表)﹐即可利用SQL語法對其進行查詢異動等工作了﹒    參考看看﹗    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#14 引用回覆 回覆 發表時間:2003-11-28 19:06:27 IP:61.222.xxx.xxx 未訂閱
ADOConnection :  ok (書上有範例)    ADOQuery:參數要如何下?? 參數 connection->ADOConection1    執行 ADOQuery1.Active:=True; 會跑到cpu畫面 ??    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#15 引用回覆 回覆 發表時間:2003-11-28 19:44:47 IP:63.84.xxx.xxx 未訂閱
您好!    ADOQuery元件的Connection屬性值設定為某個ADOConnection元件. 其它的部分可根据您的要求下SQL, 其SQL屬性會自動存入ADOQuery元件的SQL屬性值中. 舉個例子來講: Button元件之OnClick事件中:
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('Select * From 生產排程');
  ADOQuery1.Open;
end;
//至此, 對應ADOQuery1元件的資料感知元件如DBGrid就會顯示出對應ADOQuery1查詢結果的資料 ADOQuery元件的Activate是一個Boolean屬性, 當其值為True時, 即將ADOQuery所對應的資料表Open, 當其值為False時, 即將資料表Close, 其作用相同于ADOQuery1.Open; & ADOQuery1.Close; 如果要在設計時期就先將Activate屬性設為True, 除了設定其Connection屬性值之外, 還需要在SQL屬性中設定相關的SQL敘述, 否則就會因為沒有SQL敘述而出現錯誤: Select * From 生產排程 參考看看! ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#16 引用回覆 回覆 發表時間:2003-11-28 19:58:16 IP:61.222.xxx.xxx 未訂閱
try ok . thk lot     請教一下 : select * from [pc$] 有沒有辦法自動開啟第一個sheet 例:ExcelApplicationl.WorkSheets[1].Active; 一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#17 引用回覆 回覆 發表時間:2003-11-28 20:17:56 IP:63.84.xxx.xxx 未訂閱
您好!    當ADOConnection正确連接上Excel資料庫檔案后, 相對的使用ADOQuery元件的SQL語法中的From之后就是Excel檔案中Sheet的名稱, 即一個資料表. Select * From Sheet1 上句語法即指定開啟的資料表為Excel資料庫檔案中的第一個Sheet, 當然此處的Sheet要根据您的Excel檔案中Sheet名稱自動調整.    參考看看!    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#18 引用回覆 回覆 發表時間:2003-11-29 09:09:26 IP:61.222.xxx.xxx 未訂閱
SQL  不會: 請教如何取得:Sheet TOTAL數值 & sheet2資料內容 因為明年會有新產品代工. EXECL SHEET 會增加    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#19 引用回覆 回覆 發表時間:2003-11-29 09:52:22 IP:61.222.xxx.xxx 未訂閱
可不可以教我 USE ExcelApplication,ExcekWorkbook,ExcelWorksheet 開啟EXCEL檔案 因為我在搜尋區找到很多指令可以控制我所需要的功能    使用ADO無法進入除錯程式很麻煩    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#20 引用回覆 回覆 發表時間:2003-11-29 10:59:56 IP:63.84.xxx.xxx 未訂閱
您好﹗    參考看看如下連接﹕ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=29495    ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#21 引用回覆 回覆 發表時間:2003-11-29 11:18:19 IP:61.222.xxx.xxx 未訂閱
請問為何錯??     一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#22 引用回覆 回覆 發表時間:2003-11-29 16:11:28 IP:63.84.xxx.xxx 未訂閱
您好﹗    請在Use上加上ComObj單元﹒ use ComObj 參考看看﹗ ===================== 努力,相信會獲得美麗! 忻晟
------
忻晟
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#23 引用回覆 回覆 發表時間:2003-12-01 10:10:23 IP:61.222.xxx.xxx 未訂閱
請教錯在哪 ??     一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
water
初階會員


發表:90
回覆:89
積分:35
註冊:2003-07-07

發送簡訊給我
#24 引用回覆 回覆 發表時間:2003-12-01 19:00:58 IP:61.222.xxx.xxx 未訂閱
I TRY OK , THK LOT    一切無為法.如虛亦如空.如如心不動.萬法在其中
------
一切無為法.如虛亦如空.如如心不動.萬法在其中
系統時間:2024-06-29 18:50:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!