delphi控制Excel

 

(一) 使用动态创建的方法 
首先创建 Excel 对象,使用ComObj: 
    
var  ExcelApp: Variant; 
    ExcelApp :
=  CreateOleObject( ’Excel.Application’ ); 
1 ) 显示当前窗口: 
    ExcelApp.Visible :
=  True; 
2 ) 更改 Excel 标题栏: 
    ExcelApp.Caption :
=  ’应用程序调用 Microsoft Excel’; 
3 ) 添加新工作簿: 
    ExcelApp.WorkBooks.Add; 
4 ) 打开已存在的工作簿: 
    ExcelApp.WorkBooks.Open( ’C:\Excel\Demo.xls’ ); 
5 ) 设置第2个工作表为活动工作表: 
    ExcelApp.WorkSheets[
2 ].Activate;  或 
    ExcelApp.WorksSheets[ ’Sheet2’ ].Activate; 
6 ) 给单元格赋值: 
    ExcelApp.Cells[
1 , 4 ].value : =  ’第一行第四列’; 
7 ) 设置指定列的宽度(单位:字符个数),以第一列为例: 
    ExcelApp.ActiveSheet.Columns[
1 ].ColumnsWidth : =   5
8 ) 设置指定行的高度(单位:磅)( 1 磅= 0.035 厘米),以第二行为例: 
    ExcelApp.ActiveSheet.Rows[
2 ].RowHeight : =   1 / 0.035 //   1 厘米 
9 ) 在第8行之前插入分页符: 
    ExcelApp.WorkSheets[
1 ].Rows[ 8 ].PageBreak : =   1
10 ) 在第8列之前删除分页符: 
    ExcelApp.ActiveSheet.Columns[
4 ].PageBreak : =   0
11 ) 指定边框线宽度: 
    ExcelApp.ActiveSheet.Range[ ’B3:D4’ ].Borders[
2 ].Weight : =   3
    
1 - 左     2 - 右    3 - 顶     4 - 底    5 - 斜( \ )      6 - 斜(  /  ) 
12 ) 清除第一行第四列单元格公式: 
    ExcelApp.ActiveSheet.Cells[
1 , 4 ].ClearContents; 
13 ) 设置第一行字体属性: 
    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; 
14 ) 进行页面设置: 
  a.页眉: 
    ExcelApp.ActiveSheet.PageSetup.CenterHeader :
=  ’报表演示’; 
  b.页脚: 
    ExcelApp.ActiveSheet.PageSetup.CenterFooter :
=  ’第 & 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; 
15 ) 拷贝操作: 
  a.拷贝整个工作表: 
    ExcelApp.ActiveSheet.Used.Range.Copy; 
  b.拷贝指定区域: 
    ExcelApp.ActiveSheet.Range[ ’A1:E2’ ].Copy; 
  c.从A1位置开始粘贴: 
    ExcelApp.ActiveSheet.Range.[ ’A1’ ].PasteSpecial; 
  d.从文件尾部开始粘贴: 
    ExcelApp.ActiveSheet.Range.PasteSpecial; 
16 ) 插入一行或一列: 
  a. ExcelApp.ActiveSheet.Rows[
2 ].Insert; 
  b. ExcelApp.ActiveSheet.Columns[
1 ].Insert; 
17 ) 删除一行或一列: 
  a. ExcelApp.ActiveSheet.Rows[
2 ].Delete; 
  b. ExcelApp.ActiveSheet.Columns[
1 ].Delete; 
18 ) 打印预览工作表: 
    ExcelApp.ActiveSheet.PrintPreview; 
19 ) 打印输出工作表: 
    ExcelApp.ActiveSheet.PrintOut; 
20 ) 工作表保存: 
    
if   not  ExcelApp.ActiveWorkBook.Saved  then  
    ExcelApp.ActiveSheet.PrintPreview; 
21 ) 工作表另存为: 
    ExcelApp.SaveAs( ’C:\Excel\Demo1.xls’ ); 
22 ) 放弃存盘: 
    ExcelApp.ActiveWorkBook.Saved :
=  True; 
23 ) 关闭工作簿: 
    ExcelApp.WorkBooks.Close; 
24 ) 退出 Excel: 
    ExcelApp.Quit; 


(二) 使用Delphi 控制Excle二维图 
    在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet 
    
var  asheet1,achart, range:variant; 
  
1 )选择当第一个工作薄第一个工作表 
    asheet1:
= ExcelApplication1.Workbooks[ 1 ].Worksheets[ 1 ]; 
  
2 )增加一个二维图 
    achart:
= asheet1.chartobjects.add( 100 , 100 , 200 , 200 ); 
  
3 )选择二维图的形态 
    achart.chart.charttype:
= 4
  
4 )给二维图赋值 
    series:
= achart.chart.seriescollection; 
    range:
= sheet1!r2c3:r3c9; 
    series.add(range,true); 
  
5 )加上二维图的标题 
    achart.Chart.HasTitle:
= True; 
    achart.Chart.ChartTitle.Characters.Text:
= ’ Excle二维图’           
  
6 )改变二维图的标题字体大小 
    achart.Chart.ChartTitle.Font.size:
= 6
  
7 )给二维图加下标说明 
    achart.Chart.Axes(xlCategory, xlPrimary).HasTitle :
=  True; 
    achart.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text :
=  ’下标说明’; 
  
8 )给二维图加左标说明 
    achart.Chart.Axes(xlvalue, xlPrimary).HasTitle :
=  True; 
    achart.Chart.Axes(xlvalue, xlPrimary).AxisTitle.Characters.Text :
=  ’左标说明’; 
  
9 )给二维图加右标说明 
    achart.Chart.Axes(xlvalue, xlSecondary).HasTitle :
=  True; 
    achart.Chart.Axes(xlvalue, xlSecondary).AxisTitle.Characters.Text :
=  ’右标说明’; 
  
10 )改变二维图的显示区大小 
    achart.Chart.PlotArea.Left :
=   5
    achart.Chart.PlotArea.Width :
=   223
    achart.Chart.PlotArea.Height :
=   108
  
11 )给二维图坐标轴加上说明 
    achart.chart.seriescollection[
1 ].NAME: = ’坐标轴说明’; 


关于Excel的智能填充: 
  ExcelApp.Range[’A1’].value:
= 1
  ExcelApp.Range[’A2’].value:
= 2
  ExcelApp.Range[’A1:A1’].AutoFill(ExcelApp.Range[’A1:A9’],
0 );     // 使用智能填充 
  
// 使用方法:源区域.AutoFill(目标区域,填充方式); 
对于公式也一样: 
  ExcelApp.Range[’B1’].value:
= 3
  ExcelApp.Range[’B2’].value:
= 5
  ExcelApp.Range[’B1:B2’].AutoFill(ExcelApp.Range[’B1:B9’],
0 ); 
  ExcelApp.Range[’C1’].Formula:
= = SUM(A1:B1)’; 
  
// 这里注意公式里含有=号,没有等号就是字符串了 
  ExcelApp.Range[’C1:C1’].AutoFill(ExcelApp.Range[’C1:C9’],
0 ); 

有很多类似的问题了。再贴一次吧。 
procedure  TForm1.Button5Click(Sender: TObject); 
var  
ExcelApp,MyWorkBook,mysheet:Variant; 
i :byte; 
s: 
string
begin  
try  
ExcelApp:
= CreateOleObject(’Excel.Application’); 
MyWorkBook:
= CreateOleobject(’Excel.Sheet’); 
// ? MyWorkBook: = ExcelApp.workbooks.open(’C:\Book1.xls’); 
except  
on Exception 
do   raise  exception.Create(’无法打开Xls文件,请确认已 经安装EXCEL’) 
end
ExcelApp.Visible :
=  true; 
// ? mysheet: = MyWorkBook.WorkSheets[ 1 ].name; 

MyworkBook:
= ExcelApp.workBooks.Add; 

// 在此处插入读数据库及写Excel文档的代码 
// 其中写Excel文档的关键语句如下: 
Myworkbook.worksheets[
1 ].range[’A1:D1’].Merge(True); 
Myworkbook.worksheets[
1 ].range[’A1:D2’].HorizontalAlignment : =  $FFFFEFF4; 
MyWorkBook.WorkSheets[
1 ].Cells[ 1 , 1 ].value : =  ’YourTitle’; 

i :
=   2
MyWorkBook.WorkSheets[
1 ].Cells[i, 1 ].value : =  ’yourCaption1’; 
MyWorkBook.WorkSheets[
1 ].Cells[i, 2 ].value : =  ’yourCaption2’; 
MyWorkBook.WorkSheets[
1 ].Cells[i, 3 ].value : =  ’yourCaption3’; 
MyWorkBook.WorkSheets[
1 ].Cells[i, 4 ].value : =  ’yourCaption4’; 
Myworkbook.worksheets[
1 ].Range[’A1:D2’].Font.Color : =  clBlue; 
Myworkbook.worksheets[
1 ].Range[’A1:D1’].Font.Name : =  ’隶书’; 
Myworkbook.worksheets[
1 ].Range[’A1:D1’].Font.Size : =   18


i :
=   3
table1.close; 
table1.open; 
table1.First; 
while   not  table1.eof  do   begin  
MyWorkBook.WorkSheets[
1 ].Cells[i, 1 ].value : =  table1.FieldByName(’au_id’).AsString; 
MyWorkBook.WorkSheets[
1 ].Cells[i, 2 ].value : =  table1.FieldByName(’royaltyper’).AsInteger; 
MyWorkBook.WorkSheets[
1 ].Cells[i, 3 ].value : =  table1.FieldByName(’au_ord’).AsInteger; 
MyWorkBook.WorkSheets[
1 ].Cells[i, 4 ].value : =  table1.FieldByName(’title_id’).AsString; 
Inc(i); 
table1.Next 
end
ExcelApp.Visible :
=  true; 

s :
=  ’A3:D’ +  IntToStr(i - 1 ); 

// 设定字体. 栏宽等 
s :
=  ’A1:D’ +  IntToStr(i - 1 ); 
Myworkbook.worksheets[
1 ].Columns[ 1 ].ColumnWidth : =   20
Myworkbook.worksheets[
1 ].Columns[ 4 ].ColumnWidth : =   25
Myworkbook.worksheets[
1 ].Rows[ 1 ].RowHeight : =   50
Myworkbook.worksheets[
1 ].Rows[ 1 ].VerticalAlignment : =  $FFFFEFF4; 

Myworkbook.worksheets[
1 ].Range[s].Font.Name : =  ’仿宋’; 
s :
=  ’A2:D’ +  IntToStr(i - 1 ); 
Myworkbook.worksheets[
1 ].Range[s].Borders.LineStyle : =   1
// 页面设置 
MyworkBook.WorkSheets[
1 ].PageSetup.CenterHorizontally : =  true; 
Myworkbook.worksheets[
1 ].pagesetup.PrintTitleRows : =  ’A1’; 


// 不能设置 papersize 属性, 原因不明 
// MyworkBook.WorkSheets[ 1 ].PageSetup.PaperSize : =  $ 9

try  
MyWorkBook.saveas(’c:\’ 
+  Edit1.Text  +  ’.xls’); 
MyWorkBook.close; 
except   // 当存为一个已有的文档而又不覆盖时将 
MyWorkBook.close; 
// 产生一个例外 
end
ExcelApp.Quit; 
ExcelApp:
= Unassigned;  // 释放VARIANT变量 

end

 

 

转载于:https://www.cnblogs.com/awei0611/archive/2010/03/10/1682709.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值