Java 实现的XML模板转Excel的工具

Java 想问一下有没有可以实现Freemarker生成的XML文件转Excel的工具,排除spire因为免费版限制条数。

Apache POI库可以实现将由FreeMarker生成的XML文件转换为Excel文件的工具。Apache POI库实现将由FreeMarker生成的XML文件转换为Excel文件的工具。Apache POI是一个用于处理Microsoft文档格式(如Excel和Word)的Java库

参考:

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这个问题的回答你可以参考下: https://ask.csdn.net/questions/387460
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:java 使用 jacob 实现 将 freemarker 导出的 XML 格式的 excel 转 xls、xlsx 格式
  • 除此之外, 这篇博客: FreeMarker的简单使用中的 6、强大的XML处理能力 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    <#recurse> 和 <#visit> 指令(2.3版本)用于递归遍历XML树。在模板中清楚和直接的访问XML对象模型。开源论坛 JForum 就是使用了 FreeMarker 做为页面模板。


  • 以下回答来自chatgpt:

    根据参考资料中的内容,可以通过使用Freemarker和Apache POI库来实现将使用Freemarker生成的XML文件转换为Excel文件的功能。下面是具体的解决方案:

    1. 下载并导入Apache POI和Freemarker依赖库: 首先需要在项目中导入Apache POI和Freemarker的依赖库,以便在代码中使用相关类和方法。

    2. 准备XML模板文件: 创建一个XML模板文件,使用Freemarker的语法和指令来定义XML的结构和内容。模板文件中可以包含Freemarker的控制语句,如<#list>、<#if>等,用于根据数据动态生成XML结构和内容。

    3. 编写Java代码: 使用Java代码读取XML模板文件,将其加载到Freemarker的模板对象中。然后,根据数据生成XML文件,可以使用Freemarker的方法来填充数据并合并模板。最后,将生成的XML文件保存为Excel格式的文件。

    ```java import freemarker.template.Configuration; import freemarker.template.Template; import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;

    import java.io.*; import java.util.Map;

    public class XmlToExcelConverter { public static void convertXmlToExcel(String xmlTemplatePath, String outputExcelPath, Map dataMap) { try { // 加载XML模板文件 Configuration configuration = new Configuration(Configuration.VERSION_2_3_31); configuration.setDefaultEncoding("UTF-8"); configuration.setClassForTemplateLoading(XmlToExcelConverter.class, "/templates"); Template template = configuration.getTemplate(xmlTemplatePath);

               // 生成XML文件
               StringWriter stringWriter = new StringWriter();
               template.process(dataMap, stringWriter);
               String xmlContent = stringWriter.toString();
    
               // 创建工作簿和工作表
               Workbook workbook = new XSSFWorkbook();
               Sheet sheet = workbook.createSheet("Sheet1");
    
               // 解析XML内容并写入Excel单元格
               // ...
    
               // 保存Excel文件
               FileOutputStream outputStream = new FileOutputStream(outputExcelPath);
               workbook.write(outputStream);
               outputStream.close();
           } catch (Exception e) {
               e.printStackTrace();
           }
       }
    

    } ```

    1. 调用方法进行转换: 在需要进行转换的地方,调用convertXmlToExcel方法,并传入XML模板文件的路径、输出Excel文件的路径以及数据Map。

    ```java public static void main(String[] args) { String xmlTemplatePath = "template.xml"; String outputExcelPath = "output.xlsx"; Map dataMap = new HashMap<>(); // 设置模板中需要用到的数据 // ...

       convertXmlToExcel(xmlTemplatePath, outputExcelPath, dataMap);
    

    } ```

    以上是一种使用Freemarker和Apache POI来实现将使用Freemarker生成的XML文件转换为Excel文件的解决方案。请根据具体情况进行适当的调整和修改。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^