(一) 使用动态创建的方法 
首先创建 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

 

 

posted on 2010-03-10 16:34  A.wei  阅读(443)  评论(0编辑  收藏  举报