Delphi控制Excel2000心得

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Delphi控制Excel2000心得相关的知识,希望对你有一定的参考价值。

参考技术A

   一 使用动态创建的方法

  首先创建 Excel 对象 使用ComObj:  var ExcelApp: Variant;  ExcelApp := CreateOleObject( Excel Application );

   ) 显示当前窗口   ExcelApp Visible := True;

   ) 更改 Excel 标题栏   ExcelApp Caption := 应用程序调用 Microsoft Excel ;

   ) 添加新工作簿   ExcelApp WorkBooks Add;

   ) 打开已存在的工作簿   ExcelApp WorkBooks Open( C:\\Excel\\Demo xls );

   ) 设置第 个工作表为活动工作表   ExcelApp WorkSheets[ ] Activate; 或 ExcelApp WorksSheets[ Sheet ] Activate;

   ) 给单元格赋值   ExcelApp Cells[ ] Value := 第一行第四列 ;

   ) 设置指定列的宽度(单位 字符个数) 以第一列为例   ExcelApp ActiveSheet Columns[ ] ColumnsWidth := ;

   ) 设置指定行的高度(单位 磅)( 磅= 厘米) 以第二行为例   ExcelApp ActiveSheet Rows[ ] RowHeight := / ; // 厘米

   ) 在第 行之前插入分页符   ExcelApp WorkSheets[ ] Rows[ ] PageBreak := ;

   ) 在第 列之前删除分页符   ExcelApp ActiveSheet Columns[ ] PageBreak := ;

   ) 指定边框线宽度   ExcelApp ActiveSheet Range[ B :D ] Borders[ ] Weight := ;   左 右 顶 底 斜( \\ ) 斜( / )

   ) 清除第一行第四列单元格公式   ExcelApp ActiveSheet Cells[ ] ClearContents;

   ) 设置第一行字体属性   ExcelApp ActiveSheet Rows[ ] Font Name := 隶书 ;  ExcelApp ActiveSheet Rows[ ] Font Color := clBlue;  ExcelApp ActiveSheet Rows[ ] Font Bold := True;  ExcelApp ActiveSheet Rows[ ] Font UnderLine := True;

   ) 进行页面设置

  a 页眉   ExcelApp ActiveSheet PageSetup CenterHeader := 报表演示 ;  b 页脚   ExcelApp ActiveSheet PageSetup CenterFooter := 第&P页 ;  c 页眉到顶端边距 cm   ExcelApp ActiveSheet PageSetup HeaderMargin := / ;  d 页脚到底端边距 cm   ExcelApp ActiveSheet PageSetup HeaderMargin := / ;  e 顶边距 cm   ExcelApp ActiveSheet PageSetup TopMargin := / ;  f 底边距 cm   ExcelApp ActiveSheet PageSetup BottomMargin := / ;  g 左边距 cm   ExcelApp ActiveSheet PageSetup LeftMargin := / ;  h 右边距 cm   ExcelApp ActiveSheet PageSetup RightMargin := / ;  i 页面水平居中   ExcelApp ActiveSheet PageSetup CenterHorizontally := / ;  j 页面垂直居中   ExcelApp ActiveSheet PageSetup CenterVertically := / ;  k 打印单元格网线   ExcelApp ActiveSheet PageSetup PrintGridLines := True;

   ) 拷贝操作

  a 拷贝整个工作表   ExcelApp ActiveSheet Used Range Copy;  b 拷贝指定区域   ExcelApp ActiveSheet Range[ A :E ] Copy;  c 从A 位置开始粘贴   ExcelApp ActiveSheet Range [ A ] PasteSpecial;  d 从文件尾部开始粘贴   ExcelApp ActiveSheet Range PasteSpecial;

   ) 插入一行或一列   a ExcelApp ActiveSheet Rows[ ] Insert;  b ExcelApp ActiveSheet Columns[ ] Insert;

   ) 删除一行或一列   a ExcelApp ActiveSheet Rows[ ] Delete;  b ExcelApp ActiveSheet Columns[ ] Delete;

   ) 打印预览工作表   ExcelApp ActiveSheet PrintPreview;

   ) 打印输出工作表   ExcelApp ActiveSheet PrintOut;

   ) 工作表保存   if not ExcelApp ActiveWorkBook Saved then ExcelApp ActiveSheet PrintPreview;

   ) 工作表另存为   ExcelApp SaveAs( C:\\Excel\\Demo xls );

   ) 放弃存盘   ExcelApp ActiveWorkBook Saved := True;

   ) 关闭工作簿   ExcelApp WorkBooks Close;

   ) 退出 Excel   ExcelApp Quit;

   二 使用Delphi 控件方法   在Form中分别放入ExcelApplication ExcelWorkbook和ExcelWorksheet

   ) 打开Excel   ExcelApplication Connect;

   ) 显示当前窗口   ExcelApplication Visible[ ]:=True;

   ) 更改 Excel 标题栏   ExcelApplication Caption := 应用程序调用 Microsoft Excel ;

   ) 添加新工作簿   ExcelWorkbook ConnectTo(ExcelApplication Workbooks Add(EmptyParam ));   ) 添加新工作表   var Temp_Worksheet: _WorkSheet; begin Temp_Worksheet:=ExcelWorkbook  WorkSheets Add(EmptyParam EmptyParam EmptyParam EmptyParam ) as _WorkSheet; ExcelWorkSheet ConnectTo(Temp_WorkSheet); End;   ) 打开已存在的工作簿   ExcelApplication Workbooks Open (c:\\a xls EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam EmptyParam )

   ) 设置第 个工作表为活动工作表   ExcelApplication WorkSheets[ ] Activate; 或 ExcelApplication WorksSheets[ Sheet ] Activate;

   ) 给单元格赋值   ExcelApplication Cells[ ] Value := 第一行第四列 ;

   ) 设置指定列的宽度(单位 字符个数) 以第一列为例   ExcelApplication ActiveSheet Columns[ ] ColumnsWidth := ;

   ) 设置指定行的高度(单位 磅)( 磅= 厘米) 以第二行为例   ExcelApplication ActiveSheet Rows[ ] RowHeight := / ; // 厘米

   ) 在第 行之前插入分页符   ExcelApplication WorkSheets[ ] Rows[ ] PageBreak := ;

   ) 在第 列之前删除分页符   ExcelApplication ActiveSheet Columns[ ] PageBreak := ;

   ) 指定边框线宽度   ExcelApplication ActiveSheet Range[ B :D ] Borders[ ] Weight := ;   左 右 顶 底 斜( \\ ) 斜( / )

   ) 清除第一行第四列单元格公式   ExcelApplication ActiveSheet Cells[ ] ClearContents;

   ) 设置第一行字体属性   ExcelApplication ActiveSheet Rows[ ] Font Name := 隶书 ;  ExcelApplication ActiveSheet Rows[ ] Font Color := clBlue;  ExcelApplication ActiveSheet Rows[ ] Font Bold := True;  ExcelApplication ActiveSheet Rows[ ] Font UnderLine := True;

   ) 进行页面设置   a 页眉   ExcelApplication ActiveSheet PageSetup CenterHeader := 报表演示 ;  b 页脚   ExcelApplication ActiveSheet PageSetup CenterFooter := 第&P页 ;  c 页眉到顶端边距 cm   ExcelApplication ActiveSheet PageSetup HeaderMargin := / ;  d 页脚到底端边距 cm   ExcelApplication ActiveSheet PageSetup HeaderMargin := / ;  e 顶边距 cm   ExcelApplication ActiveSheet PageSetup TopMargin := / ;  f 底边距 cm   ExcelApplication ActiveSheet PageSetup BottomMargin := / ;  g 左边距 cm   ExcelApplication ActiveSheet PageSetup LeftMargin := / ;  h 右边距 cm   ExcelApplication ActiveSheet PageSetup RightMargin := / ;  i 页面水平居中   ExcelApplication ActiveSheet PageSetup CenterHorizontally := / ;  j 页面垂直居中   ExcelApplication ActiveSheet PageSetup CenterVertically := / ;  k 打印单元格网线   ExcelApplication ActiveSheet PageSetup PrintGridLines := True;

   ) 拷贝操作

  a 拷贝整个工作表   ExcelApplication ActiveSheet Used Range Copy;

  b 拷贝指定区域   ExcelApplication ActiveSheet Range[ A :E ] Copy;

  c 从A 位置开始粘贴   ExcelApplication ActiveSheet Range [ A ] PasteSpecial;

  d 从文件尾部开始粘贴   ExcelApplication ActiveSheet Range PasteSpecial;

   ) 插入一行或一列   a ExcelApplication ActiveSheet Rows[ ] Insert;  b ExcelApplication ActiveSheet Columns[ ] Insert;

   ) 删除一行或一列   a ExcelApplication ActiveSheet Rows[ ] Delete;  b ExcelApplication ActiveSheet Columns[ ] Delete;

   ) 打印预览工作表   ExcelApplication ActiveSheet PrintPreview;

   ) 打印输出工作表   ExcelApplication ActiveSheet PrintOut;

   ) 工作表保存   if not ExcelApplication ActiveWorkBook Saved then ExcelApplication ActiveSheet PrintPreview;

   ) 工作表另存为   ExcelApplication SaveAs( C:\\Excel\\Demo xls );

   ) 放弃存盘   ExcelApplication ActiveWorkBook Saved := True;

   ) 关闭工作簿   ExcelApplication WorkBooks Close;

   ) 退出 Excel   ExcelApplication Quit;  ExcelApplication Disconnect;

   三 使用Delphi 控制Excle二维图   在Form中分别放入ExcelApplication ExcelWorkbook和ExcelWorksheet var asheet achart range:variant;

   )选择当第一个工作薄第一个工作表  asheet :=ExcelApplication Workbooks[ ] Worksheets[ ];

   )增加一个二维图  achart:=asheet chartobjects add( );

   )选择二维图的形态  achart chart charttype:= ;

   )给二维图赋值  series:=achart chart seriescollection;  range:=sheet !r c :r c ;  series add(range true);   )加上二维图的标题  achart Chart HasTitle:=True;  achart Chart ChartTitle Characters Text:= Excle二维图

   )改变二维图的标题字体大小  achart Chart ChartTitle Font size:= ;

   )给二维图加下标说明  achart Chart Axes(xlCategory xlPrimary) HasTitle := True;  achart Chart Axes(xlCategory xlPrimary) AxisTitle Characters Text := 下标说明 ;

   )给二维图加左标说明  achart Chart Axes(xlValue xlPrimary) HasTitle := True;  achart Chart Axes(xlValue xlPrimary) AxisTitle Characters Text := 左标说明 ;

   )给二维图加右标说明  achart Chart Axes(xlValue xlSecondary) HasTitle := True;  achart Chart Axes(xlValue xlSecondary) AxisTitle Characters Text := 右标说明 ;

   )改变二维图的显示区大小  achart Chart PlotArea Left := ;  achart Chart PlotArea Width := ;  achart Chart PlotArea Height := ;

lishixinzhi/Article/program/Delphi/201311/25063

用Delphi将数据导入到Excel并控制Excel

一、调用Excel的方法:一般情况下有两种方法调用Excel:
1、  直接使用Delphi自带的组件:在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。
2、动态创建Excel文件:首先创建 Excel 对象,使用ComObj,Excel2000:
var ExcelApp: Variant;
ExcelApp := CreateOleObject( \'Excel.Application\' );

二、导入数据:在程序中,我们可以将查询到的数据(SQL、Access、)导入到Excel中。例如:用Adoquery查询Access中的数据:
1、先查到所需的数据;
2、导入:i:=1;
Adoquery.First;
               while not Adoquery.Eof do
                 Begin
                   ExcelApp.WorkSheets[1].Cells[i,1].Value := i;//添加序号的值
ExcelApp.WorkSheets[1].Cells[i,2].Value := Adoquery.FieldByName(\'cp_name\').AsString;
                   ……
                   Inc(i);
Adoquery.Next;
                 End;
当然也可以把Adotable、Adoquery、Table、Query等组件的数据导入到Excel中。

三、Excel的处理:如果在你已知Excel格式的情况下,可以控制Excel,如下:
1、 显示当前窗口:ExcelApp.Visible := True;
2、 更改 Excel 标题栏:ExcelApp.Caption := \'标题内容\';
3、 添加新工作簿:ExcelApp.WorkBooks.Add;
4、 设置第2个工作表为活动工作表:ExcelApp.WorkSheets[2].Activate;
5、 给单元格赋值:ExcelApp.Cells[1,1].Value := \'第一行第一列\';
6、 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApp.ActiveSheet.Columns[1].ColumnsWidth := 5;
7、 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelApp.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米
8、文字水平居中:Excelid.worksheets[1].Rows[1].HorizontalAlignment := $FFFFEFF4;    上面的文字如果不指定行坐标,那么就会设置所有行数据居中显示。
    文字垂直居中:Excelid.worksheets[1].Rows[1].VerticalAlignment := $FFFFEFF4;
9、 插入一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Insert;
b. ExcelApp.ActiveSheet.Columns[1].Insert;
10、 删除一行或一列:a. ExcelApp.ActiveSheet.Rows[2].Delete;
b. ExcelApp.ActiveSheet.Columns[1].Delete;  
11、合并单元格:ExcelApp.worksheets[1].range[A1:F8\'].Merge(abc);注:要声明变量abc: Variant;
12、竖行显示文字:ExcelApp.worksheets[1].Cells.Item[1,1].Orientation:= xlVertical;
13、单元格加边线:ExcelApp.worksheets[1].Range[A1:F8].Borders.LineStyle := 1;
14、在第8行之前插入分页符:ExcelApp.WorkSheets[1].Rows[8].PageBreak := 1;
15、在第4列之前删除分页符:ExcelApp.ActiveSheet.Columns[4].PageBreak := 0;
16、指定边框线宽度:ExcelApp.ActiveSheet.Range[ \'B3:D4\' ].Borders[2].Weight := 3;
1-左    2-右   3-顶    4-底   5-斜( \\ )     6-斜( / )
17、拷贝操作:a.拷贝整个工作表:ExcelApplication1.ActiveSheet.Used.Range.Copy;
b.拷贝指定区域:ExcelApplication1.ActiveSheet.Range[ \'A1:E2\' ].Copy;
                  c.从A1位置开始粘贴:ExcelApplication1.ActiveSheet.Range.[ \'A1\' ].PasteSpecial;
d.从文件尾部开始粘贴:ExcelApplication1.ActiveSheet.Range.PasteSpecial;
18、清除第一行第四列单元格公式:ExcelApp.ActiveSheet.Cells[1,4].ClearContents;
19、工作表保存:if not ExcelApp.ActiveWorkBook.Saved then
                ExcelApp.ActiveSheet.PrintPreview;
20、工作表另存为:ExcelApp.SaveAs( \'C:\\Excel\\Demo1.xls\' );
21、放弃存盘:ExcelApp.ActiveWorkBook.Saved := True;
22、关闭工作簿:ExcelApp.WorkBooks.Close;
23、退出 Excel:ExcelApp.Quit;
下面是有关打印页面控制的语句:
    24、设置第一行字体属性:ExcelApp.ActiveSheet.Rows[1].Font.Name := \'隶书\';
ExcelApp.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelApp.ActiveSheet.Rows[1].Font.Bold := True;
ExcelApp.ActiveSheet.Rows[1].Font.UnderLine := True;
ExcelApp.ActiveSheet.Rows[1].Font.size:=10;
//设置指定单元格的颜色
ExcelApp.Cells[j,maxCol].Interior.Color := clRed;
25、进行页面设置:a.页眉:ExcelApp.ActiveSheet.PageSetup.CenterHeader := \'报表演示\';
b.页脚:ExcelApp.ActiveSheet.PageSetup.CenterFooter := \'共&N页 第&P页\';
                      c.页眉到顶端边距2cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
d.页脚到底端边距3cm:ExcelApp.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
                      e.顶边距2cm:ExcelApp.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底边距2cm:ExcelApp.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
                      g.左边距2cm:ExcelApp.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右边距2cm:ExcelApp.ActiveSheet.PageSetup.RightMargin := 2/0.035;
                      i.页面水平居中:ExcelApp.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
j.页面垂直居中:ExcelApp.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
                      k.打印单元格网线:ExcelApp.ActiveSheet.PageSetup.PrintGridLines := True;
26、打印预览工作表:ExcelApp.ActiveSheet.PrintPreview;
27、打印输出工作表:ExcelApp.ActiveSheet.PrintOut;
对Excel的其他控制:
28、excel的多单元格合计功能:ExcelApp..Cells[ARow, ACol].Formula 
:= \'= SUM($+IntToStr(BeginRow) +:$ + IntToStr(EndRow) +\');
注:声明变量ARow, ACol: Integer;
29、打开已经存在的Excel文件:
ExcelApplication1.Workbooks.Open (path);
30、给EXCEL单元格添加批注
ExcelApp.WorkSheets[1].Cells[j,maxCol].AddComment(\'重工时间有误!\');
31、ExcelApp.Cells.Formula 判断单元格是否为空。
32、为单元格指定超链接,这个是到URL的。
ExcelApp.ActiveSheet.Cells[3,17].value :=\'=HYPERLINK("http://www.sohu.com","搜狐")\';
  这个是可以跳转到sheet的
ExcelApp.ActiveSheet.Cells[3,7].value :=\'=HYPERLINK("[Templat.xls]sheet2!A1","你的地址显示字")\';
Templat.xls是当前excel的名字,sheet2是目标sheet,A1是跳过去之后的光标坐标。
本次增加32条
注:在数据倒入Excel时不要边导入边修改,这样会使倒入到Excel的时间加长,一般最好是在倒入完数据后再调Excel的格式(例如页边距、单元个属性、文字属性)。
原文参考:http://blog.csdn.net/u011354184/article/details/10966971。
本文在实际操作中发现的一些问题基础上作部分修改。
http://www.cnblogs.com/azhqiang/p/3696418.html

以上是关于Delphi控制Excel2000心得的主要内容,如果未能解决你的问题,请参考以下文章

请问如何用DELPHI控制excel的格式(比如第一列的宽度,第五行的高度),以

怎样用DELPHI控制EXCEL中某一单元格的某一边框是不是显示

在Delphi中如何控制往Excel的工作表中传入文本文件数据的问题?有请高手

Delphi导出表格

Delphi 如何操作Excel

Delphi操作Excel大全