java excel 的POI导入

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: 根据文件的位置,获取当前excelbook对象
* @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: 根据文件的位置,获取当前excelbook对象
    * @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 2018323日
     * @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 2018329日
     * @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性能调优+内存模型+虚拟机原理)   很不错的虚拟机视频教程.



猜你喜欢

转载自blog.csdn.net/u010398771/article/details/79979437