關於轉excel的問題 |
答題得分者是:william
|
wuherong2000
一般會員 發表:26 回覆:21 積分:9 註冊:2003-06-16 發送簡訊給我 |
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 發送簡訊給我 |
|
wuherong2000
一般會員 發表:26 回覆:21 積分:9 註冊:2003-06-16 發送簡訊給我 |
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 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |