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

}

 

  推荐精品文章

·“物链网”的正确打开姿势:区块链如何拯…
·Facebook利用人工智能的六种方式,有些你…
·微软推出Visual Studio Kubernetes工具包…
·Facebook 正在重构 React Native,将重写…
·Facebook 正在重构 React Native,将重写…
·GitLab发布Web IDE 在Web端为你提供集成开…
·5G第一阶段标准发布 中国厂商标准占三成
·微软Windows 10的上下文菜单引入Fluent D…
·蚂蚁金服完成新一轮100亿美元融资 估值15…
·搭搭云发布3.0平台上线暨品牌升级 让SaaS…
·京东推出京点智慧办公方案 一体化服务平台…
·Java 流(Stream)、文件(File)和IO
·Java 异常处理
·Java 基础语法

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