程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi對Excel復制粘貼操作糾錯,delphiexcel

Delphi對Excel復制粘貼操作糾錯,delphiexcel

編輯:Delphi

Delphi對Excel復制粘貼操作糾錯,delphiexcel


 

本人學一下delphi怎麼操作excel表格,正好要用到表格的復制粘貼功能,然後在網上找博客學習,結果找了以後發現基本上博客都是一個抄一個的,這樣子我都不說什麼了,問題是抄的很多

是錯誤的,誤導了我兩天。下面,我針對這些錯誤糾錯一下,我不敢保證我說的對不對、全不全,反正我下面寫的代碼都是可以運行的。

 

Var

  wb1 : Variant;

  wb2 : Variant;

  vsheet1 , vsheet2: Variant;

  range1 , range2 : Variant;

  

wb1 := CreateOleObject('Excel.Application');

wb2 := CreateOleObject('Excel.Application');

wb1.WorkBooks.add;

wb2.WorkBooks.Open('D:\Information.xlsx');

wb1.Visible := True;

wb2.Visible := True;

  

2.工作簿賦值:

vsheet1 := wb1.ActiveWorkBook.Sheets[1];  //工作簿之前已經設置成了活動表格

vsheet2 := wb2.ActiveWorkBook.Sheets[1];

// vsheet2 := wb2.Workbooks[1].sheets[1];  //這樣子也行。

  

3.復制操作:

         我覺得復制操作是最重要的操作,因為網上有很多復制操作都是錯誤的,之前我就是被各種復制粘貼博客給誤導了。

vsheet2.Copy(EmptyParam , wb1.ActiveWorkBook.Sheets[1]);//復制到sheet1後面

vsheet2.Copy(wb2.ActiveWorkBook.Sheets[1]); //復制到sheet1前面
vsheet2.rows[1].copy; //復制第一行,copy會有紅色報錯,但是可以運行的。 vsheet2.range['A1:A2'].Copy; //復制A1A2兩格 vsheet2.UsedRange.Copy; //復制所有

  

注意:網上是這麼寫的:

vsheet1.Used.Range.Copy;

  

這是錯誤的,我就是被這個誤導了好久,而且我在網上搜索,大家都是這麼寫(明顯是一個抄一個),真是無語,寫博客時候麻煩運行通過一下可以嗎?待會我在下面針對這些坑爹的博客上面的錯誤進行修改。

         

vsheet2.range['A2']. PasteSpecial; //這個是粘貼,PasteSpecial有紅色報錯,可以運行的。

  

下面這句是不行的,要指定粘貼到哪,但是網上那些博客裡面卻寫這樣是可以的,坑爹。

        

 vsheet2.range.pastespecial;  //錯誤

 

上面的粘貼都是在同一個表格裡面粘貼,如果粘貼到另外一個表格呢?

         

vsheet1.range[‘A1’].PasteSpecial;

  

注意,這裡粘貼就出現問題了,從表格二復制粘貼到表格一,復制粘貼過去的是一張圖片,但是在同一張表格裡面執行這個操作粘貼的是文本,所以要注意一下。

 

下面是在兩個表格之間復制:

range2 := vsheet2.range[vsheet2.cells[1,1],vsheet2.cells[1, 2]];//指定復制位置

range2.select;

range2.copy;

range1 := vsheet1.range[vsheet1.cells[1,1],vsheet1.cells[1, 2]];

range1.select;

vsheet1.paste;                //這裡改成vsheet2就復制到原先的表格了

  

這樣子復制粘貼過去的就是文本了,網上那些粘貼方法我就不多說了,反正我是被他們坑了好久,而且居然不少於10個人的博客是錯誤的。

 

另外,網上那些博客裡面這麼寫的:

ExcelApp1:= CreateOleObject('Excel.Application');

ExcelApp1.ActiveSheet.Rows[1 ].Copy; 

  

上面這句反正我是執行不了,不知道他們是怎麼執行的。

 

最後:附上我的代碼。大家寫博客的時候麻煩不要誤導新手們,你附上的代碼麻煩執行通過一下再發布出去可以嗎?我也是個新手,所以被誤導了好久。

unit Unit1;

 

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs , ComObj;

 

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

  wb1 : Variant;

  wb2 : Variant;

  vsheet1 : Variant;

  vsheet2 : Variant;

  range1 , range2 : Variant;

 

begin

  wb1 := CreateOleObject('Excel.Application');

  wb2 := CreateOleObject('Excel.Application');

 

  wb1.WorkBooks.add;

  wb2.WorkBooks.Open('D:\Information.xlsx');

 

  wb1.Visible := True;

  wb2.Visible := True;

 

  vsheet1 := wb1.ActiveWorkBook.Sheets[1];

  vsheet2 := wb2.ActiveWorkBook.Sheets[1];

//  vsheet2 := wb2.Workbooks[1].sheets[1];                        //這兩句效果一樣

 

{下面每一段都是可以單獨運行的,大家只要稍稍修改一下就可以了,

我不能說我說的全是對的,但是下面的代碼我都是一句句執行過的。}

//  vsheet2.Copy(EmptyParam , wb2.ActiveWorkBook.Sheets[1]);      //復制到sheet1後面

//  vsheet2.Copy(wb2.ActiveWorkBook.Sheets[1]);                   //復制到sheet1前面

 

//  wb2.worksheets.rows[1].Copy;                                 //這句是不能執行的

//  vsheet2.rows[1].copy;                                         //復制第一行

//  vsheet2.range['A1:A2'].Copy;                                  //復制指定區域

//  vsheet2.usedrange.Copy;                                     //復制所有

//  vsheet2.range['A2'].pastespecial;                             //粘貼到指定位置

 

//  range2:= vsheet2.range[vsheet2.cells[1,1],vsheet2.cells[1, 2]];

//  range2.select;

//  range2.copy;

//  range1 := vsheet1.range[vsheet1.cells[1,1],vsheet1.cells[1, 2]];

//  range1.select;

//  vsheet1.paste;                    //從vsheet2復制粘貼到vsheet1中

end;

end.

 

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved