DELPHI控制EXCEL,我按论坛方法,怎么不行? (50分)

  • 主题发起人 主题发起人 bjhjh
  • 开始时间 开始时间
B

bjhjh

Unregistered / Unconfirmed
GUEST, unregistred user!
http://expert.csdn.net/Expert/topic/2357/2357198.xml?temp=.9431116
中有如下描述:
----------------------------
(二) 使用Delphi 控件方法
在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
b.拷贝指定区域:
ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;
c.从A1位置开始粘贴:
ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;
---------------------------


我用上面方法,delphi不接受,我改为
ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy(DestRange);
可以

但这里的DestRange只能定义为EXCEL中的另一区域,我想定义为STRINGGRID中的区域却不行?? 怎么办?



我还是想用----------------------------
ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;
拷贝指定区域到剪切板:

再用.PasteSpecial;
粘贴到stringgrid相应位置。但不知为什么不行???
---------------------------
 
给我分我给你源代码。怎么样?
以下调试已通过了。QUERY2为数据源。
procedure tfrmprint2.saveAsExcel;
var
fieldNum: integer;
i,j : integer;
exls,sheet: variant;
begin
try
exls:=createoleobject('Excel.application');
sheet:=createoleobject('excel.sheet');
except
application.MessageBox('请先安装MICROSOFT EXCEL!','提示',mb_ok+mb_iconinformation);
exit;
end;
sheet:=exls.workBooks.Add;
with query2 do
begin
DisableControls;
fieldNum := dbgrid1.fieldCount;
for i:=1 to fieldNum do
begin
exls.Cells[1,i].value:=Fields[i-1].FieldName;
end;
first;
i:=2;
while not eof do
begin
for j:=1 to fieldNum do
begin
exls.Cells[i,j]:=fields[j-1].AsString;
end;
next;
i:=i+1;
end;
EnableControls;
exls.visible:=true;
end;
end;
 
//将指定的页内的指定区域内的数据复制到另一页中(在同一个WorkBook中)
//SpecifySheetName=''是指复制当前页
procedure CopyDataAreaToAnotherSheet(AnotherSName,FromDataArea:string;SpecifySheetName:string='');overload;
procedure TExcel.CopyDataAreaToAnotherSheet(AnotherSName,FromDataArea:string;SpecifySheetName:string='');
var
ToDataArea:string;
DataAreas:TDataAreas;
i:integer;
begin
AnalyzeDataAreas(DataAreas,FromDataArea);
for i:=0 to Length(DataAreas)-1 do begin
FromDataArea:=DataAreas;
if SpecifySheetName<>'' then begin
fExcel.Sheets.Item[SpecifySheetName].Select;
end;
fExcel.ActiveSheet.Range[FromDataArea].Select;
fExcel.Selection.Copy;
fExcel.ActiveSheet.Range['A1'].Select;

ToDataArea:=GetHalfDataArea(FromDataArea,True);

fExcel.Sheets.Item[AnotherSName].Select;
fExcel.ActiveSheet.Range[ToDataArea].Select;
fExcel.ActiveSheet.Paste;
fExcel.ActiveSheet.Range['A1'].Select;
end;
end;
 
其实,我不是想在EXCEL中复制与粘贴,

我想把EXCEL中的区域复制到华表的CELL中,请提供代码,通过后加倍给分。

 
who can?who can
 

Similar threads

后退
顶部