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

關於轉excel的問題

答題得分者是:william
wuherong2000
一般會員


發表:26
回覆:21
積分:9
註冊:2003-06-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-31 21:24:05 IP:211.162.xxx.xxx 未訂閱
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,Excel97,OleServer,Comobj, Controls,Forms,Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); var RangeExcel: Excel97.Range;//這是不能定義 begin end; end. 上面代碼在delphi6中可通過,但在delphi7中不可過,請指教在delphi7中如何處理轉excel的問題,我把兩處excel97換成excel2000都不行,我是在windowsxp上,裝了office2000,使用delphi7 sql2000,需轉資料入excel
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-08-01 08:53:32 IP:147.8.xxx.xxx 未訂閱
Replace Range with IRange?
wuherong2000
一般會員


發表:26
回覆:21
積分:9
註冊:2003-06-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-08-01 19:16:19 IP:211.162.xxx.xxx 未訂閱
procedure ConvertExcelDetail(TmpClient: TClientDataSet); var RangeExcel: Excel97.Range; i,Row: Integer; BookMark: TBookMark; ExcelApp: TExcelApplication; TempStr: String; begin ExcelApp:=TExcelApplication.Create(Application); try try ExcelApp.Workbooks.Add(Null,0); RangeExcel:=ExcelApp.ActiveCell; except LoadFrm.Free ;LoadFrm := Nil ; Application.MessageBox('EXCEL未安裝或發生其它異常','轉檔失敗',MB_OK OR MB_ICONSTOP) ; Exit; end; for i:=0 to TmpClient.FieldCount - 1 do begin if TmpClient.Fields[i].FieldKind = fkdata then if TmpClient.Fields[i].DataType in [ ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes,ftWideString,ftLargeint, ftVariant] then begin TempStr:=Trim(TmpClient.Fields[i].DisplayLabel); RangeExcel.Value:=TempStr; RangeExcel:=RangeExcel.Next; end ; end; BookMark:=TmpClient.GetBookmark; TmpClient.DisableControls; Row:=2; TmpClient.First; while not TmpClient.Eof do begin RangeExcel:=ExcelApp.Range['A' IntToStr(Row),'A' IntToStr(Row)]; for i:=0 to TmpClient.FieldCount-1 do begin if TmpClient.Fields[i].FieldKind = fkdata then if TmpClient.Fields[i].DataType in [ ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes,ftWideString,ftLargeint, ftVariant] then begin if TmpClient.Fields[i].DataType=FTString then RangeExcel.Value:='''' TmpClient.Fields[i].Value else RangeExcel.Value:=TmpClient.Fields[i].Value; RangeExcel:=RangeExcel.Next; end ; end; TmpClient.Next; Inc(Row); end; ExcelApp.Visible[0]:=True; finally ExcelApp.Free; end; TmpClient.GotoBookmark(BookMark); TmpClient.EnableControls; end; 這段代碼在delphi6中可以,但是在delphi中把 var RangeExcel: Excel97.Range;改成 var RangeExcel: Excel97.IRange後在RangeExcel:=ExcelApp.ActiveCell又出錯,請問是否可幫講解一下原因
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-08-01 19:45:19 IP:210.3.xxx.xxx 未訂閱
小弟錯了 剛回家用 > < class="code"> {$ifdef VER150} RangeExcel: Excel97.ExcelRange; {$else} RangeExcel: Excel97.Range; {$endif}
系統時間:2024-05-20 13:56:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!