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批量插入,批量修改等等,不一而足.以后再写
今天终于把手头的活干完了,暂时告一段落了.以后就是慢慢改这些东西了.
Java Framework,欢迎各位前来交流java相关
QQ群:965125360