起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 5453|回复: 57

[共享] X3下调用Excel 的插件

[复制链接]
发表于 2008-7-12 12:38:52 | 显示全部楼层 |阅读模式
1、打开文档
procedure TMainForm.btnTestClick(Sender: TObject);
var
   OpenDialog:TOpenDialog;
begin
    try
      OpenDialog:= TOpenDialog.Create(nil);
      OpenDialog.Filter:= '*.xls|*.XLS';
      if OpenDialog.Execute then
      begin
         if OpenDialog.FileName<>'' then
         begin
             ExcelApp1.AddApplication(true);//如果有进程会直接获得,没有则新建进程
             ExcelApp1.OpenFile(OpenDialog.FileName);
             ExcelApp1.SetVisible(true);//是否显示Excel
         end;
      end;
    finally
        OpenDialog.Free;
    end;
end;
2、退出Excel:
ExcelApp1.Close(false);  
3、获取指定表格的值:
ExcelApp1.GetCellValue('A2') 其中A2代表第一列第二行的表格。
4、设置某表格的值:
ExcelApp1.SetCellValue('A2',Edit1.Text);  
5、显示或者隐藏Excel:
ExcelApp1.SetVisible(true);//是否显示Excel  (true—显示;false--不显示)
6、打印预览:
ExcelApp1.PrintPreview;
7、打印:
ExcelApp1.Print;
8、新增WorkSheet:
ExcelApp1.AddWorkSheet;
9、拷贝粘贴指定cell:
   ExcelApp1.CopyCell('A2');
   ExcelApp1.PasteCell('B3');
10、拷贝到TstringGrid函数
Function ExcelCopyToStringGrid( FirstRow : Integer; FirstCol : Integer;
       LastRow : Integer; LastCol : Integer; StringGrid : TStringGrid;
       StringGridFirstRow    : Integer;
       StringGridFirstCol    : Integer;
       SizeStringGridToFit   : Boolean;
       ClearStringGridFirst  : Boolean  
       ): Boolean;
举例:
ExcelApp1.ExcelCopyToStringGrid(1,1,30,40,StringGrid1,1,1,true,true);
11、文件另存为:
var
   savedialog:TSaveDialog;
begin
    try
       savedialog:= TSaveDialog.Create(nil);
       SaveDialog.Filter:= '*.XLS';
       if SaveDialog.Execute then
       begin
          if SaveDialog.FileName<>'' then
          begin
             ExcelApp1.SaveAs(SaveDialog.FileName);
          end;
       end;
    finally
       SaveDialog.Free;
end;
12、另存为TXT文件:
ExcelApp1.SaveAsText(SaveDialog.FileName);
13、删除sheet表格
ExcelApp1.DeleteWorkSheet('Sheet1');// 删除sheet1
14、重命名表格
ExcelApp1.RenameSheet('Sheet1','我的表格');//
15、设置某个表格下拉选项:
    ExcelApp1.SetCellDataSource('A2','A,B,C,D');
ExcelApp1.SetCellDataSource(1,2,'A,B.C,D100,200');
//其中1,2代表行和列,而后面的A,B.C,D100,200代表下拉选项的值;每个选项间用“,”分割开。
16、选中单元格:
ExcelApp1.SelectCell(1,2);//选中第一列第二行的单元格
17、选中一个区域
ExcelApp1.SelectRange(1,1,30,30);  //选中一个区域范围
18、选取表格(按名称)
ExcelApp1.SelectSheetByName('Sheet1');//选择表格
19、获取单元格计算公式
Function GetCellFormula( ID: String): ShortString;
Function GetCellFormula( RowNum, ColNum: Integer): ShortString;
举例:
str:=  ExcelApp1.GetCellFormula(1,2);//获取表格公式
str:=  ExcelApp1.GetCellFormula('A2');
20、替换单词函数:
ExReplace(oldStr, NewStr:String; aLookAt:Integer;lCase:Boolean);
参数说明:
   oldStr—要被替换的词 ;
   NewStr—用来替换的词;
aLookAt:表明是整页查找还是局部查找一次(1-局部查找;其他-全局查找)
lCase—是否区分大小写;取值范围( true,false)
举例:
          ExcelApp1.ExReplace(edit1.Text,edit2.Text,0,false);//用Edit2内容替换Edit1值

21、设置菜单可见函数
SetMenuVisible(AMenuName: String; aValue: Boolean);
参数说明:
AMenuName:菜单名称。
是否可视。
举例:
        SetMenuVisible('Standard',false);
22、设置菜单是否可用函数
procedure SetMenuEnable(AMenuName:String;aValue:Boolean);
参数说明:
AMenuName:菜单名称
aValue:是否可用。
举例:
        ExcelApp1.SetMenuEnable('Formating',true);//将格式菜单栏可用
23、合并单元格
procedure MergeCell(lBegin,lEnd:String); //合并单元格
参数说明:
   lBegin, lEnd代表单元格地址。
举例:
ExcelApp1.MergeCell('A1','A4');
24、拆分单元格
procedure UnMergeCell(lBegin,lEnd:String); //拆分单元格
参数说明:
        lBegin, lEnd代表单元格地址。
举例:
        ExcelApp1.UnMergeCell('A1','A4');
25、获取Excel中占用的最大列数
GetLastCol;//返回当前活动表中的占用的最大列数
26、获取Excel中占用的最大行数
GetLastRow;//返回当前活动sheet中占用的最大行数

27、设置单元格的计算公式
Function SetCellFormula( FormulaString : ShortString; RowNum, ColNum: Integer): Boolean;
Function SetCellFormula( FormulaString : ShortString; ID:String):Boolean;overload;
28、获取单元格的计算公式
Function GetCellFormula( RowNum, ColNum: Integer): ShortString;overload;
Function GetCellFormula( ID: String): ShortString;overload;
29、设置函数
Function SetFunction(ARanger, AFunction: String): boolean;
30、插入图片
Function InsertImage(ARanger, AFilePath: String): boolean;
例子:
var
  openDialog:TOpenDialog;
begin
  try
    openDialog:=TOpenDialog.Create(nil);
    if OpenDialog.Execute then
    begin
       ExcelApp1.InsertImage('A1:B4',OpenDialog.FileName);//合并的单元格也行
    end;
  finally
    OpenDialog.Free;
  end;
31、插入行
procedure InsertRow(ARow:integer);
32、插入列
procedure InsertCol(ACol:integer);
33、删除行
procedure DeleteRow(ARow:integer);
34、删除列
procedure DeleteCol(ACol:integer);
35、设置是否显示某列
procedure SetColumnHide(lColumn:string;aValue:Boolean);overload;
procedure SetColumnHide(lBegin,lEnd:string;aValue:Boolean);overload;//设置是否隐藏列
36.画边框
Procedure  DrawLine(ARange: String);// ARange单元格或者区域
例子:
   ExcelApp1.SetFont('A1:A2','楷体',20,true);
   ExcelApp1.DrawLine('A1:C3');
37、将文件中的图片存为文件
procedure SaveImageToFile(aPictureName,AFileName:String);
参数:aPictureName图像名称; AFileName-要保存的文件名称
图片导出时自己写后缀名.bmp/.jpg等

用例:
var
  saveDialog:TSaveDialog;
begin
   saveDialog:=TSaveDialog.Create(nil);
   try
     if saveDialog.Execute then
        ExcelApp1.SaveImageToFile(‘picture 1’,saveDialog.FileName);
   Finally//注意图片对象的名称
     saveDialog.Free;
   end;

procedure SaveImageAs(ARanger,AFileName:String);不好用
// ARanger区域范围,AFileName要保存的文件名称
例子:
var
  saveDialog:TSaveDialog;
begin
   saveDialog:=TSaveDialog.Create(nil);
   try
     if saveDialog.Execute then
        ExcelApp1.SaveImageAs('B2:H19',saveDialog.FileName);
   finally
     saveDialog.Free;
   end;
end;
38、获取区域范围内图片对象的名称
function GetRangeImageName(aRange:String):String;
参数:aRange--区域范围
例子:
edit2.Text:= ExcelApp1.GetRangeImageName('B2:H5');

function GetImageNames:String;//获取当前操作页的图片对象名称
====================================================
最新提供V2970版本

excel v2970.rar

57.82 KB, 下载次数: 397

回复

使用道具 举报

 楼主| 发表于 2008-8-21 15:27:31 | 显示全部楼层
看大家在X3下面想要操作Excel这么费劲,我再给大家提供一个控件,让您的Excel开发从此不再复杂 。
前面实现过在X3下操作Office的组件,现在给大家提供一个可以操作WPS的插件。因为微软的东西太贵了,我们要改而支持国产软件!WPS基本上支持原来Office所有的特性,而且还有一些Office本身不具有的功能。从原来Office方式切换到WPS操作方式也没什么工作量,很轻松的就能过渡!

   先决条件是在你的电脑上装有WPS.使用时先将本附件当中的ETApp.dll 拷贝到 Studio安装目录下\Lib\ 和 ETApp.bpl 拷贝到Studio安装目录下,然后再Studio中引入该控件的使用,然后关闭Studio重新进入后即可在Active栏看到该组件,直接拖放到窗体上面即可使用。此版本支持到3012
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-8-21 15:30:38 | 显示全部楼层
在此共享一个WordApp插件for 3088,包含了大多数通用的函数;
----------------------------------------------------------------------------------
WordApp插件开发手册
1、打开Word
CreateApp(lValue: boolean);// lValue是否显示Word
2、关闭Word
procedure Close(lSaveTag:Integer);//关闭Word
lSaveTag: 0 – 退出不保存; 1-退出保存;2-退出时提示是否保存。
3、打开文档
procedure OpenFile(AFileName:String); //打开文件
4、新建文档
procedure AddNewDoc; //创建新文档
5、保存文档
procedure Save(lValue:Boolean);//是否保存
6、文档另存为
procedure SaveAs(aFileName:String);
读取文档内容
写文档内容
设置菜单
打印
Print(lMark:Integer);// lMark取值: 0—纵向打印;1—横向打印。
打印预览
PrintView(lMark:Integer);
说明:
lMark取值: 0—纵向打印;1—横向打印。
WordApp1.PrintView(0);
查找词汇
FindWord(aWordstr:String;aForward:Boolean);//查找关键词
参数说明:
(1)        aWordstr 要查找的词
(2)        在文档中,如果查找操作向前搜索,则本属性为 True。如果向后搜索,则本属性为 False。
替换操作
ExReplace(oldStr, NewStr: String; lTag: Integer);
参数说明:
(1)        oldStr:想要替换的词汇
(2)        NewStr:用来替换的新词汇
(3)        lTag:替换方式(0-不替换;1-替换一处;2-全部替换)
将DBGrid的数据倒入到Word中
procedure DBGridToWord(aDBGridName:TDBGrid);
Word宏名:
  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 书签
Word 的“自动更正”功能
setAutoCorrect(oldStr, newStr: String);//调用自动更正选项,并且添加更正词汇
下列示例打开“自动更正”选项并创建“自动更正”词条。
WordApp1.setAutoCorrect(edit1.Text,edit2.Text);
显示Word助手
ShowAssistant(lVisible: Boolean);// lVisible是否显示
使用 Browser 对象

CallBrowser(lTarget, ltag: integer);
(1)lTarget 取值:1——12分别代表如下内容:
  wdBrowsePage = $00000001;
  wdBrowseSection = $00000002;
  wdBrowseComment = $00000003;
  wdBrowseFootnote = $00000004;
  wdBrowseEndnote = $00000005;
  wdBrowseField = $00000006;
  wdBrowseTable = $00000007;
  wdBrowseGraphic = $00000008;
  wdBrowseHeading = $00000009;
  wdBrowseEdit = $0000000A;
  wdBrowseFind = $0000000B;
  wdBrowseGoTo = $0000000C;
(2)ltag 1——Next ;2——Previous;

获取第几段的内容:
Function GetParagraphText(lpNo: integer): String; //段的编号
设置段落的对齐方式
Procedure SetParagraphAlign(lparNo, lAlign: Integer);
参数:lparNo--段落编号,lAlign--对齐方式(1-左对齐\2-居中\3-右对齐)
新增函数: InsertFile(lFileName:String);//合并文档用

wordapp.rar

31.04 KB, 下载次数: 294

回复 支持 反对

使用道具 举报

发表于 2008-8-21 16:02:58 | 显示全部楼层
看看
回复 支持 反对

使用道具 举报

发表于 2008-9-9 15:22:57 | 显示全部楼层

[请求]

2楼的老兄,你提供的控件(一个dll文件和一个bpl文件)我怎么引不进去呢?我在引入时出错,说无法定位程序输入点。希望你能帮帮忙哦
回复 支持 反对

使用道具 举报

发表于 2008-9-9 15:34:58 | 显示全部楼层
应该是x3的版本不对。
回复 支持 反对

使用道具 举报

发表于 2008-9-9 16:19:39 | 显示全部楼层

[请求]

我用的是 3 .0.6.3002 版本。那怎么办呢?我现在要把数据导入一个Excel文件的不同sheet中,急啊!帮帮忙哦
回复 支持 反对

使用道具 举报

发表于 2008-9-10 09:39:01 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-10 11:37:25 | 显示全部楼层

Re: [请求]

最初由 zhdkelly 发布
[B]2楼的老兄,你提供的控件(一个dll文件和一个bpl文件)我怎么引不进去呢?我在引入时出错,说无法定位程序输入点。希望你能帮帮忙哦 [/B]


=============

刚刚上传了一个新的版本,下载试试看吧,希望对你有帮助!只支持3012以前的版本
回复 支持 反对

使用道具 举报

发表于 2008-9-11 09:35:10 | 显示全部楼层
哦,是个很好的东西,谢谢你了哦!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-5 18:43 , Processed in 0.043275 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表