https://blog.csdn.net/weixin_39592397/article/details/85242287
excel导入导出网上参考了一些代码感觉写的都比较复杂,就自己看了一下poi的api自己封装了一段代码(如下)
目前,比较常用的实现Java导入、导出Excel的技术有两种Jakarta POI和Java Excel
此功能就是poi试下的
POI简介:Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
HSSF - 提供读写Microsoft Excel格式档案的功能。
XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
HWPF - 提供读写Microsoft Word格式档案的功能。
HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
HDGF - 提供读写Microsoft Visio格式档案的功能。
1.需要jar包
org.apache.poi
poi
3.9
org.apache.poi
poi-ooxml
3.9
2创建controller类
通过MultipartFile 接收上传的excel文件
@RequestMapping(value="upload",method=RequestMethod.POST)
@ResponseBody
public boolean upload(HttpServletRequest request,
@RequestParam("file") MultipartFile file) throws Exception {
//如果文件不为空,写入上传路径
if(!file.isEmpty()) {
return importService.ImportEexlService(file);
}else {
return false;
}
}
3创建service类
public boolean ImportEexlService(MultipartFile file){
try {
//解析xlsx后缀的excel文件 xls后缀的暂时没写
readXlsx(file.getInputStream());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return true;
}
//创建方法 解析excel文件 保存到数据库
public void readXlsx(InputStream inputStream ) throws IOException{
//XSSFWorkbook 需要一个inputStream流 在上面我们已经把file转成了流所以现在直接用就可以了
XSSFWorkbook xssfWorkbook = new XSSFWorkbook(inputStream);
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
String comcode=null;
String comname=null;
String ck_rank=null;
String ck_score=null;
String fw_rank=null;
String fw_score=null;
//获取第一个Sheet 遍历获取每一行数据
for(int rowNum = 2; rowNum <= xssfSheet.getLastRowNum(); rowNum++ ){
//从第二行开始遍历
//取每一行每一列的值
XSSFRow xssfRow = xssfSheet.getRow(rowNum);
//取第一行第一个格的值
comcode=getValue(xssfRow.getCell(0));
comname=getValue(xssfRow.getCell(1));
ck_rank=getValue(xssfRow.getCell(2));
ck_score=getValue(xssfRow.getCell(3));
fw_rank=getValue(xssfRow.getCell(4));
fw_score=getValue(xssfRow.getCell(5));
//把获取到的数据直接插入到数据库
String sql=" insert into t_car_service(id,comcode,comname,ck_rank,ck_score,fw_rank,fw_score,create_date) "
+ " values('"+UUID.randomUUID().toString()+"','"+comcode+"','"+comname+"','"+ck_rank+"','"+ck_score+"','"+fw_rank+"','"+fw_score+"',SYSDATE) ";
importDao.importEexlDao(sql);
}
private static String getValue(XSSFCell xssfCell){
if(xssfCell.getCellType() == xssfCell.CELL_TYPE_BOOLEAN){
return String.valueOf( xssfCell.getBooleanCellValue());
}else if(xssfCell.getCellType() == xssfCell.CELL_TYPE_NUMERIC){
return String.valueOf( xssfCell.getNumericCellValue());
}else{
return String.valueOf( xssfCell.getStringCellValue());
}
}
}
完结
本文为自己做项目亲自总结
不懂请下方留言
转载请标明地址
导出的话过几天会更新