公文处理方案实现之使用模板新建文档并合并正文内容
<script type="text/javascript">
var wordApp = new ActiveXObject("word.application");
wordApp.Visible = true;
/// <summary>
/// 依模板新建一个文档,合并正文内容到新建文档中并设置字体字号。
/// 设置每个域的值
/// </summary>
/// <param name="wordApp">Word实例</param>
/// <param name="templatePath">Word模板全路径</param>
/// <param name="wordFilePath">公文正文内容文全路径</param>
/// <param name="regionValues">域名和值的数组 [{name:"name1", value:"value1"}]</param>
/// <returns type="Document">返回新建Word的文档实例</returns>
function MergeDocument(wordApp , templatePath, wordFilePath, regionValues)
{
var docPreview = null;
try
{
//通过模板新建文档
docPreview = wordApp.Documents.Add(templatePath);
//找到正文域
var bmWord = docPreview.Bookmarks.Item("正文");
//提取名称
var bmName = bmWord.Name;
//得到区域
var desRange = bmWord.Range;
//设置为空字串,注意不能是 ''
//这一步导致域被删除
desRange.Text = ' ';
//新建一个域
docPreview.Bookmarks.Add(bmName, desRange);
//再次得到区域
desRange = bmWord.Range
//先收缩,这样导入时,不会把域删除
desRange.Collapse();
//导入合并正文
desRange.ImportFragment(wordFilePath, true);
//再次得到域区域
desRange = bmWord.Range
//设置正文内容的格式
desRange.Font.Size = 16;
//最后删除域
bmWord.Delete();
//设置每个域的值
for(var i = 0; i < regionValues.length; ++i)
{
var rv = regionValues[i];
try
{
//不保存域,直接替换
docPreview.Bookmarks.Item(rv.name).Range.Text = rv.value;
}
catch(e)
{
}
}
return docPreview;
}
catch(e)
{
alert(e);
return null;
}
}
var doc = MergeDocument(wordApp, 'e:\\test\\temp.dot', 'e:\\test\\word.doc',
[
{name:"主送", value:"全通公司"},
{name:"标题", value:"正文标题"},
{name:"文号", value:"河北移动〔2009〕88号"},
{name:"封发时间", value:"二○○九年九月七日"},
{name:"抄送", value:"抄送单位"},
{name:"印发单位", value:"印发单位"},
{name:"印发日期", value:"2009年9月7日"}
]);
</script>
var wordApp = new ActiveXObject("word.application");
wordApp.Visible = true;
/// <summary>
/// 依模板新建一个文档,合并正文内容到新建文档中并设置字体字号。
/// 设置每个域的值
/// </summary>
/// <param name="wordApp">Word实例</param>
/// <param name="templatePath">Word模板全路径</param>
/// <param name="wordFilePath">公文正文内容文全路径</param>
/// <param name="regionValues">域名和值的数组 [{name:"name1", value:"value1"}]</param>
/// <returns type="Document">返回新建Word的文档实例</returns>
function MergeDocument(wordApp , templatePath, wordFilePath, regionValues)
{
var docPreview = null;
try
{
//通过模板新建文档
docPreview = wordApp.Documents.Add(templatePath);
//找到正文域
var bmWord = docPreview.Bookmarks.Item("正文");
//提取名称
var bmName = bmWord.Name;
//得到区域
var desRange = bmWord.Range;
//设置为空字串,注意不能是 ''
//这一步导致域被删除
desRange.Text = ' ';
//新建一个域
docPreview.Bookmarks.Add(bmName, desRange);
//再次得到区域
desRange = bmWord.Range
//先收缩,这样导入时,不会把域删除
desRange.Collapse();
//导入合并正文
desRange.ImportFragment(wordFilePath, true);
//再次得到域区域
desRange = bmWord.Range
//设置正文内容的格式
desRange.Font.Size = 16;
//最后删除域
bmWord.Delete();
//设置每个域的值
for(var i = 0; i < regionValues.length; ++i)
{
var rv = regionValues[i];
try
{
//不保存域,直接替换
docPreview.Bookmarks.Item(rv.name).Range.Text = rv.value;
}
catch(e)
{
}
}
return docPreview;
}
catch(e)
{
alert(e);
return null;
}
}
var doc = MergeDocument(wordApp, 'e:\\test\\temp.dot', 'e:\\test\\word.doc',
[
{name:"主送", value:"全通公司"},
{name:"标题", value:"正文标题"},
{name:"文号", value:"河北移动〔2009〕88号"},
{name:"封发时间", value:"二○○九年九月七日"},
{name:"抄送", value:"抄送单位"},
{name:"印发单位", value:"印发单位"},
{name:"印发日期", value:"2009年9月7日"}
]);
</script>
QQ:273352165
evlon#126.com
转载请注明出处。