EXCEL的OLE方法和属性

852zxc 2004-05-11 10:05:19
想要EXCEL的常用OLE方法和属性,请问谁能提供一下呢?
...全文
1433 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuanbo824 2004-06-14
  • 打赏
  • 举报
回复
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
PB控制也一样的的.

42.得到sheet的数量、名称
string sheetname[]
int i
for i=1 to MyOLE.ActiveWorkBook.Sheets.count
sheetname[i]= MyOLE.ActiveWorkBook.Sheets[i].name
next
43.连接excel
MyOLE=Create OLEObject
ConnectErr=MyOLE.ConnectToNewObject ("excel.Application")
MyOLE.visible=false
//打开指定的XLS文件激活workbooks
MyOLE.application.workbooks.Open (FilePath)
//对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。
MyOLE.Application.DisplayAlerts = False

if isnull(MyOLE) then return -1 ;
if ConnectErr <0 then
choose case ConnectErr
case -1
messagebox('错误提示','无效的调用')
case -2
messagebox('错误提示','类名没发现')
case -3
messagebox('错误提示','对象不能创建')
case -4
messagebox('错误提示','文件不能连接')
case -5
messagebox('错误提示','不能连接现在的对象')
case -6
messagebox('错误提示','文件无效')
case -7
messagebox("错误提示","文件不存在或已经打开")
case -8
messagebox("错误提示","服务器不能装载选择的文件")
case -9
messagebox("错误提示","其他错误")
end choose
return -1
end if

44.行列合并
string worksheet,beginRowcol,EndRowCol

MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol+":"+EndRowCol).Select
MyOLE.ActiveWorkBook.Sheets(worksheet).Range(BeginRowCol+":"+EndRowCol).Merge
45.sheet改名
MyOLE.ActiveWorkBook.Sheets(olename).select
MyOLE.ActiveWorkBook.Sheets(olename).name=newname
46.修改背景色
xl.ActiveSheet.Columns(2).Interior.colorindex =17
47.




Open 方法


打开一个工作簿。

语法

expression.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMRU)

expression 必选。该表达式返回一个 Workbooks 对象或 RecentFile 对象。

FileName String 类型,必选。要打开的工作簿文件名。

UpdateLinks Variant 类型,可选。指定文件中的链接的更新方式。如果省略本参数,则提示用户选择链接的更新方式。否则,该参数的取值应为下表的某个值。

取值 意义
0 不更新任何引用。
1 更新外部引用,但不更新远程引用。
2 更新外部引用,但不更新外部引用。
3 更新所有远程引用和外部引用。


如果 Microsoft Excel 正在打开以 WKS、WK1 或 WK3 格式存储的文件并且 UpdateLinks 参数设为 2,则 Microsoft Excel 根据与该文件关联的图形创建图表。如果该参数设为 0,则不创建任何图表。

ReadOnly Variant 类型,可选。如果为 True 则以只读模式打开工作簿。

Format Variant 类型,可选。如果 Microsoft Excel 正在打开一个文本文件,则该参数用于指定分隔字符,如下表所示。如果省略本参数,则使用当前的分隔字符。

取值 分隔字符
1 制表符
2 逗号
3 空格
4 分号
5 没有分隔符
6 自定义字符(参阅 Delimiter 参数)


Password Variant 类型,可选。该字符串为用于打开一个受保护工作簿的密码。如果省略该参数并且指定工作簿已设置密码,则提示用户输入密码。

WriteResPassword Variant 类型,可选。该字符串为一个写保护工作簿的写入权密码。如果省略该参数并且指定工作簿已设置密码,则提示用户输入密码。

IgnoreReadOnlyRecommended Variant 类型,可选。如果为 True 则设置 Microsoft Excel 不显示建议只读消息(如果该工作簿以“建议只读”选项保存)。

Origin Variant 类型,可选。如果该文件为文本文件,则该参数用于指示该文件的来源于何种操作系统(以便对代码页和回车/换行(CR/LF)进行正确映射)。可为下列 XlPlatform 常量之一: xlMacintosh、xlWindows 或 xlMSDOS。如果省略本参数,则使用当前操作系统。

Delimiter Variant 类型,可选。如果该文件为文本文件并且 Format 参数设为 6,则此参数用于指定用作分隔符的字符。例如,可使用 Chr(9) 代表制表符,使用“,”代表逗号,使用“;”代表分号或者使用自定义字符。如果该参数为字符串,则只使用该字符串的第一个字符。

Editable Variant 类型,可选。如果该文件为 Microsoft Excel 4.0 加载宏,则该参数为 True 时可在可见窗口中打开该加载宏。如果该参数设为 False 或者省略该参数,则该加载宏以隐藏方式打开,并且不能设为可见。本选项不能应用于由 Microsoft Excel 5.0 或更高版本的 Microsoft Excel 创建的加载宏。如果该文件是 Excel 模板,则参数为 True 时,会打开指定模板进行编辑。参数为 False 时,可根据指定模板打开新的工作簿。默认值为 False。

Notify Variant 类型,可选。如果该文件不能以可读写模式打开,则若该参数设为 True 可将该文件添加到文件通知列表。Microsoft Excel 将以只读模式打开该文件并轮询文件通知列表,当文件通知列表中的该文件可用时则通知用户。如果该参数设为 False,或者省略该参数,则不请求任何通知,并且不能打开任何不可用的文件。

Converter Variant 类型,可选。打开文件时试用的第一个文件转换器的索引号。首先使用的是指定的文件转换器;如果该转换器不能识别此文件,则试用所有的转换器。转换器索引号由 FileConverters 方法所返回的转换器行号组成。

AddToMru Variant 类型,可选。如果为 True 则将该工作簿添加到最近使用文件列表中。默认值为 False。

说明

如果正在打开的工作簿包含 Auto_Open 宏,则若在 Visual Basic 中打开该工作簿这些宏将不执行。如果要执行 Auto_Open 宏,必须使用 RunAutoMacros 方法。
852zxc 2004-05-11
  • 打赏
  • 举报
回复
看过了,没有
workhand 2004-05-11
  • 打赏
  • 举报
回复
看一下帮助应该有吧
852zxc 2004-05-11
  • 打赏
  • 举报
回复
我要读入的数据是运动会报名表。在读入时要判断数据的正确性(报名信息的正确性),那么应该怎样读取EXCEL文件中的数据呢?
superbee111 2004-05-11
  • 打赏
  • 举报
回复
帮你提前一下,再送你一篇文章,我也在找这方面东西


在PowerBuilder中利用自动化技术调用Excel处理与打印表格
刘涛 潘存云
(国防科技大学机电学院)
摘要Microsoft公司的Office办公软件中的Excel是一种专业的电子表格处理软件,Microsoft公司对它的Office软件系列都提供了对自动化技术的支持,这样就可以通过其他高级编程语言调用Office软件系列,利用其成熟而可靠的技术与功能来轻松实现特定功能。本文中,将通过自动化技术,实现在PowerBuilder中调用Excel来实现表格的输出与打印。

关键词 自动化 Excel PowerBuilder 表格

1 问题的提出
在为某企业设计电子图文档管理系统中,用户提出要求,要能够快速输出某些电子表格。在未使用自动化技术之前,该企业使用的是AutoCad软件来一次性将多个表格生成到一个DWG文件中,然后通过绘图仪出图。这种做法的好处在于能够有效的节省企业的开支,一次性生成大量的表格。但是,缺点也是明显的:这种做法欠缺灵活性,当遇到只需要输出少量表格的情况时,做法过于复杂。即这种做法非常适合于大量表格的批量输出,而不适合个别表格的单独输出。正是在这种背景下,我们提出了使用Excel电子表格处理软件来处理该企业的表格输出问题。
Excel软件是专门为处理各式电子表格而设计,它能够非常高效而专业的处理各式表格,并且非常关键的是:它具有表格计算汇总功能,在这一点上,AutoCad软件是无法相比的。另外一个原因,在当前的企业中,打印机的使用日益普及,打印速度也日益加快,当多个用户同时需要打印时,可以通过高速的网络打印机来轻松实现,在这一点上,使用Excel也具有一定的优势。
2 自动化技术
Microsoft公司提供的自动化技术,简单的说,就是将某一个应用程序的功能(可能是一部分)当作一系列的对象来向其他的外部应用程序暴露(Expose),这个外部应用程序就可以使用这些对象,这个过程就被称为自动化(Automation)。例如,Excel,我们可以将它的大部分功能当作一系列对象来加以暴露,然后在另外的应用程序中使用这些对象,这就是使用自动化对象来调用Excel完成指定功能的关键所在。
一个应用程序的可访问对象被称为对象模型(Object Model),如果能够使用自动化来操纵一个程序的对象模型就意味着可以重复使用组件。例如,使用自动化,利用Excel中已经编写和测试好的代码来进行复杂的数学运算,这就省去了程序员亲自动手编写和调试复杂代码的麻烦。
暴露对象的程序被称为服务器(Servers),使用这些对象的程序被称为客户(Clients)。在这里,我们把Excel当作自动化服务器,把我们的PowerBuilder应用程序当作客户,这样就可以通过自动化技术来实现特定的表格生成和打印功能。
在大多数的Office软件中都包含一个Application对象,Excel也不例外,这个对象是Excel对象模式中的基础对象,它包含了许许多多的成员(Member),但是在这里,我们只需要使用到其中的一部分。
3 在PowerBuilder中使用自动化技术
PowerBuider是Sybase公司推出的一种高级数据库应用程序开发环境,在这个环境中开发数据库应用程序,使用其专利技术--DataWindow,可以很轻松的开发出非常专业的数据库应用程序。此外,PowerBuilder还支持多种数据库,能够很轻松的与目前流行的MS SQL Server、Oracle等企业级数据库建立连接,处理各种事务。
PowerBuilder中的编程语言被称为脚本(Script),实际上,使用PowerBuilder编写的程序也是事件驱动,在界面设计上也完全做到了“所见即所得”,并完全使用面向对象的编程思想,它还提供了对OLE、DDE、Automation等技术的支持,下面就来说明如何在PowerBuilder中使用自动化技术。
首先,声明一个OLE对象,如下:
OLEObject OLE_MyExcel
其次,创建该OLE对象,如下:
OLE_MyExcel =Create OLEObject
然后,使用PowerBuilder中的ConnectToNewObject函数来创建一个新的OLE对象,并且连接到该对象上,如下:
OLE_MyExcel. ConnectToNewObject ("excel.Application")
调用该函数时,如果成功的话,返回值是0,否则就意味着调用失败。
到此,自动化的准备工作已经完成,下面是具体的操作过程。
4 处理和打印表格
在调用Excel时,首先需要解决的一个问题是是否让Excel可见,即是否为后台操作。这个问题可以简单的通过设置Visible属性加以控制,如果希望Excel后台运行,可以简单的编写如下语句:
OLE_MyExcel.visible=false
然后是打开指定的XLS文件,具体的语句如下:
OLE_MyExcel.Application.Workbooks.Open ("d:\excel-example.xls")
要操纵数据列表中的数据单元,就必须对ActiveCell对象进行操纵,该对象是Application对象中一项属性。将数据输入到一个数据单元包括两个步骤:第一是选择一个数据单元,第二是将数据传递给它。选择一个数据单元通过调用Range对象的Select()方法就可以完成,Range对象是用来选择一个或多个数据单元的。Select()方法需要起始的行数、列数和结束的行数、列数来确定所选择的数据单元。如果只选择一个单独的数据单元,就可以忽略结束的行、列数。当范围被设定以后,将数据传递给ActiveCell对象(引用了被Range对象指定的数据单元)的FormulaR1C1属性。如下:
OLE_MyExcel.Range("c10").Select()
OLE_MyExcel.ActiveCell.FormulaR1C1 = sle_2.text //Sle_2为一个静态文本框控件
OLE_MyExcel.Range("J10").Select()
……
如果希望得到一系列数值的和,则需要首先使用Select()方法来指定需要求和的Cell的范围,然后指定存放和的Cell位置,最后调用SUM方法即可,如下:
OLE_MyExcel.Range(“A1:D1”).Select()
OLE_MyExcel.Range(“E1”).Activate()
OLE_MyExcel.ActiveCell.FormulaR1C1 = “=SUM(RC[-4]:RC[-1])”
当然还可以进行其他方面的设置,例如把字体设置为粗体(Bold),则可以编写如下代码:
OLE_MyExcel.Range(“A1:E1”).Select()
OLE_MyExcel.Selection.Font.Bold = True
至于其他的设置可以参考相关书籍。
至于表格的打印,则是简单的调用PrintOut()方法即可,但是需要首先指定打印的范围,如下是打印名为“Sheet1”的WorkSheet的代码:
OLE_MyExcel.Worksheets("sheet1").Activate()
OLE_MyExcel.ActiveSheet.PrintOut()
接下来是关于对XLS文件进行了改动以后,在关闭该文件时是否需要向用户提出警告。这个问题只需要简单的对OLE_MyExcel.Application.DisplayAlerts属性进行设置即可,为True时弹出警告框,为False时不弹出警告框,保存所作的修改。
最后一步,在作完所有工作以后,需要关闭自动化对象,撤销与自动化服务器的连接,销毁OLE对象,因为使用自动化程序,尤其是Word或Excel这样的Office程序,所消耗的系统资源是很庞大的,因此在每次工作完成之后,需要释放这部分系统资源。如下:
OLE_MyExcel.Application.quit()
OLE_MyExcel.DisConnectObject()
destroy OLE_MyExcel
5 结束语
在使用了自动化技术以后,完满的解决了原来的表格处理问题,可以非常方便的对各种表格进行小批量的处理与打印,非常灵活。如果能够与企业的数据库结合起来,通过外部程序将数据成批输入,亦可解决大批量数据输出的问题,不失为一条好的解决方案。
在实际应用中,通过与企业数据库相结合,使用此方法自动填写了包含了大量数据的XLS文件,并可以通过打印机打印出来,如图1所示。


740

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 脚本语言
社区管理员
  • 脚本语言社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧