word 域值替换 带html格式的怎样替换呢?
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>网页上内容导出到word</title>
</head>
<body>
<input type='button' name='button_export' title='导出到word' onclick='OpenWord()' value='下载到word'>
<input type="hidden" id="hid1" value="<table style='background-color:Yellow;'><tr><td>第一行第一列</td><td>第一行第二列</td></tr><tr><td>第二行第一列</td><td>第二行第二列</td></tr></table>" />
</body>
</html>
<script language="javascript">
//去掉首尾空格
function String.prototype.Trim() {
return this.replace(/(^\s*)|(\s*$)/g, "");
}
function OpenWord() {
var word = null;
try {
word = new ActiveXObject('Word.Application');
}
catch (e) {
if (word != null) word.Quit();
alert("无法调用Office对象,请确保您的机器已安装了Office并已将IE安全级别降低!如:当前站加入受信任站点并安全级别为低!");
return;
}
try {
word.visible = true;
//获取模板路径
var dotpath = "temp.doc";
var doc = word.documents.open(dotpath);
var fields = word.ActiveDocument.Fields; //所有域
var iFieldsCount = fields.Count; //域个数
var fieldsName = ""; //域名
var FieldValue = "";
debugger;
for (var i = 0; i < iFieldsCount; i++) {
fieldsName = fields.Item(i + 1).Code.Text; //域名
fieldsName = fieldsName.replace("\\* MERGEFORMAT", "").replace("MERGEFIELD", "").Trim().replace(/\"/g, ""); //得到真正的域名
//域赋值
if (fieldsName == "$N$mContent") {
fields.Item(i + 1).Result.Text = document.getElementById("hid1").value;
}
else {
fields.Item(i + 1).Result.Text = "标题";
}
}
word.Application.Activate();
}
catch (e) {
if (word != null) word.Quit();
alert('程序异常:' + e.message);
return;
}
}
</script>
上面是代码,存为文件后可以直接打开,需要在路径位置创建一个temp.doc的模板文档,其中有一个名字为$N$mContent的域
我想实现的是当域名为$N$mContent时,用hid1的value替换$N$mContent hid1的值并不限制于表格,可能有更复杂的格式。现在的情况是 替换后,是直接把<table.....</table>给输出来,我想要的效果是直接输出表格。
项目中的情况是,hid1的value是从数据库中读取,而值保存是从网页上嵌套的web编辑器中获取的。所以格式比较复杂。请问能实现吗?