你好,欢迎来到电脑编程技巧与维护杂志社! [免费注册][请登录 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 网络与通信
在线生成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);

}

 

  推荐精品文章

·黑客频频攻击区块链安全软肋,如何保证区…
·阿里、商汤在香港设立人工智能实验室 本月…
·云端的竞争:巨头纷纷加码云市场
·中国云体系联盟主办未来科技独角兽与行业…
·Gartner:企业首席信息官们可能没有注意到…
·微软开源Azure云服务AI引擎Infer.NET
·创新指纹读取器出炉:平均准确率最高可达…
·微软投资东南亚出行公司Grab 将进行AI等技…
·Facebook开发AI系统:看美食图片能自动生…
·工信部:促进区块链与实体经济深度融合
·谷歌首度证实了重返中国的Dragonfly计划的…
·Java 11正式发布,告诉你到底应不应该升级…
·Stack Overflow 10 周年了,作为程序员你…
·新手初学Python最常犯的十个错误,其中有…

  联系方式
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