1、对象的创建与关闭 

 

用Delphi从数据库中取得资料,然后导出到Excel中做成报表是个不错的选择,因为Excel强大的报表功能那可是没话说  
前提  
Delphi中要   
uses comobj;  
var Excel:Variant;  
一、Excel操作  
1.创建Excel对象  
Excel := CreateOleObject( Excel.Application );  
2.显示Excel  
Excel.Visible:=true;  
3.更改标题  
Excel.Caption:=Excel的标题;  
4.退出Excel  
Excel.Quit;  
二、工作表操作  
1.添加新工作簿(刚创建的Excel对象是没有工作表的):  
Excel.WorkBooks.Add;  
2.打开已存在的工作簿:  
Excel.WorkBooks.Open( C:ExcelDemo.xls );  
3.设置第2个工作表为活动工作表:  
Excel.WorkSheets[2].Activate;   
或   
Excel.WorksSheets[Sheet2].Activate;  
4.打印预览工作表:  
Excel.ActiveSheet.PrintPreview;  
5.打印输出工作表:  
Excel.ActiveSheet.PrintOut;  
6.工作表另存为:  
Excel.SaveAs( C:ExcelDemo1.xls );  
7.判断是否已经保存:  
if not Excel.ActiveWorkBook.Saved then  
Excel.ActiveSheet.PrintPreview;  
8.放弃存盘:  
Excel.ActiveWorkBook.Saved := True;  
9.关闭工作簿:  
Excel.WorkBooks.Close;  
10.删除“表1”工作表:  
Excel.Sheets(表1).delete;  
11.改“sheet1”工作表名为“123”  
Excel.Sheets(Sheet1).Name := 123;  

*******************************
eole=CREATEOBJECT(‘Excel.application’)                   &&
创建Excel对象
eole.Workbooks.add                                       &&
添加新工作簿
eole.Worksheets(“sheet3”).Activate                       &&
设置第3个工作表为激活工作表
eole.Workbooks.Open(“D:ABC11.xls”)                     &&
打开指定工作簿
eole.visible=.t.                                         &&
显示Excel窗口
eole.visible=.F.                                         &&
不显示Excel窗口
eole.Caption=”VFP应用程序调用Microsoft Excel”             &&
更改Excel标题栏
eole.ActiveWorkbook.SaveAs(“D:ABC22.xls”)              &&
工作表另为
eole.ActiveWorkbook.saved=.t.                            && 放弃存盘

*1.创建Excel对象
  eole=CREATEOBJECT(‘Excel.application’)

三、行/列设置  
1.设置指定列的宽度(单位:字符个数),以第一列为例:  
Excel.ActiveSheet.Columns[1].ColumnsWidth := 5;  
2.设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:  
Excel.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米  
3.插入一行或一列:  
a. Excel.ActiveSheet.Rows[2].Insert;  
b. Excel.ActiveSheet.Columns[1].Insert;  
4.删除一行或一列:  
a. Excel.ActiveSheet.Rows[2].Delete;  
b. Excel.ActiveSheet.Columns[1].Delete;  
5.自适应宽度  
Excel.ActiveSheet.Columns[1].EntireColumn.AutoFit; //第一列  
Excel.Cells.EntireColumn.AutoFit; //整个表所有列  
Excel.ActiveSheet.Rows[1:1].EntireRow.AutoFit; //第一行  
Excel.ActiveSheet.Columns[A:A].EntireColumn.AutoFit; //第一列  
6.居中显示J列  
Excel.Columns[J:J].HorizontalAlignment:=3;  
7.设置E列单元格式为3位小数数值  
Excel.Columns[E:E].NumberFormatLocal:=#,##0.000_   
8.设置E列单元格式为文字  
Excel.Columns[E:E].NumberFormatLocal:=@ 

eole.ActiveSheet.UsedRange.Copy                          &&
拷贝整个工作表
eole.ActiveSheet.Range(“A1:E2”).Copy                     &&
拷贝指定区域
eole.WorkSheet(“Sheet2”).Range(“A1”).PasteSpecial        && 粘贴

*  2.添加新工作簿

四、单元格设置  
1.设置单元格线框  
Excel.ActiveSheet.Range[B10:C13].Borders[澳门新葡萄京所有网站 ,N].LineStyle := xlNone  
Excel.ActiveSheet.Range[B10:C13].Borders[N].Weight := xlThin  

eole.ActiveWorkbook.Save                                 &&
存盘(自动存盘不提问)
eole.Workbooks.close                                     && 关闭工作簿
eole.quit                                                && 退出Excel

  eole.Workbooks.add

边框的类型 Borders[N]  
xlEdgeLeft 左=1  
xlEdgeRight 右=2  
xlEdgeTop 顶=3  
xlEdgeBottom 底=4  
xlDiagonalUp 左上右下=5  
xlDiagonalDown 左下右上=6  
xlEdgeLeft 外部左边框=7  
xlEdgeTop 外部上边框=8  
xlEdgeBottom 外部下边框=9  
xlEdgeRight 外部右边框=10  
xlInsideVertical 内部竖线=11  
xlInsideHorizontal 内部横线=12  
线条类型LineStyle,宽度Weight  
第7种=1,1  
第6种=2,2  
第3种=3,2  
第6种=4,2  
第4种=5,2  
第9种=6,3  
第12种=1,3  
第13种=1,4  
第2种=2,1  
单条线的LineStyle := xlContinuous  
双条线的LineStyle := xlDouble  
虚线 xlHairline 1  
实线 xlThin  
中实线 xlMedium  
粗实线 xlThick  
XLLineStyle等值参考Excel里面的VisualBasic对象浏览器帮助 (如图)  
2.给单元格赋值:  
Excel.Cells[1,4].Value := 第一行第四列;  
3.设置第一行字体属性(隶书,蓝色,加粗,下划线):  
Excel.ActiveSheet.Rows[1].Font.Name := 隶书;  
Excel.ActiveSheet.Rows[1].Font.Color := clBlue;  
Excel.ActiveSheet.Rows[1].Font.Bold := True;  
Excel.ActiveSheet.Rows[1].Font.UnderLine := True;  
4.设置整个表字体为9  
Excel.Cells.Font.Size:=9;  
5.在第8行之前插入/删除分页符:  
Excel.WorkSheets[1].Rows[8].PageBreak := 1; (0为删除)  
6.清除第一行第四列单元格公式:  
Excel.ActiveSheet.Cells[1,4].ClearContents;  

2、单元格的设置 

    激活指定的工作簿
    eole.WorkSheets(“工作簿名”).Activate

五、页面设置  
1.页脚和页眉  
Excel.ActiveSheet.PageSetup.LeftHeader := 页眉左  
Excel.ActiveSheet.PageSetup.CenterHeader := 页眉中  
Excel.ActiveSheet.PageSetup.RightHeader := 页眉右  
Excel.ActiveSheet.PageSetup.LeftFooter := 页脚左  
Excel.ActiveSheet.PageSetup.CenterFooter := 页脚中  
Excel.ActiveSheet.PageSetup.RightFooter := 页脚右  
2.页脚中间显示页数:  
Excel.ActiveSheet.PageSetup.CenterFooter := 第&P页/共&N页;  
3.页眉到顶端边距2cm:  
Excel.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;  
4.页脚到底端边距3cm:  
Excel.ActiveSheet.PageSetup.FooterMargin := 3/0.035;  
5.顶边距2cm:  
Excel.ActiveSheet.PageSetup.TopMargin := 2/0.035;  
6.底边距2cm:  
Excel.ActiveSheet.PageSetup.BottomMargin := 2/0.035;  
7.左边距2cm:  
Excel.ActiveSheet.PageSetup.LeftMargin := 2/0.035;  
8.右边距2cm:  
Excel.ActiveSheet.PageSetup.RightMargin := 2/0.035;  
9.页面水平居中:  
Excel.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;  
10.页面垂直居中:  
Excel.ActiveSheet.PageSetup.CenterVertically := 2/0.035;  
11.打印单元格网线:  
Excel.ActiveSheet.PageSetup.PrintGridLines := True;  
12.横向打印  
Excel.ActiveSheet.PageSetup.Orientation:=2

***********************************
eole.ActiveSheet.Columns(“D:D”).Delete                   && 删除列
eole.ActiveSheet.Columns(“A:B”).Delete                   && 删除列
eole.ActiveSheet.Columns(1).ColumnWidth=20               &&
列的宽度(单位:字符个数)
eole.ActiveSheet.Columns(2).ColumnWidth=30
eole.ActiveSheet.Columns(“C:BE”).ColumnWidth=9.5
eole.Selection.Columns.AutoFit                           && 最适合的列宽

*  3.设置第3个工作表为激活工作表

ExcelWorksheet1.PageSetup.CenterFooter:=’第 &P 页,共 &N 页’; //设置页脚 
 ExcelWorksheet1.Cells.Item[2,3].select; //选中第二行第三列的表格 
 ExcelApplication1.ActiveWindow.FreezePanes:=True; //将此表格设为冻结 
 ExcelWorksheet1.PageSetup.Orientation:=2; //设置为横向

eole.ActiveSheet.Range(“b3:d3”).Borders(2).Weight=3      &&
指定边框线宽度
                         
(其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;
                              
LineStyle值:1与7-细实、2-细虚、4-点虚、9-双细实线)

  eole.Worksheets(“sheet1”).Activate

eole.ActiveSheet.Range(“A1:BE29”).Borders(1).LineStyle=1 &&
设置四个边框线条的类型
eole.ActiveSheet.Range(“A1:BE29”).Borders(2).LineStyle=1 &&
设置四个边框线条的类型
eole.ActiveSheet.Range(“A1:BE29”).Borders(3).LineStyle=1 &&
设置四个边框线条的类型
eole.ActiveSheet.Range(“A1:BE29”).Borders(4).LineStyle=1 &&
设置四个边框线条的类型

*  4.打开指定工作簿

eole.ActiveSheet.Rows(1).Insert                          &&
在第1行之前插入一行
eole.ActiveSheet.Columns(2).Insert                       &&
在第2列之前插入一列
eole.cells(1,2).value=”ABTMC”                            &&
给单元格赋值
eole.cells(2,2).value=”&BBBB”                            &&
给单元格赋值
eole.ActiveSheet.Cells(1,4).ClearContents                &&
清除单元格公式

  eole.Workbooks.add(“E:/E_temp/ABC.xls”)

eole.ActiveSheet.Rows(1).RowHeight=1/0.035               &&
设置指定行的高度(单位:磅)
                                                        
*(行高为1厘米,1磅=0.035厘米)
eole.ActiveSheet.ROWS(1).Font.Name=”黑体”                && 设置字体
eole.ActiveSheet.ROWS(1).Font.Size=14                    &&
设置字体大小
eole.ActiveSheet.ROWS(1).Font.Bold=.t.                   &&
设置整行字体为粗体
eole.ActiveSheet.Cells(1,1).Font.Italic=.t.              &&
设置字体为斜体
eole.Range(“A3:BE3”).select
eole.selection.WrapText = .T.                            && 自动换行
eole.selection.HorizontalAlignment=3                     &&
水平方向 2左对齐,3居中,4右对齐
eole.selection.VerticalAlignment = 2                     &&
垂直方向 1靠上 ,2居中,3靠下

*  5.显示Excel窗口

eole.Range(“A2:B2”).select
eole.selection.MergeCells = .T.                          && 合并单元
eole.selection.HorizontalAlignment=2                     &&
水平方向 2左对齐,3居中,4右对齐
eole.selection.VerticalAlignment = 2                     &&
垂直方向 1靠上 ,2居中,3靠下

  eole.visible=.t.

eole.Range(“A5:M5”).select
eole.Selection.Interior.ColorIndex = 34                  &&
设置行颜色为[淡兰]

*  6.更改Excel标题栏

eole.ActiveSheet.Range(“A1:BE29”).NumberFormatLocal = ;
“_ * #,##0.00_ ; _ * -#,##0.00_ ;_ * “+”-“+”??_ ;_ @_
”  && 指定区域内的数字显示格式

  eole.Caption=”VFP应用程序调用Microsoft Excel”

3、打印页面的设置 

*  7.给单元格赋值

*********************************
eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035          &&
设置页眉到顶端边距为2厘米 
eole.ActiveSheet.PageSetup.FooterMargin=3/0.035          &&
设置页脚到底边距为3厘米
eole.ActiveSheet.PageSetup.TopMargin=4/0.035             &&
设置顶边距为4厘米
eole.ActiveSheet.PageSetup.BottomMargin=4/0.035          &&
设置底边距为4厘米
eole.ActiveSheet.PageSetup.LeftMargin=2/0.035            &&
设置左边距为2厘米
eole.ActiveSheet.PageSetup.RightMargin=2/0.035           &&
设置右边距为2厘米
eole.ActiveSheet.PageSetup.CenterHorizontally=.t.        &&
设置页面水平居中
eole.ActiveSheet.PageSetup.CenterVertically=.t.          &&
设置页面垂直居中
eole.ActiveSheet.PageSetup.PaperSize=8                   &&
设置页面纸张大小
                                                           (1-窄行8 5
11 39-宽行14 11)
eole.ActiveSheet.PageSetup.Orientation=2                 && 横向
eole.ActiveSheet.PageSetup.PrintTitleRows=”$1:$3″        && 定义固定行
eole.ActiveSheet.PageSetup.PrintTitleColumns=”$A:$C”     && 定义固定列
eole.ActiveSheet.PageSetup.CenterHeader= “&14&BTMC”      && 设置页眉
eole.ActiveSheet.PageSetup.CenterFooter=”表__第&P页”      && 设置页脚

*  eole.cells(行,列).value=XM(XM为数据库字段名)
  eole.cells(1,4).value=’ASDFASDFASDFASDFADSF’

eole.Worksheets(“Sheet1”).Rows(18).PageBreak=1           &&
在第18行之前插入分页符
eole.ActiveSheet.Columns(4).PageBreak=0                  &&
在第4列之前删除分页符
eole.ActiveSheet.PageSetup.PrintGridlines=.t.            &&
打印单元格网线

*  8.设置指定列的宽度(单位:字符个数)

eole.ActiveSheet.PrintPreview                            &&
打印预览工作表
eole.ActiveSheet.PrintOut                                &&
打印输出工作表

  eole.ActiveSheet.Columns(1).ColumnWidth=5

4、记录条数的利用 

*  9.设置指定行的高度(单位:磅)

*********************************
一般来讲,EXCEL表的来源为DBF文件,列、行应该是可以预知的
USE 111
COUNT TO AAA
USE
FWQ  = “A3:M”+ALLT(STR(AAA+?))  ?为EXCEL表插入的行数
eole.ActiveSheet.Range(FWQ).Borders(1).LineStyle=1       &&
设置四个边框线条的类型
eole.ActiveSheet.Range(FWQ).Borders(2).LineStyle=1       &&
设置四个边框线条的类型
eole.ActiveSheet.Range(FWQ).Borders(3).LineStyle=1       &&
设置四个边框线条的类型
eole.ActiveSheet.Range(FWQ).Borders(4).LineStyle=1       &&
设置四个边框线条的类型

  eole.ActiveSheet.Rows(1).RowHeight=1/0.035 &&
设定行高为1厘米,1磅=0.035厘米

5、VFP下直接调用EXCEL、WORD文件 

*  (设定行高为1厘米,1磅=0.035厘米)

*********************************
DECLARE INTEGER ShellExecute IN shell32.DLL INTEGER HWND,STRING, ;
                        STRING lpszFile, STRING, STRING, INTEGER
operate= “open”
ShellExecute(0,operate,”C:111.XLS”,0,0,1)               && EXCEL文件
ShellExecute(0,operate,”C:111.DOC”,0,0,1)               && WORD文件

*  10.在第18行之前插入分页符

****************************************

  eole.Worksheets(“Sheet1”).Rows(18).PageBreak=1

*  11.在第4列之前删除分页符

  eole.ActiveSheet.Columns(4).PageBreak=0

*  12.指定边框线宽度(Borders参数如下)

  eole.ActiveSheet.Range(“b3:d3”).Borders(2).Weight=3

*  13.设置四个边框线条的类型

  eole.ActiveSheet.Range(“b3:d3”).Borders(1).LineStyle=1

*  (其中Borders参数:1-左、2-右、3-顶、4-底、5-斜、6-斜/;LineStyle
值:1与7-细实、2-细虚、4-点虚、9-双细实线)

*  14.设置页眉

  eole.ActiveSheet.PageSetup.CenterHeader=”报表1″

*  15.设置页脚

  eole.ActiveSheet.PageSetup.CenterFooter=”第&P页”

*  16.设置页眉到顶端边距为2厘米

  eole.ActiveSheet.PageSetup.HeaderMargin=2/0.035

*  17.设置页脚到底边距为3厘米

  eole.ActiveSheet.PageSetup.FooterMargin=3/0.035

*  18.设置顶边距为2厘米

  eole.ActiveSheet.PageSetup.TopMargin=2/0.035

*  19.设置底边距为4厘米

  eole.ActiveSheet.PageSetup.BottomMargin=4/0.035

*  20.设置左边距为2厘米

  eole.ActiveSheet.PageSetup.LeftMargin=2/0.035

*  21.设置右边距为2厘米

  eole.ActiveSheet.PageSetup.RightMargin=2/0.035

*  22.设置页面水平居中

  eole.ActiveSheet.PageSetup.CenterHorizontally=.t.

*  23.设置页面垂直居中

  eole.ActiveSheet.PageSetup.CenterVertically=.t.

*  24.设置页面纸张大小(1-窄行8?5?11 39-宽行14?11)

  eole.ActiveSheet.PageSetup.PaperSize=1

    可为下列 XlPaperSize
常量之一(某些打印机可能不支持所有的这些纸张大小);
    常量               数值  意义;
    xlPaperLetter         1  Letter (8-1/2 in. x 11 in.)
    xlPaperA3             8  A3 (297 mm x 420 mm)
    xlPaperA4             9  A4 (210 mm x 297 mm)
    xlPaperA4Small       10  A4 Small (210 mm x 297 mm)
    xlPaperA5            11  A5 (148 mm x 210 mm)
    xlPaperB4            12  B4 (250 mm x 354 mm)
    xlPaperB5            13  B5 (182 mm x 257 mm)
    xlPaperFanfoldUS     39  U.S. Standard Fanfold (14-7/8 in. x 11
in.)
    xlPaperUser              用户自定义

*  25.打印单元格网线

  eole.ActiveSheet.PageSetup.PrintGridlines=.t.

*  26.拷贝整个工作表

  eole.ActiveSheet.UsedRange.Copy

*  27.拷贝指定区域

  eole.ActiveSheet.Range(“A1:E2”).Copy

*  28.粘贴

  eole.Worksheets(“sheet2”).Activate

  eole.ActiveSheet.Range(“F1”).PasteSpecial

*  29.在第2行之前插入一行

  eole.ActiveSheet.Rows(2).Insert

*  30.在第2列之前插入一列

  eole.ActiveSheet.Columns(2).Insert

*  31.设置字体

  eole.ActiveSheet.Cells(2,1).Font.Name=”黑体”

*  32.设置字体大小

  eole.ActiveSheet.Cells(1,1).Font.Size=25

*  33.设置字体为斜体

  eole.ActiveSheet.Cells(1,1).Font.Italic=.t.

*  34.设置整列字体为粗体

  eole.ActiveSheet.Columns(1).Font.Bold=.t.

    35.合并单元格,重要!
    _ole_excel.Worksheets(“工作簿名”).Range(范围).merge     &&
范围必须指定起止的单元格,如”A1:B4″

eole.ActiveSheet.Range(“A1:B4”).merge &&合并当前工作表中指定范围

    36.撤销合并单元格,上述操作的逆操作
    _ole_excel.Worksheets(“工作簿名”).Range(范围).unmerge

   
37.在单元格中设置公式(重要,一般可以用来实现计算汇总、求平均等很多功能)
    _ole_excel.cells(行,列).value = “=公式”    &&
可以使用所有VBA内部函数,如sum()等。注意:不能使用VFP的函数啊!

*  35.清除单元格公式

  eole.ActiveSheet.Cells(1,4).ClearContents

*  36.打印预览工作表

  eole.ActiveSheet.PrintPreview

*  37.打印输出工作表

  eole.ActiveSheet.PrintOut

*  38.工作表另为

  eole.ActiveWorkbook.SaveAs(“c:/temp/22.xls”)

*  39.放弃存盘

  eole.ActiveWorkbook.saved=.t.

*  40.关闭工作簿
    WAIT WINDOW ‘ASDFASDF’
  eole.Workbooks.close

*  41.退出Excel

  eole.quit

来自: