向Word添加指定表格的问题

空心兜兜 2012-11-19 01:22:48
现有一项目,需要向Word中添加表格、文本等内容
项目架构为B/S,在线编辑Word采用重庆软航的Office控件

向文件添加指定文本已实现

function addInput()
{
var inputText = document.getElementById("inputText").value; OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.TypeText(inputText);
}


页面中有一个在Div中的表格table也需要添加到Word中
但不知这个方法该怎么写


function addTable()
{
var tableHtml= document.getElementById("div_test").innerHTML;
var tableValue = document.getElementById("div_test").innerText;
alert(tableHtml);
alert(tableValue);
OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.TypeText(tableHtml);
OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.Tables.Add(tableHtml);
}


这里执行到Selection.Tables.Add时会报“Type mismatch”
是不是意味着方法调用对了,但是传值需要进行格式化?
还是可以调用别的方法?


楼下放我的整个页面代码
...全文
118 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
laoyebin 2012-11-21
  • 打赏
  • 举报
回复
弄到剪切板再粘贴,确实是个不错的方法
空心兜兜 2012-11-20
  • 打赏
  • 举报
回复

<script language="javascript">

function tableToWord() { 

try

{
  var oWD = new ActiveXObject("Word.Application");
  var oDC = oWD.Documents.Add("",0,1);
  var oRange =oDC.Range(0,1);
  var sel = document.body.createTextRange();
  sel.moveToElementText(theObjTable);
  sel.select();
  sel.execCommand("Copy");
  oRange.Paste();
  oWD.Application.Visible = true;

}

catch(e)
{
alert("您的电脑没有安装Microsoft Word软件!")
return false
} 

 }
function tableToExcel() { 
window.clipboardData.setData("Text",document.all('theObjTable').outerHTML);
try
{
var ExApp = new ActiveXObject("Excel.Application")
var ExWBk = ExApp.workbooks.add()
var ExWSh = ExWBk.worksheets(1)
ExApp.DisplayAlerts = false
ExApp.visible = true
}  
catch(e)
{
alert("您的电脑没有安装Microsoft Excel软件!")
return false
} 
 ExWBk.worksheets(1).Paste;
 }
</script>

<table id=theObjTable>
  <tr>
   <td>a</td>
   <td>b</td>
</tr>
</table>

<input type="button" value="导入到excel" onclick="tableToExcel()">

<input type="button" value="导入到word" onclick="tableToWord()">


参考: http://blog.csdn.net/luoyue2001/article/details/665773
空心兜兜 2012-11-20
  • 打赏
  • 举报
回复
方法已修改,找到一个思路: 先把内容复制到剪切板,然后粘贴

function addTable()
			{
									var sel = document.body.createTextRange();
				sel.moveToElementText(div_test);
				sel.select();
				sel.execCommand("Copy");
				OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.Paste();
			}
空心兜兜 2012-11-20
  • 打赏
  • 举报
回复
引用 2 楼 laoyebin 的回复:
这个问题,我感觉你放到.Net区更好,office的一般用VBA的多,所以你发这儿很难得到回答
昨晚已解决 尝试把所需内容复制到剪切板,然后再调用粘贴
laoyebin 2012-11-20
  • 打赏
  • 举报
回复
这个问题,我感觉你放到.Net区更好,office的一般用VBA的多,所以你发这儿很难得到回答
空心兜兜 2012-11-19
  • 打赏
  • 举报
回复
UltraEdit写的东西,出来格式都乱了…………

<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta http-equiv=X-UA-Compatible content=IE=EmulateIE7>
		<title>Office测试</title>
<script language="JavaScript" src="OfficeContorlFunctions.js"></script>
<script language="JavaScript">
			function addChars1()
			{
				OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.TypeText('acndefmdfasd');
			}
			function addChars2()
			{
				OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.TypeText('猜测大是大非');
			}
			function addTable()
			{
				var tableHtml= document.getElementById("div_test").innerHTML;
				var tableValue = document.getElementById("div_test").innerText;
				alert(tableHtml);
				alert(tableValue);
				OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.TypeText(tableHtml);
				OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.Tables.Add(tableHtml);
			}
			
			function addInput()
			{
				var inputText = document.getElementById("inputText").value;
				OFFICE_CONTROL_OBJ.ActiveDocument.Application.Selection.TypeText(inputText);
			}
		
		</script>
	</head>
	<body onload='creatNewFile()'>
		<script language="JavaScript" src="getOfficeControl.js"></script>
		
		<input type="button" value="添加几个字母" onclick="addChars1();" ></input>     
		<input type="button" value="添加几个汉字" onclick="addChars2();" ></input>     
		<br/>
		<textarea id="inputText" cols="45" rows="4"></textarea>
		<input type="button" value="添加输入值" onclick="addInput();" ></input>
		<br/>
		<input type="button" value="添加表格" onclick="addTable();" ></input><br/>
		<div id="div_test">
			<TABLE style="BORDER-COLLAPSE: collapse">
				<TBODY>
					<TR>
						<TH style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">物料名称      </TH>
						<TH style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">                 规格型号                   </TH>
						<TH style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">          材质                      </TH>
						<TH style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">单位         </TH>
						<TH style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">  合同单价     </TH>
						<TH style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">   合同数量    </TH>
						<TH style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">   合同金额       </TH>
					</TR>
					<TR>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">钢板</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">δ=10 图号6568.702-3</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">1Cr20Ni14Si2</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">公斤</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">
							<DIV style="TEXT-ALIGN: right">20.00 </DIV>
						</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">
							<DIV style="TEXT-ALIGN: right">122.64 </DIV>
						</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">
							<DIV style="TEXT-ALIGN: right">2452.80 </DIV>
						</TD>
					</TR>
					<TR>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">钢板</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">δ=10 图号6568.702-5</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">1Cr20Ni14Si2</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">公斤</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">
							<DIV style="TEXT-ALIGN: right">30.00 </DIV>
						</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">
							<DIV style="TEXT-ALIGN: right">231.84 </DIV>
						</TD>
						<TD style="BORDER-BOTTOM: black 1px solid; BORDER-LEFT: black 1px solid; BORDER-TOP: black 1px solid; BORDER-RIGHT: black 1px solid">
							<DIV style="TEXT-ALIGN: right">6955.20 </DIV>
						</TD>
					</TR>
				</TBODY>
			</TABLE>
		</div>
	</body>
</html>

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧