日期:2014-05-16  浏览次数:20439 次

Javascript利用VBA编辑Word文档

   在做人事系统过程中,发现网上关于Javascript与VBA交互的知识比较匮乏,为此我把自己对这方面的研究和大家分享下,希望能填补大家对这片知识的空白。

  先向大家介绍一些简单应用,比如JS创建Word文档、在Word中打印文字、添加表格,填充表格、合并表格

var wdapp = new ActiveXObject("Word.Application"); //引用word
wdapp.visible = true; //word模板是否可见
wddoc = wdapp.Documents.add(); //添加空白页
wdapp.ActiveDocument.PageSetup.Orientation = wdOrientLandscape; //文档横向排版
wdapp.Selection.TypeText("内容"); //打印文字
var myTable = wddoc.Tables.Add(wdapp.Selection.Range, 3, 3); 
myTable.Borders.Enable = true;//创建一个三行三列的表格
myTable.Cell(1, 1).Merge(myTable.Cell(1, 3));  //合并第一行
with (myTable.Cell(1, 1).Range)   //向表格第一行第一列填充数据
{           
        InsertAfter("内容");
}

   如果您的需求比较高,比如想设置表格的行高、表格内容居中,那么下面这套解决方案肯定适合您。

   首先,我们需要创建XML文件--ForwardedFileLetter.xml,并在XML中配置好在表格中需要显示的内容和内容的格式,如下代码:设置标题内容为“转递档案通知单”,字号为16,字体为宋体,对齐方式为居中。

<?xml version="1.0" encoding="utf-8" ?>
<ForwardedFileLetter>
  <Title1 fontsize="16" font-name="宋体" Alignment="1" >转递档案通知单</Title1>
  <Content1 fontsize="12" font-name="仿宋">
    <Table1 Height="30">
        <Row1>
     	   <Column1>档案编号: </Column1>
   	</Row1>
   	<Row2>
     	   <Column1>姓名</Column1>
     	   <Column2>现档案存放单位</Column2>
    	   <Column3>袋数 </Column3>
    	   <Column4>册数</Column4>
    	   <Column5>备 注</Column5>
   	</Row2>
    </Table1> 
  </Content1>
</ForwardedFileLetter>

         接着,我们在JS中创建对象,用于保存XML中获取的数据,好比C#中的实体。

var xmldoc = loadXML("ForwardedFileLetter.xml"); //读取xml文件

var Title1 = new Object(); //创建对象
var XMLTitle1 = xmldoc.getElementsByTagName("Title1"); //通过XML中的标记,获得Title1节点中包含的内容,并储存到XMLTitle1中
Title1.FontSize = XMLTitle1[0].getAttribute("fontsize"); //获得节点属性:字体大小
Title1.FontName = XMLTitle1[0].getAttribute("font-name"); //获得节点属性:字体样式
Title1.Alignment = XMLTitle1[0].getAttribute("Alignment");//获取节点属性:对齐方式
Title1.Content = XMLTitle1 [0].childNodes[0].text;        //获得节点内容

var Conten1 = new Object(); //创建对象
var XMLContent = xmldoc.getElementsByTagName("Content1"); //获得Content1节点
Content1.FontName = XMLContent [0].getAttribute("font-name"); //获得节点属性:字体样式
Content1.FontSize = XMLContent [0].getAttribute("fontsize"); //获得节点属性;字体大小

var Table1 = new Object(); //创建对象
var XMLtable = xmldoc.getElementsByTagName("Table1"); //获得节点
Table1.Height = XMLtable [0].getAttribute("Height"); //获得表格行高属性

      最后介绍如何使用保存在对象中的属性