请问那里有对word和excel编程的源代码
解决方案 »
- 如何与自己写的系统服务进行消息通讯??
- 关于导入文件的问题
- delphi TStringGrid 合并单元格
- ◆连接unix服务器的oracle,客户端需要修改吗◆
- delphi中怎么调用dcom (为女朋友而问,大家多帮帮忙呀!100分)
- 请教大家一个问题,可能有点难,不知道大家能否知道。问题解决马上结帐。
- 寻求《Delphi5.x分布式多层应用系统篇》示例代码
- 救命啊!如何让数据集中的字段出现在FAST REPORT 的插入数据字段的窗口中啊
- 请问大家现在都在哪里上网啊!!! 网吧?学校?家里?.....
- 我用ole链接word文件,为何只显示文件的第一页,其它页不显示,怎样解决,若在OLE中无法解决,还有何方法可以读取word文件?
- 如何用TPrinter的哪个属性知道连接的是镭射还是点阵打印机?(或者用Api函数也行)
- 谁编写过控件的,可不可以给我一个原程序?
oleExcel:=OleContainer1.OleObject.OlePropertyGet('Application');
vSheet:= oleExcel.OlePropertyGet('ActiveSheet');
出现错误???
一、VBA代码含义
Microsoft Word是一个集成化环境,是美国微软公司的字处理系统,但是它决不仅仅是一个字处
理系统,它集成了Microsoft Visual Basic,可以通过编程来实现对Word功能的扩展。
Microsoft Visual Basic在word中的代码即Word的宏,通过编写Word宏,可实现一些文档处理的
自动化,如实现文档的自动备份、存盘等,可扩展Word文档的功能,因此,能够充分利用Word的
特性,甚至使Word成为自己软件的一部分。
Word的宏既有有利的一部分,因为它能够帮助我们实现文档的自动化,但是Word的宏也不是纯粹
的有利,有时它可能危害我们的文档、计算机系统甚至网络,从最开始的Taiwan NO1宏病毒到现
在的Melissa宏病毒,从最开始的简单的提示,耗尽系统资源到现在的乱发电子邮件,将个人的
信息发送到网络上,甚至向硬盘的Autoexec.bat(自动批处理文件)中添加Deltree C: -y,破坏
整个Windows系统。二、Word中内嵌的Com技术
可以说Word是对Com技术支持最好的软件,这样说似乎是太极端了一点,但是Word提供的强大的编
程接口技术却能够是我们通过程序控制Word的任何一部分。无论是文件的打开、存盘、打印还是文
档中表格的自动绘制。
通过编程软件,可以灵活的操纵word,这里只以Borland Delphi为例,进行详细描述:
1、 在Delphi中调用Word软件/文件的方法
在Word中调用Word软件,归纳起来有三种方法:
。通过Delphi的控件TOleContainer 将Word嵌入
a.使用Delphi提供的Servers控件调用Word,使用Word的属性
b.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中,
利用Com技术编程
c.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。2、 对几种方法的难易程度的判别a.通过Delphi的控件TOleContainer 将Word嵌入这是最简单的Ole嵌入,能够直接将Word文档调用,只需要使用ToleContainer.Run就可以将Word文
档直接启动。且这样启动的Word文档与Delphi程序是一个整体(从界面上看),但是它存在不可克
服的缺点,即不能通过Delphi控制Word文档,也就不能实现将灵活操纵Word的目的。b.使用Delphi提供的Servers控件调用Word,使用Word的属性
使用Delphi的Servers控件来操纵Word,在编程时Delphi能够实现代码提示,总体上看能够较好的实
现Delphi对Word的控制,但是还有一些Word的功能不能在Delphi中调用(比如自己编写的VBA宏代码)。
且实现功能时本来在VBA代码中可选则参数在Delphi调用的时候必须添加,否则,连编译都不能通过。
本方式启动的Word与Delphi程序分属两个窗体。
此办法仅能作为一个参考。c.通过真正的Com技术,将Office软件目录中文件MSWORD9.OLB中的类库全部导入Delphi中,
利用Com技术编程
利用真正的Com技术,将MsWord9.OLD文件类库导入,然后利用Com技术进行使用。
整体上类似使用Delphi的Servers控件,稍微比Servers控件麻烦,优缺点与Servers控件相同。d.使用CreateOleObject将启动Word,然后以Ole方式对Word进行控制。
本办法是使用以CreateOleObjects方式调用Word,实际上还是Ole,但是这种方式能够真正做到完全
控制Word文件,能够使用Word的所有属性,包括自己编写的VBA宏代码。
与Servers控件和com技术相比,本方法能够真正地使用Word的各种属性,和在VBA中编写自己的代码
基本一样,可以缺省的代码也不需要使用。
本方式启动的Word与Delphi程序分属两个窗体。
缺点是使用本方法没有Delphi代码提示,所有异常处理均需要自己编写,可能编写时探索性知识比较多。三、Word宏编辑器
Word能够真正地进行VBA代码的编辑,可以编写窗体、函数。
进入Word宏编辑器的方法:工具->宏->Visual Basic编辑器,可进入Visual Basic编辑器界面。
Word的Visual Basic编辑器界面和真正的Visual Basic编辑器基本相同,在此不再向详述。
在VBA代码中,可以添加用户窗体、模块、类模块。用户窗体、模块、类模块的概念和Visual Basic
完全相同。注释也与Visual Basic完全相同。
可以将光标停留在窗体、模块的任何一个子程序上,直接按“F5”运行当前子程序。四、Word的宏的概述
Word充分地将文档编辑和VB结合起来,真正地实现文档的自动化。使用Word编程,类似于使用
Visual Basic,所不同的是,在Word中,能够直接运行某一个子程序,直接看见结果,Word的宏,
只能解释运行,而Visual Basic,现在已经能够编写成真正的机器码,从代码的保护上来说,应该尽
可能地减少Word的VBA代码数量,尤其是关键的代码。
VBA宏,可分成四种:
1、 和命令名相同的宏
如FileSave,FileOpen,如果在VBA代码中包含与Word同名的函数,则直接执行这些VBA代码,忽略Word
本身的命令。
2、 Word内特定的宏
这些宏包含AutoExec(启动 Word 或加载全局模板)、AutoNew(每次新建文档时)、AutoOpen(每次打
开已有文档时)、AutoClose(每次关闭文档时),AutoExit(退出 Word 或卸载全局模板时)。
如果VBA代码中含有这些名称的函数,则满足相应的条件,相应代码就自动执行。
3、 相应事件的VBA宏
这些宏是由事件触发的宏,如Document_Close在文档关闭的时候触发事件,Document_New在新建文档的时
候触发,Document_Open在打开文档的时候触发。
4、 独立的宏
自己编写的VBA代码,即不属于上面几种情况的VBA代码,可以被其他VBA代码调用,更重要的是,可以被
其他程序调用。
这样,我们就可以屏弃Word自动执行的宏,通过Delphi直接调用相应宏来达到目的。
五、Word命令宏的详细描述
Word本身的命令函数包含很多,但是无论是word联机帮助还是MSDN帮助,都没有这方面的介绍,因此只能
凭自己的实验取探索,初步探测的函数如下:
宏名 解释 注释
FileNew 新建
FileNewDefault 新建空白文档
FileSaveAs 另存为
FileOpen 打开
FileClose 关闭
FilePrint 打印
FilePrintPreview 打印预览
ToolsCustomize 工具栏里面的自定义
ToolsOptions 工具选项
ToolsRevisions 突出显示修订
ToolsReviewRevisions 接受或拒绝修订
ToolsRevisionMarksAccept 接受修订
ToolsRevisionMarksReject 拒绝修订
ToolsRevisionMarksToggle 修订
ToolsMacro 宏
ToolsRecordMacroToggle 录制新宏
ViewSecurity 安全性
ViewVBCode 查看VB编辑器环境
FileTemplates 模板和可加载项
ToolsProtectUnprotectDocument 解除对文档的保护
InsertHyperlink 插入超级链接
EditHyperlink 编辑超级链接
DeleteHyperlink 删除超级链接
EditLinks 查看、删除链接
EditPasteAsHyperlink 粘贴超级链接
FormatStyle 样式
EditBookMark 书签
yzhshi (2001-11-18 17:54:00)
这是我自己写的,结合自己的经验,在这里贡献出来,供大家共享。
里面有很多用词、观点也许不是特别确切,希望大家指出。
过几天再将一些具体的代码写出来(目前没有仔细整理)。
yzhshi (2001-11-18 18:03:00)
[center]OleWord时一些用用的代码[/center]
[center][email protected][/center]一、Delphi程序启动Word
采用CreateOleObjects的方法来启动Word,调用VBA代码,具体实现过程为:
首先使用GetActiveOleObject('Word.Application')判断当前内存中是否存在Word程序,如果存在,
则直接连接,如果没有Word程序,则使用CreateOleObject('Word.Application')启动Word二、Delphi程序新建Word文稿
格式:WordDocuments.Add(Template,NewTemplate,DocumentType,Visible)
Template: 使用模板的名称,
NewTemplate: 新建文档的类型,True表示为模板,False表示为文档
DocumentType: 文档类型,默认为空白文档
Visible: 打捞的窗口是否可见举例:Doc_Handle:=Word_Ole.Documents.Add(Template:='C:\Temlate.dot',NewTemplate:=False);三、Delphi程序打开Word文稿
格式:WordDocuments.Open(FileName,ConfirmConversions,ReadOnly,PassWordDocument,
PasswordTemplate,Revent,WritePasswordDocument,WritePassWordTemplate,
Format,Encoding,Visible)FileName: 文档名(包含路径)
Confirmconversions: 是否显示文件转换对话框
ReadOnly: 是否以只读方式打开文档
AddToRecentFiles: 是否将文件添加到"文件"菜单底部的最近使用文件列表中
PassWordDocument: 打开此文档时所需要的密码
PasswordTemplate: 打开此模板时所需要的密码
Revert: 如果文档已经,是否重新打开文档
WritePasswordDocument: 保存对文档更改时所需要的密码
WritePasswordTemplate: 保存对模板进行更改时所需要的密码
Format: 打开文档时所需使用的文件转换器
Encoding: 所使用的文档代码页
Visible: 打开文档的窗口是否可见举例:
Doc_Handle:=Word_Ole.Documents.open(FileName:=Doc_File,ReadOnly:=False,
AddToRecentFiles:=False);四、Delphi程序保存Word文稿
<br />格式:WordDocuments.SaveAs(FileName, FileFormat, LockComments, Password,
<br /> AddToRecentFiles, WritePassword, ReadOnlyRecommended,
<br /> EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData,
<br /> SaveAsAOCELetter)
<br />
<br />FileName: 文件名。默认为当前文件夹和文件名。
<br />FileFormat 文档保存的格式。
<br />LockComments 如果为 True,则此文档只允许进行批注。
<br />Password 打开文档时的口令。
<br />AddToRecentFiles 如果为True,则将
Delphi接收消息有两种,一是重载特定消息,二是重载WndProc函数,在里面选择相应消息进行处理。
<br /> 法一,每次只能处理一条消息,而法二能够同时处理多条消息。
<br />
<br /> 对于法二,声明如下:
<br /> procedure WndProc(var Message: TMessage);override
<br /> 必须注意,使用时需要在处理完自己消息处理后继承WndProc(Message)函数,否则系统会崩溃!
<br />
<br />八、Word中Combo对话框的动态生成以及Change事件
<br /> 建立类模块Combohander,在内部定义事件
<br /> Public WithEvents ComboBoxEvent As Office.CommandBarComboBox
<br />
<br /> 定义Combo控件产生事件的模块
<br /> Dim ctlComboBoxHandler As New ComboBoxHandler
<br />
<br /> 产生Combo对话框
<br /> Set Cbo_ChooseDoc = CommandBars("添加的菜单").Controls.Add(Type:=msoControlComboBox, Temporary:=True)
<br />
<br /> 进行文件句柄设置,以产生Combo_Change事件
<br /> Set ctlComboBoxHandler.ComboBoxEvent = Cbo_ChooseDoc
<br />
<br /> 产生事件后,在类模块Combohander内选择ComboBoxEvent的Change事件,即可书写事件代码
<br /> Sub ComboBoxEvent_Change(ByVal Ctrl As Office.CommandBarComboBox)
<br />
<br />九、一些Word的事件
<br /> VBA代码中处理的Word事件有:Document_Close
<br /> Application事件中需要处理的有:DocumentBeforeClose,DocumentChange。
<br />
<br /> Document_Close:事件在文档关闭时产生事件
<br /> DocumentBeforeClose:在文档被关闭以前先于Word判断文档是否保存,给出相应提示并进行相应处理。
<br /> DocumentChange:文档切换,在文档从自己修改的文稿和其他人修改的文稿之间切换产生事件,
<br />主要处理设置文档权限等。实例代码:if WordApp.Visible=false then //运行Word,并新建一文档
WordApp.Visible:=true;
filename:='';
tempboolean:=false;
WordApp.Documents.Add(filename,tempboolean); if wordtype.radiogroup1.ItemIndex=0 then
WordApp.ActiveDocument.PageSetup.Orientation:=wdOrientLandscape;//将纸张调为横向
with WordApp.Selection do//将标题写入Word文档
begin
Paragraphs.Alignment:=1;
Font.Size:=20;
Font.Bold:=1;
TypeText(panel12.Caption);
end;
with WordApp.Selection do//将各参数还原
begin
TypeText(#13);
Paragraphs.Alignment:=0;
Font.Size:=11;
Font.Bold:=0;
end; for i:=0 to rect_num-1 do //将矩形对应的模块(文字、图、表)写入Word文档
begin temptext:=copy(Word_Text[i],1,pos('_',Word_Text[i])-1);
if temptext='文字材料' then
begin
pathname:=extractfilepath(application.ExeName)+'Text\';
temptext:=copy(Word_Text[i],pos('_',Word_Text[i])+1,length(Word_Text[i]));
filename:=pathname+temptext+'.txt';
range:='';
confirm:=false;
link:=false;
attachment:=false;
WordApp.Selection.TypeParagraph;
WordApp.Selection.InsertFile(filename,range,confirm,link,attachment); end;
if temptext='统计分析表' then
begin
pathname:=extractfilepath(application.ExeName)+'Tables\';
temptext:=copy(Word_Text[i],pos('_',Word_Text[i])+1,length(Word_Text[i]));
filename:=pathname+temptext+'.htm';
range:='';
confirm:=false;
link:=false;
attachment:=false; start:=WordApp.Selection.Get_Start;
WordApp.Selection.InsertFile(filename,range,confirm,link,attachment);
endof:= WordApp.Selection.Get_Start;
WordApp.ActiveDocument.Range(start,endof).select;
WordApp.Selection.Font.Name:='宋体';
WordApp.Selection.Font.Size:=9;
WordApp.Selection.Set_Start(endof);
end;
if temptext='统计分析图' then
begin
pathname:=extractfilepath(application.ExeName)+'StatBmp\';
temptext:=copy(Word_Text[i],pos('_',Word_Text[i])+1,length(Word_Text[i]));
filename:=pathname+temptext+'.bmp';
start:=WordApp.Selection.Range;
withfilesave:=true;
wordApp.Selection.TypeText(' ');
WordApp.Selection.Paragraphs.Alignment:=1;
WordApp.Selection.InlineShapes.AddPicture(filename,attachment,withfilesave,start);
end;
end;
WordApp.Disconnect;
end;
一.使用动态创建的方法首先创建 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 控件方法在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 1) 打开Excel
ExcelApplication1.Connect;2) 显示当前窗口:
ExcelApplication1.Visible[0]:=True;3) 更改 Excel 标题栏:
ExcelApplication1.Caption := '应用程序调用 Microsoft Excel';4) 添加新工作簿:
ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
5) 添加新工作表:
var Temp_Worksheet: _WorkSheet;
begin
Temp_Worksheet:=ExcelWorkbook1.
WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0) as _WorkSheet;
ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
End;
6) 打开已存在的工作簿:
ExcelApplication1.Workbooks.Open (c:\a.xls
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,
EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)7) 设置第2个工作表为活动工作表:
ExcelApplication1.WorkSheets[2].Activate; 或
ExcelApplication1.WorksSheets[ 'Sheet2' ].Activate;8) 给单元格赋值:
ExcelApplication1.Cells[1,4].Value := '第一行第四列';9) 设置指定列的宽度(单位:字符个数),以第一列为例:
ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth := 5;10) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
ExcelApplication1.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米11) 在第8行之前插入分页符:
ExcelApplication1.WorkSheets[1].Rows[8].PageBreak := 1;12) 在第8列之前删除分页符:
ExcelApplication1.ActiveSheet.Columns[4].PageBreak := 0;13) 指定边框线宽度:
ExcelApplication1.ActiveSheet.Range[ 'B3:D4' ].Borders[2].Weight := 3;
1-左 2-右 3-顶 4-底 5-斜( \ ) 6-斜( / )14) 清除第一行第四列单元格公式:
ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;15) 设置第一行字体属性:
ExcelApplication1.ActiveSheet.Rows[1].Font.Name := '隶书';
ExcelApplication1.ActiveSheet.Rows[1].Font.Color := clBlue;
ExcelApplication1.ActiveSheet.Rows[1].Font.Bold := True;
ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine := True;16) 进行页面设置:
a.页眉:
ExcelApplication1.ActiveSheet.PageSetup.CenterHeader := '报表演示';
b.页脚:
ExcelApplication1.ActiveSheet.PageSetup.CenterFooter := '第&P页';
c.页眉到顶端边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
d.页脚到底端边距3cm:
ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
e.顶边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.TopMargin := 2/0.035;
f.底边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
g.左边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
h.右边距2cm:
ExcelApplication1.ActiveSheet.PageSetup.RightMargin := 2/0.035;
i.页面水平居中:
ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
j.页面垂直居中:
ExcelApplication1.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
k.打印单元格网线:
ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines := True;17) 拷贝操作:a.拷贝整个工作表:
ExcelApplication1.ActiveSheet.Used.Range.Copy;b.拷贝指定区域:
ExcelApplication1.ActiveSheet.Range[ 'A1:E2' ].Copy;c.从A1位置开始粘贴:
ExcelApplication1.ActiveSheet.Range.[ 'A1' ].PasteSpecial;d.从文件尾部开始粘贴:
ExcelApplication1.ActiveSheet.Range.PasteSpecial;18) 插入一行或一列:
a. ExcelApplication1.ActiveSheet.Rows[2].Insert;
b. ExcelApplication1.ActiveSheet.Columns[1].Insert;19) 删除一行或一列:
a. ExcelApplication1.ActiveSheet.Rows[2].Delete;
b. ExcelApplication1.ActiveSheet.Columns[1].Delete;20) 打印预览工作表:
ExcelApplication1.ActiveSheet.PrintPreview;21) 打印输出工作表:
ExcelApplication1.ActiveSheet.PrintOut;22) 工作表保存:
if not ExcelApplication1.ActiveWorkBook.Saved then
ExcelApplication1.ActiveSheet.PrintPreview;23) 工作表另存为:
ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );24) 放弃存盘:
ExcelApplication1.ActiveWorkBook.Saved := True;25) 关闭工作簿:
ExcelApplication1.WorkBooks.Close;26) 退出 Excel:
ExcelApplication1.Quit;
ExcelApplication1.Disconnect;三.使用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)
OleContainer1
中使用对Excel的操作就提示 EoleError with message 'method'
试试
我加了
可下面的代码?
OleContainer1.DoVerb(ovShow); //激活WORD
if OleContainer1.State in [osUIActive] then //隐藏WORD菜单和工具栏
begin
//OleContainer1.OleObjectInterface.QueryInterface(IOleInPlaceObject,IOO);
//IOO.UIDeactivate;
//IOO :=nil;
end;
OleContainer1.OleObject.PrintPreview;//调用WORD的打印预览:必须要激活WORD并隐藏了菜单才能调用
showmessage('Path:'+OleContainer1.OleObject.Path);
//showmessage('ProgID:'+OleContainer1.OleObject.ProgID);
//showmessage('Height:'+inttostr(OleContainer1.OleObject.Height)); ProgID
OleContainer1.DoVerb(ovShow);//重新显示WORD菜单和工具栏
OleContainer1.Align := OleContainer1.Align;//就是不行
非的用OleContainer1写呀。
其他的方法我用过,行的,但OleContainer1怎样搞定呀?