for i :=1  to  adoquery1.RecordCount do
 begin 
  ExcelApp.ActiveSheet.Rows[1,3].Select;
  ExcelApp.ActiveSheet.copy;
  ExcelApp.ActiveSheet.Rows[i*3+1,i*3+3].Select;
  ExcelApp.ActiveSheet.Paste;
 end;
这样报ole错误
但是
 for i :=1  to  adoquery1.RecordCount do
 begin 
  ExcelApp.ActiveSheet.Range[ExcelApp.Cells.Item[1,1], ExcelApp.Cells.Item[3,3]].Select;
  ExcelApp.ActiveSheet.Range[ExcelApp.Cells.Item[1,1], ExcelApp.Cells.Item[3,3]].Copy;
  ExcelApp.ActiveSheet.Range[ExcelApp.Cells.Item[i*3+1,1], ExcelApp.Cells.Item[i*3+3,3]].Select;
  ExcelApp.ActiveSheet.Range[ExcelApp.Cells.Item[i*3+1,1], ExcelApp.Cells.Item[i*3+3,3]].PasteSpecial;
end;
复制粘贴过来的单元格又不包含格式?
请问要如何在Excel中选择行来进行复制粘贴?

解决方案 »

  1.   

    //  行和区域应该差不多procedure TForm1.Button1Click(Sender: TObject);
    var
        excelapp,book,sheet:variant;
    begin
        excelapp:=createoleobject('excel.application');
        excelapp.visible:=false;
        excelapp.DisplayAlerts:=False;    try        excelapp.workbooks.open('d:\123.xls');
            book:=excelapp.workbooks[1];
            sheet:=excelapp.worksheets[1];        sheet.range['A1:B5'].copy;
            sheet.range['d1'].pasteSpecial;        book.save;
            excelapp.quit;
        except
            excelapp.quit;
        end;
    end;
      

  2.   

    // rows
    sheet.rows['4:5'].copy;
    sheet.rows['8'].pasteSpecial;