• aspose.words通过书签导出word文件


    一:导入aspose.words.jar

    二:在word里要导出字段的位置,用书签标记,给一个key。将word放入需要获取模板的位置。

    三:

      /**

      *功能:导出xxx

      *

      *@param targetFilePath 目标路径

      *@param templatePath 模板路径

      *@param map 数据

      *return File

      *throws IOException

      */

      public File exportWordText(String targetFilePath,String templatePath,Map map){

        String jvmPath= System.getProperty("jvmPath");//由于正式环境存放的盘不一定和开发环境的相同,通过jvm配置的路径。

        File temlateFile = jvmPath+templatePath;

        if(!temlateFile.exists()){

          throw new IllegalArgumentException("参数有误:指定模板不存在");

        }

        File targetFile = null;

        if(StringUtils.isEmpty(targetFilePath)){

          targetFilePath= "这里是要导出的位置"; 

        }

        targetFile = new File("targetFilePath");

        if(!targetFile.exists() || !targetFile.isFile()){

          targetFil.createNewFile();

        }

        if(!targetFile.exists() || !targetFile.isFile()){

          throw new IOException("目标文件无法创建");

        }

        FileUtils.copyFile(temlateFile,targetFile)

        doDaraToFile(targetFilePath,map);//注入数据到文件

      }

      

     /**

      *功能:导出xxx

      *

      *@param targetFilePath 目标路径

      *@param map 数据

      */

      private static void doDataToFile(String targetFilePath,Map map){

        try{

          Document doc = new Document(targetFilePath);

          if(doc !=null && doc.HaoMacros()){//涉及到Document的save操作前都将含有的宏清除。

            doc.remove();

          }

          DocumentBuilder builder = new DocumentBuilder(doc);//生成解析器

          BookMarkCollection bColl = doc.getRange().getBookmarks();

          for(int bkIndex = (bColl.getCount()-1);bkIndex>=0;bkIndex--){

            Bookmark bk = bColl.get(bkIndex);

            String mkname = bk.getName();

            Set keySet = map.keySet();

            Iterator<String> ketIt = keySet.Iterator();

            Object v = null;

            while(keyIt.hasNexk()){

              String key = keyIt.next();

              if(StringUtils.equalsIgnoreCase(mkName,key)){

                v=map.get(key);

              }

              if(v!=null){

                builder,moveToBookmark(bk.getName());//移动到书签

                bk.setText(v.toString);

              }

            }

            if(v == null){

              bk.setText("");

            }

            //导入图片

            String touxiangurl = (String) map.get("touxiangurl");

            File file = new File(touxiangurl);

            if(file.exists()){

              builder.moveToBookmark("touxiangurl");

              int margin = RelativeHorizontalPosition,MARGIN;

              int square = WrapType.SQUARE;

              builder.insertImage(touxiangurl,margin,1,margin,1,100,150,square);

            }

          }

          for(int i=0;i<bColl.getCount();i++){

            bColl.removeAt(i);//移除书签,如果不移除,导出的字段会有个标签图样;

            i--;

          }

          String docExt = FilenameUtils.getExtension(targetFilePath);

          int saveFormat = StringUtils.equalsIgnoreCase(docExt,"doc")?SaveFormat.DOC:SaveFormat.DOCX;

          doc.save(targetFilePath,saveFormat);

        }chtch(Exception e){

          e.printStackTrace();

        } 

      }

  • 相关阅读:
    AngularJS启动过程分析
    mongodb 基本用法大全
    bitbucket工程改名导致 repository does not exist. fatal: Could not read from remote repository.
    分散的配置文件VS集中的注册表
    让browserify接收命令行参数,在打包时parse yml配置文件
    vscode下ts-node传入cli参数
    d3 .each()
    d3选择全部子节点,不知道class和id
    d3 parse字符串形式的xml svg and append to element
    在浏览器端用es6,babel+browserify打包
  • 原文地址:https://www.cnblogs.com/bwl914/p/13293793.html
Copyright © 2020-2023  润新知