你好,欢迎来到电脑编程技巧与维护杂志社! [免费注册][请登录 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 网络与通信
在线生成Word文档的实现与应用(四)
 

 

1.1.1 另存文档

结果集容器初始化之后,要做的就是从文档模板中读取所有需要替换的标签文本,并一一与容器中的数据项进行对应,继而进行替换,追回将替换完毕的文档另存为新的Word文档。代码6是另存Word文档的主要代码。

代码6 另存Word文档

文件名:DocBuilder.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

//读取模板和输出信息,调用保存模块

public void saveAs(String tempPath, String outPath) {

       __saveAs(tempPath+getTemplate(), outPath+getOutput() );

}

 

//替换模板并保存输出

private void __saveAs(String tempFilePath, String outFilePath) {

 

       if(mWordUtil.connect(false) == false) {

              return;

       }

       //打开文档模板

       if(mWordUtil.open(tempFilePath) == false) {

              mWordUtil.disconnect();

              return;

       }            

       //获取文档模板中所有标签文本

       HashSet<String> texts = mWordUtil.getTagText(TAG_LEFT, TAG_RIGHT);

       if(texts == null) {

              mWordUtil.close();

              mWordUtil.disconnect();

              return;

       }

      

       //解析标签文本并进行替换

       Iterator<String> it = texts.iterator();

       while(it.hasNext() ) {

              TagParser parser = new TagParser(it.next() );

 

              switch(parser.getType() ) {

                     case TagParser.TAG_TYPE_RS: {

                            handleRsTag(parser);

                            break;

                     }            

                     default: {

                            break;

                     }

              }

       }

       //另存文档

       try {

              mWordUtil.saveAs(outFilePath);

              mWordUtil.close();

              mWordUtil.disconnect();

       } catch(Exception e) {

              e.printStackTrace();

              return;

       }

      

       FooDebug.getInstance().println("文档处理完毕!");

}

 

1.1.2 替换标签文本

代码7是替换标签文本的关键代码。

代码7 替换标签文本

文件名:DocBuilder.java

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

//处理数据集标签(本数据集外)

private void handleRsTag(TagParser parser) {

       //获取标签文本中的数据源和行列信息

       final String dsId = parser.getItem1();

       final int row = Integer.parseInt(parser.getItem2() );

       final int col = Integer.parseInt(parser.getItem3() );

       //获取对应数据源的记录集

       ArrayList<ArrayList<String>> rows = mResuleSet.get(DS_PREFIX+dsId);

      

       if(rows == null) {

              return;

       }

             

       String val = "";

       //获取标签文本对应的列值

       if( (row < rows.size()) && (col < rows.get(0).size() ) ) {

              try {

                     val = rows.get(row).get(col);

              } catch(IndexOutOfBoundsException e) {

                     return;

              }

       }

       //替换标签文本

       mWordUtil.replace(parser.getRawText(), val);

}

 

  推荐精品文章

·一文解读:工程师常用的接口大全
·谷歌在深圳设立办公室 或专注硬件业务
·甲骨文发布关键补丁 修复英特尔芯片漏洞
·容器圈2017年回顾及2018年技术热点预测
·外媒速递:Web开发者与用户界面开发者之间…
·在2018年最值得去学习的编程语言
·共享医疗来了!温州全民健康信息化“十三…
·百度 CES 发布会:重磅推出 Apollo 2.0,…
·数据科学热到爆,如何让数据成为运维的大…
·芯片涨价潮再度来袭,2018芯片国产化迫在…
·美团云+AI,打造最开放人工智能平台,带来…
·京东京麦:微服务架构下的高可用网关与容…
·阿里云计算公司总部效果图曝光 预计2021年…
·东进:加密将成为中国企业数据安全的标配…

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备06048724号,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区长春桥路5号6号楼1209室,邮编:100089