Excel导入:
使用apache 的POI进行excel的导入,
1. pom.xml中添加依赖
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
2. 获取当前xlsx文件的整个book对象
//文件存放所在文件夹 private static final String pathDir="E:\\要导入的病例\\"; /** * @Description: 根据文件的位置,获取当前excel的book对象 * @param path 文件名 * @return org.apache.poi.xssf.usermodel.XSSFWorkbook * @author zk * @date 2018-04-09 19:22 */ public static XSSFWorkbook getBook(String path) throws Exception{ OPCPackage pkg = OPCPackage.open(pathDir+path); XSSFWorkbook hWorkbook = new XSSFWorkbook(pkg); return hWorkbook; }
获取当前的表格对象,获取当前的第一页的表格对象
XSSFWorkbook book = ExcelUtil.getBook(s);
XSSFSheet sheet = book.getSheetAt(1);
3. 其他的就没有什么了.我写了一点工具类,贡献给大家了
package com.dataimport.util; import org.apache.poi.openxml4j.opc.OPCPackage; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; /** * @Description: Excel 工具类 * @author zk * @date 2018-04-03 10:19 */ public class ExcelUtil { //文件存放所在文件夹 private static final String pathDir="E:\\要导入的病例\\"; /** * @Description: 根据文件的位置,获取当前excel的book对象 * @param path 文件名 * @return org.apache.poi.xssf.usermodel.XSSFWorkbook * @author zk * @date 2018-04-09 19:22 */ public static XSSFWorkbook getBook(String path) throws Exception{ OPCPackage pkg = OPCPackage.open(pathDir+path); XSSFWorkbook hWorkbook = new XSSFWorkbook(pkg); return hWorkbook; } /** * Description: 根据文件位置,获取第index个表格的对象 * @date 2018年3月23日 * @author zk */ public static XSSFSheet getSheet(String path,int index) throws Exception{ /* File tempFile = new File(pathDir+path); InputStream in = new FileInputStream(tempFile); XSSFWorkbook hWorkbook = new XSSFWorkbook(in); */ //使用新的方法获取流 OPCPackage pkg = OPCPackage.open(pathDir+path); XSSFWorkbook hWorkbook = new XSSFWorkbook(pkg); XSSFSheet hSheet = hWorkbook.getSheetAt(index); return hSheet; } /** * Description: 是否是一个空的表格,没有内容 * @param cell 一个表格对象 * @date 2018年3月29日 * @author zk */ public static boolean isNotNullBlock(XSSFCell cell){ if(cell!=null){ if(!cell.toString().equals("")){ return true; } } return false; } /** * @Description: 获取一行的某一列的数据,为空就返回null * @param row 行对象, index 第几列 * @return java.lang.String * @author zk * @date 2018-04-10 11:15 */ public static String getCell(XSSFRow row,int index){ if(row==null){ return null; } XSSFCell cell1 = row.getCell(index); String tmp=null; if(ExcelUtil.isNotNullBlock(cell1)){ tmp=cell1.toString().trim(); } return tmp; } }
Excel 中的一个表格如果储存的是
1,
2.
3.
这种换行的内容,从java中读取出来,默认是加上了\n 换行符的.
cell0.toString().replace("\n","") 就直接去掉了换行,变成一行了,打印出来是1,2.3.
如果不进行任何操作读取出来进行打印就是:
1,
2.
3.
如果是使用了excel的自动换行功能,在java中读取出来不会进行换行,还是一行的哦.
还有其中涉及到的mybatis批量插入,批量修改等等,不一而足.以后再写
今天终于把手头的活干完了,暂时告一段落了.以后就是慢慢改这些东西了.来这个公司3个星期了,写了3个星期的Excel导入了....
天天加班,和我家的小可爱聊天的时间就少了好多....哎.
https://item.taobao.com/item.htm?spm=a1z10.1-c.w4004-18045781879.2.33c5236bZlPDUM&id=569353717228
深入理解Java虚拟机(jvm性能调优+内存模型+虚拟机原理) 很不错的虚拟机视频教程.