起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 1832|回复: 19

【共享】在X3中用Word实现套红、模板定制等

[复制链接]
发表于 2011-7-19 10:25:00 | 显示全部楼层 |阅读模式
在OA系统中我们都会预到很多关于Word应用的问题;比如说:
1、模板应用:其实就是自定一个模板文件,在文件中定义几个标识符;然后通过程序需要去替换标识符而达到报表或者固定文档格式报告的需求;
2、套红:其实就是先设计一个红头文件;然后程序根据需要在某个环节将红头文件和正文合并成一个文件,而达到套红的目的。
   这里为了方便大家在X3中去实现这些功能,提供给大家一个WordApp控件,控件中有开发说明;经测试可以支持到 office 2010 。控件中封装了一些常用的过程和方法;有些参数需要安装相应的office 自带的工具才能使用,但是大多数是支持的。

wordapp3008.rar

46.46 KB, 下载次数: 254

回复

使用道具 举报

发表于 2011-7-19 11:39:25 | 显示全部楼层
顶amao
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-22 16:34:06 | 显示全部楼层
如何实现套红
=====================
前提:有一个模板表专门存放模板文件;模板文件中主要保存了公文的格式等;通过设置特定标识符来达到替换内容的目的。

=====================
var
  lForm : TFRMREDSELECT; //选择红头模板的窗体(自己写一个就行)
  lFileName,ltmpFile:String;
begin
//套红
   try
      lForm := TFRMREDSELECT.Create(context);
      if lForm.ShowModal= business.Forms.Controls.mrOk then //选择其中一个模板记录
      begin
         with InfoBroker.Info.DataSetByID('LCFJ') do //流程附件数据集
         begin
            { //过滤数据
            SQLFilter:= ' DOCM_TYP ='+ SysUtils.QuotedStr('正文');
            SQLFiltered:= true;  }
            if not Active then open;
            lFileName:= FieldByName('ATCH_NM').AsString;//附件名称
            ltmpFile:= 'C:\x3tmp'+ FieldByName('DOCM_TYP').AsString ; //存为临时文件,用完后删除
            if SysUtils.FileExists(ltmpFile) then
               SysUtils.DeleteFile(ltmpFile);
            TBlobField(FieldByName('ATCH_CNT')).SaveToFile(ltmpFile);//将附件(正文)保存为文件,以便文件合并
         end;
        lForm.SaveFile;
        lFileName := lForm.FileName;//红头模板文件
        if lFileName<>'' then
        begin
          WordApp1.CreateApp(true);//显示Word进程
     WordApp1.OpenFile(lFileName);
          WordApp1.SetCaption('我的OA[套红]'); //设置Word显示
          WordApp1.ExReplace('#BH', dsFW.DataSet.FieldByName('DOCM_NO').AsString ,1);
//替换#BH编号
          WordApp1.ExReplace('#title',dsFW.DataSet.FieldByName('DOCM_TTL').AsString ,1);
//#title--表示标题
     //查找到内容标记符号,并且定位
     WordApp1.InsertFile('#body',ltmpFile);//'#body'代表文件正文内容,在指定位置插入文件内容
          //WordApp1.insertStr('文档内容,多长都可以!');//在当前位置插入要插入的内容
     WordApp1.Save(true);
          jsdialogs.ShowMsg('“套红”已完成,文件保存到【'+lFileName+'】。请查看后将文件上传!','提示');
          dsFW.DataSet.Edit;
          dsFW.DataSet.FieldByName('YN_RD_HD').AsString:= '1';//是否带红头
          dsFW.DataSet.FieldByName('RD_HD_ID').AsString:= lForm.FileID;//红头ID
        end
        else begin
           jsdialogs.ShowMsg('没有输入文件名称,不能执行套红!','提示');
           exit;
        end;
      end;
   finally
      lForm.Free;
   end;
end;
回复 支持 反对

使用道具 举报

发表于 2011-7-25 09:23:23 | 显示全部楼层
你好,正在考虑如何支持 office 2007呢,
我使用的是 3178 ,能否把控件升级到 3178呢?谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-25 10:12:46 | 显示全部楼层
我手里最新Studio版本就是3088,没有3178的版本。你可以把对应 CLRun.dcp 、CLRun.bpl、clcomm.dcp和clcomm.bpl 发到我邮箱里,看看能不能给你编译一个版本。gzmaoguangyu@126.com
回复 支持 反对

使用道具 举报

发表于 2011-7-25 16:28:51 | 显示全部楼层
已经发送,谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-25 19:17:21 | 显示全部楼层
最初由 itking 发布
[B]已经发送,谢谢 [/B]

3178版本

wordapp3178.rar

27.72 KB, 下载次数: 220

回复 支持 反对

使用道具 举报

发表于 2011-7-26 09:17:09 | 显示全部楼层
楼主能否提供下3088版本的呢?如果有excel的也请提供下。谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-7-26 10:50:41 | 显示全部楼层
3088版本在一楼就有,ExcelApp的版本在论坛中可以搜到。

excelapp 3088.rar

263.53 KB, 下载次数: 232

回复 支持 反对

使用道具 举报

发表于 2011-7-26 16:50:16 | 显示全部楼层
amao,你好。
请问,wordapp,如何自定义宏命令?
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2024-12-22 23:01 , Processed in 0.043315 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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