Excel文件转换为XML文件

  1 import java.io.BufferedWriter;
  2 import java.io.File;
  3 import java.io.FileInputStream;
  4 import java.io.FileNotFoundException;
  5 import java.io.FileOutputStream;
  6 import java.io.IOException;
  7 import java.io.InputStream;
  8 import java.io.OutputStreamWriter;
  9 import java.util.HashMap;
 10
 11 import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
 12 import org.apache.poi.ss.usermodel.Cell;
 13 import org.apache.poi.ss.usermodel.Row;
 14 import org.apache.poi.ss.usermodel.Sheet;
 15 import org.apache.poi.ss.usermodel.Workbook;
 16 import org.apache.poi.ss.usermodel.WorkbookFactory;
 17
 18 public class Excels2Xml {
 19
 20     private static HashMap<String, File> map = new HashMap<>();
 21
 22     /**
 23      * 输入文件路径,对于嵌套的目录不进行读取
 24      *
 25      * @param inPath
 26      * @return
 27      */
 28     public static HashMap<String, File> getFiles(String inPath) {
 29         if (null == inPath || inPath.trim().length() == 0)
 30             return null;
 31         File filex = new File(inPath);
 32         if (filex.isDirectory()) {
 33             File[] files = filex.listFiles();
 34             if (files.length > 0) {
 35                 for (File file : files) {
 36                     if (file.isFile() && (file.getName().contains(".xlsx") || file.getName().contains(".xls")))
 37                         map.put(file.getName(), file);
 38                 }
 39             }
 40         } else if (filex.isFile()) {
 41             map.put(filex.getName(), filex);
 42         }
 43         return map;
 44     }
 45
 46     /**
 47      *
 48      * @param map
 49      * @param outPath
 50      */
 51     public static void excels2Xml(HashMap<String, File> map, String outPath) {
 52         if (map == null)
 53             return;
 54         map.forEach((fileName, file) -> {
 55             BufferedWriter bw = null;
 56             InputStream is = null;
 57             try {
 58                 String fn = fileName.replace(".xlsx", ".xml");
 59                 if (fn == fileName) {
 60                     fn = fileName.replace(".xls", ".xml");
 61                 }
 62                 bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File(outPath + fn)), "utf-8"));
 63                 is = new FileInputStream(file.getPath());
 64                 Workbook hssfWorkbook = WorkbookFactory.create(is);
 65                 if (null != hssfWorkbook)
 66                     bw.write("<xmls>\n");
 67                 for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) {
 68                     Sheet hssfSheet = hssfWorkbook.getSheetAt(numSheet);
 69                     if (hssfSheet == null) {
 70                         continue;
 71                     }
 72                     for (int rowNum = 1; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
 73                         Row hssfRow = hssfSheet.getRow(rowNum);
 74                         if (hssfRow != null) {
 75                             Cell content = hssfRow.getCell(0);
 76                             Cell channel = hssfRow.getCell(2);
 77                             bw.write("<m1>\n");
 78                             bw.write("<content>" + content + "</content>\n");
 79                             bw.write("<channel>" + channel + "</channel>\n");
 80                             bw.write("</m1>\n\n");
 81                         }
 82                     }
 83                 }
 84                 bw.write("<xmls>\n");
 85             } catch (FileNotFoundException e) {
 86                 System.out.println("FileNotFoundException...");
 87                 e.printStackTrace();
 88             } catch (InvalidFormatException e) {
 89                 System.out.println("InvalidFormatException...");
 90                 e.printStackTrace();
 91             } catch (IOException e) {
 92                 System.out.println("IOException...");
 93                 e.printStackTrace();
 94             } finally {
 95                 try {
 96                     if (bw != null)
 97                         bw.close();
 98                     if (is != null)
 99                         is.close();
100                 } catch (IOException e) {
101                     e.printStackTrace();
102                 }
103             }
104         });
105     }
106
107     public static void main(String[] args) throws Exception {
108         long begin = System.currentTimeMillis();
109         excels2Xml(getFiles("D:\\EXCEL\\"), "D:\\EXCEL\\xml\\");
110         long end = System.currentTimeMillis();
111         System.out.println("The program consume " + (end - begin) / 1000 / 60.0 + "  seconds");
112     }
113 }

说明:

  本实例代码主要实现功能为:将D:\\EXCEL目录下的01.xlsx,02.xls文件,对应转换成01.xml、02.xml文件生成到对应的目录中

注意:

  输出路径记得加上“\\”

  

时间: 2024-10-08 12:06:29

Excel文件转换为XML文件的相关文章

Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件. 2.excel定义成模板,里面只填写了所需要的数据,有可能数据有问题. 3.在导入的时候就需要对每个excel单元格的数据进行验证. 4.验证完之后,若所有数据正确,那么批量保存.若有一点点错误,就不执行保存操作,并提示错误原因. 思路: 1.完美使用了Map的功能,先将xml中的数据存入map

2. PyQt5 .ui文件转换为.py文件

Author: Notus([email protected]) Create: 2019-02-09 Update: 2019-02-09 PyQt5 .ui文件转换为.py文件 环境 操作系统: macOS Mojave, version 10.14.1 Python Version: 3.6.4 PyQt5 Version: 5.11.3 Qt Creator Version: 4.8.1 窗体显示效果如下 对应的.ui文件(firstMainWin.ui)内容为 <?xml versio

3. PyQt5-通过Python脚本把当前目录下的所有.ui文件转换为.py文件

Author: Notus([email protected]) Create: 2019-02-10 Update: 2019-02-10 PyQt5-通过Python脚本把当前目录下的所有.ui文件转换为.py文件 环境 操作系统: Windows 10 专业版 64-bit (10.0, Build 16299) (16299.rs3_release.170928-1534) Python Version: 3.7.1 PyQt5 Version: 5.11.3 Qt Designer V

python之模块py_compile用法(将py文件转换为pyc文件)

# -*- coding: cp936 -*- #python 27 #xiaodeng #python之模块py_compile用法(将py文件转换为pyc文件) #二进制文件,是由py文件经过编译后,生成的文件. ''' import py_compile #不带转义r py_compile.compile('D:\test.py') Traceback (most recent call last): File "<pyshell#1>", line 1, in &l

Android中java文件与XML文件的协作过程

android是使用XML布局文件来定义界面,不是用Java代码来定义界面,所以说所有组件都提供了两种方式来控制组件的行为. 1. 在XML布局文件中通过XML属性进行时控制 2. 在Java程序代码中通过调用方法进行时控制. 实际上不管使用哪种方式,他们控制android用户界面行为的本质是完全一样的.大部分时候,控制UI组件的XML属性还有对应的方法. 对于View类而言,他是所有UI组件的基类,因此他包含的XML属性和方法时所有组件可以使用的.XML文件布局相对简单,常用的几种属性练熟就基

swftools工具将pdf文件转换为swf文件

开发客户网站时遇到了一个需求,客户要求后台上传pdf文件,前台能以翻书的形式直接访问. 首先想到的是使用js解决,用户访问前端页面时,php将文件路径发送给js,让js呈现出来翻书的效果.在网上百度了一圈也没有找到现成的插件. 于是由某人提供的flash完成,这时就需要将客户在后台上传的pdf文件转换为swf文件才能通过某人提供的flash呈现出来,而且需要pdf的每一页生成一个swf文件,才能出现翻书的效果.这时又由某人提供说,swftools可以完成这个需求,于是迅速百度. swftools

bin文件转换为hex文件C语言实现

对于嵌入式而言,hex文件可能大家再熟悉不过了,对,我们大学时学习的51单片机编写的代码在keil上编译后就生成了hex文件.那bin文件又是什么意思呢,它又和hex文件的区别在哪?这也不是本文的重点,下面简单的描述下: 最通俗的来讲,hex是带地址的,用下载器下载时,不需要设置偏移地址,它是文件流格式的,都是标准的ASCII码.而bin文件是不带地址的,全部是二进制数据流,打住一下,其实就是我们所谓的机器代码.有兴趣的同学,可以尝试着用反汇编,得到的就是汇编代码了.我所用的开发板S3C2440

浅试txt文件与xml文件互相转换

最近遇到了txt文件和xml文件互相转换的问题,于是自己写了写,不算深,只是简单的互相转换,下面把代码共享一下,欢迎大家指点. 先看结果: 这是数据表里面查询出来的  select * from 表名 将数据表导出到txt文件中: 将上述的txt文件转换成xml文件: 由于屏幕截图问题,一个屏没截完整,最后没问题的. 又将xml文件转换成txt文件 : 第一步:获得txt文件数据源,首先找一个数据表把里面的数据导出到txt文件中,以逗号隔开.如下: 配置文件和读取数据类就不多说了,默认的 . 从

关于跨域策略文件crossdomain.xml文件

下载flexpaper源码修改后做成swf阅读器,要加入待阅读的swf文件,可以在flex里调用js的方法来获取swf文件的路径的方法,在js只专注获取路径就行,等着flex来调用:但这里会遇到一个问题那就是出现安全问题,如下的提示: Error #2044: 未处理的 onDocumentLoadedError:. text=Error #2048: 安全沙箱冲突:http://localhost:8080/UpLoadAndDownLoad/FlexPaper.swf 不能从 http://