use activeX //头文件中引用activex单元
lcid:integer; //声明窗体级私有变量
加入TExcelApplication,Texcelworkbook,Texcelworksheet控件function ChangeToExcel(....
var i,j: Integer;
MyArray:variant;
M,N:INTEGER;
FLD:STRING;
begin
lcid := GetUserDefaultLCID;
eapp.Disconnect;
eapp.Connect;
eapp.Visible[0]:=True;
eWB.ConnectTo(eapp.Workbooks.Add(TOleEnum(xlWBATWorksheet), lcid));
eWS.ConnectTo(ewb.Worksheets[1] as _Worksheet);
q_result.first;
q_result.DisableControls;
IF q_result.FieldCount>26 THEN
BEGIN
M:= q_result.FieldCount DIV 26;
N:= q_result.FieldCount MOD 26;
IF N>0 THEN FLD:= chr(M+64)+chr(N+64)
ELSE FLD:= chr(M-1+64)+'Z';
END
ELSE FLD:=chr(q_result.FieldCount+64);
MyArray:=VarArrayCreate([0,(q_result.FieldCount-1)],varVariant);
for i:=0 to q_result.Fieldcount-1 do
begin
MyArray[i]:= DBgrideh2.Columns[i].Title.Caption ;
end;
eWS.Range['A1', (FLD+'1')].Value := MyArray;
for i:=2 to q_result.RecordCount+1 do
begin
for j:=0 to q_result.FieldCount-1 do
begin
MyArray[j]:= q_result.Fields[j].Value ;
end;
eWS.Range['A'+intTostr(i), (FLD+intTostr(i))].Value := MyArray;
q_result.Next;
end;
q_result.EnableControls;
end;
//这段代码是以显式的方法把数据转入Excel,需要隐式转入,只需设Texcelapplication.visible:=false;
至于保存成文件,调用Texcelworksheet.saveas()方法即可
lcid:integer; //声明窗体级私有变量
加入TExcelApplication,Texcelworkbook,Texcelworksheet控件function ChangeToExcel(....
var i,j: Integer;
MyArray:variant;
M,N:INTEGER;
FLD:STRING;
begin
lcid := GetUserDefaultLCID;
eapp.Disconnect;
eapp.Connect;
eapp.Visible[0]:=True;
eWB.ConnectTo(eapp.Workbooks.Add(TOleEnum(xlWBATWorksheet), lcid));
eWS.ConnectTo(ewb.Worksheets[1] as _Worksheet);
q_result.first;
q_result.DisableControls;
IF q_result.FieldCount>26 THEN
BEGIN
M:= q_result.FieldCount DIV 26;
N:= q_result.FieldCount MOD 26;
IF N>0 THEN FLD:= chr(M+64)+chr(N+64)
ELSE FLD:= chr(M-1+64)+'Z';
END
ELSE FLD:=chr(q_result.FieldCount+64);
MyArray:=VarArrayCreate([0,(q_result.FieldCount-1)],varVariant);
for i:=0 to q_result.Fieldcount-1 do
begin
MyArray[i]:= DBgrideh2.Columns[i].Title.Caption ;
end;
eWS.Range['A1', (FLD+'1')].Value := MyArray;
for i:=2 to q_result.RecordCount+1 do
begin
for j:=0 to q_result.FieldCount-1 do
begin
MyArray[j]:= q_result.Fields[j].Value ;
end;
eWS.Range['A'+intTostr(i), (FLD+intTostr(i))].Value := MyArray;
q_result.Next;
end;
q_result.EnableControls;
end;
//这段代码是以显式的方法把数据转入Excel,需要隐式转入,只需设Texcelapplication.visible:=false;
至于保存成文件,调用Texcelworksheet.saveas()方法即可
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货