PlutoX52 2021-02-04 15:21 采纳率: 0%
浏览 20

Groovy语言 Excel转XML代码实现方式

我现在有一个.xslm的Excel文件,读取内容是用集成平台读好的,但是目前读到的是乱码,现在想实现把Excel文件转换成XML文件,为后续继续转换成EDI格式的文件做准备,想问一下Groovy或者js可以实现把读取的这部分数据转换成XML吗

  • 写回答

1条回答 默认 最新

  • 关注

    以下是Groovy语言Excel转XML的代码实现方式:

    
    @Grab(group='org.apache.poi', module='poi', version='3.17') //导入Apache POI库
    import org.apache.poi.hssf.usermodel.HSSFWorkbook //导入HSSFWorkbook类
    import org.apache.poi.ss.usermodel.* //导入SS包中的所有类
    import groovy.xml.* //导入Groovy XML类
    def excelToXml(File excelFile) {
       FileInputStream inputStream = new FileInputStream(excelFile) //创建文件输入流
       Workbook workbook = new HSSFWorkbook(inputStream) //创建工作簿
       Sheet sheet = workbook.getSheetAt(0) //获取第一个工作表
       List<Map<String, String>> dataList = [] //创建List,用于存储Excel数据
       //遍历每一行数据
       sheet.forEach { row ->
          if (row.getRowNum() > 0) { //跳过第一行表头
             Map<String, String> dataMap = [:] //创建Map,用于存储每行数据
             row.forEach { cell ->
                int colIndex = cell.getColumnIndex() //获取当前单元格所在列
                String colName = sheet.getRow(0).getCell(colIndex).getStringCellValue() //获取当前单元格所在列的名称
                String cellValue = cell.getStringCellValue() //获取单元格的值
                dataMap.put(colName, cellValue) //将列名和值存入Map
             }
             dataList.add(dataMap) //将Map存入List
          }
       }
       def xmlBuilder = new StreamingMarkupBuilder() //创建XMLBuilder
       def rootNodeName = excelFile.getName().substring(0, excelFile.getName().indexOf('.')) //获取Excel文件名作为根节点名
       def xml = xmlBuilder.bind {
          "$rootNodeName" {
             dataList.each { dataMap ->
                "row" {
                   dataMap.each { key, value ->
                      "$key"(value) //将Map中的键值对作为XML节点和值
                   }
                }
             }
          }
       }
       return XmlUtil.serialize(xml) //将XML输出为字符串
    }
    

    使用方式:

    File excelFile = new File('data.xlsx') //创建Excel文件对象
    def xmlString = excelToXml(excelFile) //调用excelToXml方法将Excel转为XML
    println xmlString //输出XML字符串
    

    注意,此代码仅适用于Excel文件中只有一个工作表的情况。如果Excel文件中有多个工作表,需要对每个工作表进行遍历并合并数据。

    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?