delphi设置excel
转载自:http://hi.baidu.com/yuuidhnilrbbovd/item/054b4a5f568c6409e6c4a5be
Delphi操作Excel
要在Delphi中控制Excel,就必须用到OLE自动化。现在一般采用OLE2来创建OLE对象,当激活一个OLE对象时,服务器程序仅在容器程序内部激活,这就是所谓的“就地激活”(in-place activation)。
创建Excel文件时,先创建一个OLE对象,然后在对象中建立工作表worksheet,如函数createExcel所示:
function createExcel:variant;
var
v:variant;
sheet:variant;
begin
v:=createoleobject('Excel.Application');//创建OLE对象
v.visible:=true;
v.workbooks.add(-4167); //添加工作表
v.workbooks[1].sheets[1].name:='test';
sheet:=v.workbooks[1].sheets['test'];
return v;
end;
2 数据表格控制
Excel表格的控制,主要包括数据的导入、修改;单元格的合并、边框的控制;表格的复制、粘贴等。当报表格式一定的情况下,表格的复制、粘贴显得尤为重要,这样,可以先制作一个文件模板,然后按照实际需要输出多页报表即可。
(1)数据的导入(importData)
procedure importData;
var
I,j:integer;
v:variant;
begin
v:=createExcel; //创建Excel文件test
for I:=0 to maxcolumn do
begin
for j:=0 to maxrow do
v.workbooks[1].sheets[1].cells[I,j]:=I*j; //导入数据
end;
end;
(2)单元格的合并、边框的控制(lineStylecontrol)
单元格的合并,是在选定合并范围的情况下进行的。边框控制可以操作边框线条的是否显示。其他方式的控制,可以仿照下面过程进行。
procedure lineStylecontrol;
var
v,sheet,range:variant;
begin
v:=createExecl;
sheet:= v.workbooks[1].sheets[1];
range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];//选定表格
range.select;
range.merge; //合并单元格
range.borders.linestyle:=xlcontinuous; //置边框线可见
range.font.size:=9; //改变表格内文本字体大小
end;
(3)表格的复制与粘贴(copyandPaste)
procedure copyandPaste;
var
v,sheet,range:variant;
begin
v:=createExecl;
sheet:= v.workbooks[1].sheets[1];
range:=sheet.range[sheet.cells[1,1],sheet.cells[39,30]];
range.select; //选定要复制的表格
range.copy; //复制选定的表格
sheet.range[sheet.cells[40,1],sheet.cells[40,1]].select; //选择要粘贴的位置
sheet.paste; //粘贴表格
end;
3 文件的保存
文件保存是在创建文件的基础上进行的,过程saveFile说明了文件保存过程中应该注意的问题:
procedure saveFile;
var
sheet,v:variant;
begin
v:=createExcel;
if savedialog.execute then
begin
v.workbooks[1].saveas(savedialog.FileName);//保存文件
v.workbooks[1].close; //关闭工作表
v.quit; //关闭Excel
v := unassigned;
end;
end;
-------------------------------------------------------------------------------------------------
1.创建Excel对象
eole=CREATEOBJECT(′Excel.application′)
2.添加新工作簿
eole.Workbooks.add
3.设置第3个工作表为激活工作表
eole.Worksheets(″sheet3″).Activate
4.打开指定工作簿
eole.Workbooks.Open(″c:\temp\ll.xls″)
5.显示Excel窗口
eole.visible=.t.
6.更改Excel标题栏
eole.Caption=″VFP应用程序调用Microsoft Excel″
7.给单元格赋值
eole.cells(1,4).value=XM(XM为数据库字段名)
8.设置指定列的宽度(单位:字符个数)
eole.ActiveSheet.Columns(1).ColumnWidth=5
9.设置指定行的高度(单位:磅)
eole.ActiveSheet.Rows(1).RowHeight=1/0.035
(设定行高为1厘米,1磅=0.035厘米)
10.在第18行之前插入分页符
eole.Worksheets(″Sheet1″).Rows(18).PageBreak=1
11.在第4列之前删除分页符
eole.ActiveSheet.Columns(4).PageBreak=0
12.指定边框线宽度(Borders参数如下)
ole.ActiveSheet.Range(″b3:d3″).Borders(2).Weight=3
13.设置四个边框线条的类型
eole.ActiveSheet.Range(″b3:d3″).Borders(2).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厘米
veole.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
25.打印单元格网线
eole.ActiveSheet.PageSetup.PrintGridlines=.t.
26.拷贝整个工作表
eole.ActiveSheet.UsedRange.Copy
27.拷贝指定区域
eole.ActiveSheet.Range(″A1:E2″).Copy
28.粘贴
eole.WorkSheet(″Sheet2″).Range(″A1″).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.清除单元格公式
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.关闭工作簿
eole.Workbooks.close
41.退出Excel
eole.quit
-----------------------------------------------------------------------------------------------
一、创建Excel对象类
CREATEOBJECT(ClassName[eParameter1,eParameter2,...])
其中,ClassName指明欲建立对象的类名。eParameter1,eParameter2…是用来传递参数给OLE对象的
例如,在VFP中欲建立一Excel工作表对象:MySheet=CREATEOBJECT("Excel.Sheet")就行了。
Excel对象层次模型
引用Excel文件Getobject("Excel文件名")
单元格:Excel.Application.Workbooks(i).Worksheets(i).Cells(i,i).X 注:i代表引用标号,X表示任何属性与方法
单元区域:Excel.Application.Workbooks(i).Worksheets(i).Range("A1:B1")
函数:Excel.Application.Average(Worksheets("Sheet1").Range("A1:A4")) 注:求平均值
Excel.Application.Sum(Worksheets("Sheet1").Range("A1:A4")) 注:求和
Excel.Application.Max(Worksheets("Sheet1").Range("A1:A4")) 注:求最大值
Excel.Application.Format(Date,"mmmm d,yyyy") 注:返回格式化日期(如:December 20,2003)
集合操作:Excel.Application.Workbooks.Add() 注:添加一个新的工作簿
Excel.Application.Workbooks.Count 注:返回工作簿个数
Excel.Application.Workbooks("Book1").Delete() 注:删除工作簿Book1
Excel.Application.Workbooks("Book1").Worksheets.Add() 注:在工作簿Book1中添加一个新工作表
Excel.Application.Workbooks.("Book1").Worksheets.Count 注:返回工作表个数
Excel.Application.Workbooks("Book1").Worksheets("Sheet1").Cells.X 注:引用全体单元格
Excel.Application.Workbooks("Book1").Worksheets("Sheet1").Delete() 注:删除工作表Sheet1
InputBox(Prompt,[Title],[Default],[Left],[Top],[HelpFile],[HelpContextID],[Type]) && 输入数据框
附加说明:Type=格式,0=公式,1=数字,2=文本,4=逻辑值,8=单元格引用,16=错误值,64=数组
Application对象常用属性和方法
ActiveWorkbook && (O)当前活动的工作簿
ActiveSheet && (O)当前活动的工作表
ActiveCell && (O)当前活动的单元格
ThisWorkbook && (O)当前正在执行过程的工作簿
OperatingSystem && (C)操作系统
Selection && (O)当前选择的对象
CutCopyModel && (L)是否显示工作表中围绕选定单元格,指示剪切、复制状态的移动虚线
Quit() && 退出Excel
Run() && 执行Excel宏
Workbook对象常用属性和方法
ActiveSheet && (O)当前工作簿
Activate() && 激活工作簿
Open(fileName) && 打开工作簿
Close() && 关闭工作簿
Save() && 以默认名字(如Book1)保存工作簿,且不显示对话框
SaveAs(FileName,FileFormat,Password,WriteResPassword,ReadOnlyRecommended) && 工作簿另存为,不显示对话框
PrintOut() && 打印工作簿
PrintPreview() && 工作簿打印预览
Worksheet对象常用属性和方法
Name && (C)工作表名字
Cells && (O)引用工作表中的所有单元格
Activate() && 激活工作表
Add() && 添加工作表
CheckSpelling() && 检查工作表中内容的拼写
Delete() && 删除工作表
Paste() && 执行复制
Cell/Range对象的常用属性和方法 注:Cell代表单个单元格,Range代表一组单元格,实际中以Range应用最广泛
ActiveCell.CurrentRange && (O)返回从当前激活的单元格开始第一个空行和空列包围的区域
Range.Address && (C)当前Range位置
Range.Count && (N)Range中单元格数量
Range.Formula && (C)计算显示值的公式
Range.NumberFormat && (C)数字格式
Range.Offset(x,y) && (N)偏移量(用于从一个Range移动到另一个Range)
Range.Resize(x,y) && (N)重设Range的大小
Range.Value && (X)Range的当前值
Range.Activate() && 激活一个Range
Range.Clear() && 清除一个Range的内容
Range.Copy() && 拷贝到剪贴板
Range.Cut() && 剪切到剪贴板
Range.Paste() && 从剪贴板粘贴到当前Range
Range.PasteSpecial() && 选择性粘贴
Range.Select() && 选择一个Range
以下是Cell或Range对象的字体属性
Font.Name && (C)字体名称
Font.FontStyle && (C)字体风格
Font.Size && (N)字体大小
Font.Bold && (L)是否为粗体
Font.Italic && (L)是否为斜体
Font.StrikeThrough && (L)是否显示删除线
Font.SuperScript &&
Font.OutlineFont && (L)是否显示空心字
Font.Shadow && (L)是否有阴影
Font.Underline && (L)是否有下划线
Font.ColorIndex && (N)颜色
1.建立OLE对象
MyExcel=CREATEOBJECT("Excel.Application") 注:建立一个Excel对象(不可见)
MyExcelSheet=CREATEOBJECT("Excel.Sheet") 注:直接建立一个Excel工作表对象(不可见,且只有一个表)
2.添加工作簿对象
MyExcel.Workbooks.Add()
3.建立工作簿中的工作表对象
MyExcel.Workbooks(1).Sheets.Add()
5.引用工作簿
MyExcel.Workbooks(1) 注:Workbooks对象可以使用数字编号或工作簿名字
MyExcel.Workbooks("Book1")
6.引用工作簿中的某一工作表
MyExcel.Workbooks(1).Sheets(1) 注:Sheets对象只能使用数字编号
MyExcel.Workbooks("Book1").Worksheets(1) 注:Worksheets对象可以使用数字编号或工作表名字
MyExcel.Workbooks("Book1").Worksheets("Sheet1")
7.引用工作簿中的某一工作表中的某一单元格数据
MyExcel.Workbooks(1).Sheets(1).Cells(1,1).Value
MyExcel.Workbooks(1).Worksheets(1).Cells(1,1).Value
MyExcel.Workbooks(1).Worksheets("Sheet").Cells(1,1).Value
8.引用工作簿中的某一工作表中的某一区域
MyExcel.Workbooks("Book1").Worksheets("Sheet").Range("A2:B5")
注:Delphi中用时把上边的()换成[]就可以了。

浙公网安备 33010602011771号