zoukankan      html  css  js  c++  java
  • 公文处理方案实现之模板使用

    代码
    1 <script type="text/javascript">
    2
    3  var wordApp = new ActiveXObject("word.application");
    4 wordApp.Visible = true;
    5
    6 /// <summary>
    7 /// 依模板新建一个文档,合并正文内容到新建文档中并设置字体字号。
    8 /// </summary>
    9 /// <param name="wordApp">Word实例</param>
    10 /// <param name="templatePath">Word模板全路径</param>
    11 /// <param name="wordFilePath">公文正文内容文全路径</param>
    12 /// <returns type="Document">返回新建Word的文档实例</returns>
    13 function MergeDocument(wordApp , templatePath, bookmarkName, wordFilePath)
    14 {
    15 var docPreview = null;
    16
    17 try
    18 {
    19 //通过模板新建文档
    20 docPreview = wordApp.Documents.Add(templatePath);
    21
    22 //找到正文域
    23 var bmWord = docPreview.Bookmarks.Item(bookmarkName);
    24
    25 //得到区域
    26 var desRange = bmWord.Range;
    27
    28 //设置为空字串,注意不能是 ''
    29 //这一步导致域被删除
    30 desRange.Text = ' ';
    31 //新建一个域
    32 docPreview.Bookmarks.Add(bookmarkName, desRange);
    33
    34 //再次得到区域
    35 desRange = bmWord.Range
    36
    37 //先收缩,这样导入时,不会把域删除
    38 desRange.Collapse();
    39
    40 //导入合并正文
    41 desRange.ImportFragment(wordFilePath, true);
    42
    43 //再次得到域区域
    44 desRange = bmWord.Range
    45
    46 //设置正文内容的格式
    47 desRange.Font.Size = 16;
    48
    49 //最后删除域
    50 bmWord.Delete();
    51
    52
    53 return docPreview;
    54
    55 }
    56 catch(e)
    57 {
    58 //关闭
    59 //docPreview.Close();
    60 alert(e);
    61 return null;
    62 }
    63
    64
    65 }
    66
    67 /// <summary>
    68 /// 设置每个域的值
    69 /// </summary>
    70 /// <param name="docInst">Word的文档实例</param>
    71 /// <param name="regionValues">域名和值的数组 [{name:"name1", value:"value1", maxWidth:8.23 (default:0)}]</param>
    72 /// <returns type="Document">返回Word的文档实例</returns>
    73 function FillBookmarks(docInst, regionValues)
    74 {
    75 if(docInst == null || (regionValues || []).length == 0)
    76 return docInst;
    77
    78 //设置每个域的值
    79 for(var i = 0; i < regionValues.length; ++i)
    80 {
    81 var rv = regionValues[i];
    82 rv.maxWidth = rv.maxWidth || 0;
    83 try
    84 {
    85 if(rv.maxWidth == 0)
    86 {
    87 //不保存域,直接替换
    88 docInst.Bookmarks.Item(rv.name).Range.Text = rv.value;
    89 }
    90 else
    91 {
    92 //先设置域的值,然后设置单行的最大宽度,这样会使文字紧缩
    93 var range = docInst.Bookmarks.Item(rv.name).Range;
    94 if(range != null)
    95 {
    96 range.Text = rv.value;
    97 docInst.Bookmarks.Add(rv.name, range);
    98 range = docInst.Bookmarks.Item(rv.name).Range;
    99 range.FitTextWidth = docInst.Application.CentimetersToPoints(rv.maxWidth);
    100 docInst.Bookmarks.Item(rv.name).Delete();
    101 }
    102 }
    103 }
    104 catch(e)
    105 {
    106 }
    107 }
    108
    109 }
    110
    111 /// <summary>
    112 /// 填充附件列表
    113 /// </summary>
    114 /// <param name="docInst">Word的文档实例</param>
    115 /// <param name="bookmarkName">Word的文档实例</param>
    116 /// <param name="attachments">附件的字符串数组 ['附件1','附件2','附件3','附件4','附件5']</param>
    117 /// <returns type="Document">返回Word的文档实例</returns>
    118 function FillAttachments(docInst, bookmarkName, attachments)
    119 {
    120 if(docInst == null || bookmarkName == null || (attachments || []).length == 0)
    121 return docInst;
    122
    123 var range = docInst.Bookmarks.Item(bookmarkName).Range
    124 range.Text = '';
    125 for(var i = 0; i < attachments.length; ++i)
    126 {
    127 var value = (i == 0 ? "附件:" : "   ") + attachments[i] ;
    128 if(i > 0)
    129 range.InsertParagraphAfter();
    130 range.InsertAfter(value);
    131 }
    132 }
    133
    134 var doc = MergeDocument(wordApp, 'e:\\test\\temp.dot', "正文", 'e:\\test\\word.doc');
    135 FillBookmarks(doc,
    136 [
    137 {name:"红头", value:"中国移动集团河北分公司文件", maxWidth:15.2},
    138 {name:"标题", value:"正文标题"},
    139 {name:"文号", value:"河北移动〔2009〕88号"},
    140 {name:"主送", value:"全通公司"},
    141 {name:"封发时间", value:"二○○九年九月七日"},
    142 {name:"抄送", value:"抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位,抄送单位"},
    143 {name:"印发", value:"中国移动集团河北分公司网络信息综合部 2009年9月7日印发", maxWidth:15.6}
    144 ]);
    145
    146 FillAttachments(doc, "附件", ['附件1','附件2','附件3','附件4','附件5']);
    147
    148 </script>
    149
    150

    代码下载:https://files.cnblogs.com/evlon/word_test_1201.zip

  • 相关阅读:
    CocoaPods使用详细说明
    cocoapod使用
    Android-利用LinearGradient实现文字一闪一闪
    Android5.0 CheckBox颜色修改
    android实现文字渐变效果和歌词进度的效果
    Ceph 常规操作笔记
    Git版本控制器使用总结性梳理
    CentOS 7.5 部署 MySQL 5.7 基于GTID主从复制+并行复制+半同步复制+读写分离(ProxySQL) 环境- 运维笔记 (完整版)
    Ansible-playbook 运维笔记
    Docker容器基础介绍
  • 原文地址:https://www.cnblogs.com/evlon/p/1614496.html
Copyright © 2011-2022 走看看