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

}

 

  推荐精品文章

·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录
·2023年10月目录
·2023年9月目录 
·2023年8月目录 
·2023年7月目录
·2023年6月目录 
·2023年5月目录
·2023年4月目录 
·2023年3月目录 
·2023年2月目录 
·2023年1月目录 

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

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089