Java对Excel表格的读取,处理,下载

Excel的下载:

  直接通过流来读取路径下的Excel文件,将输入流(InputStream)转为字节输出流(OutputStream)后,放入HttpResponse中就OK了,前提是要设置好响应头和文件类型编码等设置

具体代码如下:

 @GetMapping(/download)
 public void downloadExcel(HttpServletResponse response){
 try{
String fileName = "xxx.xls"
  InputStream docfile = getClass().getClassLoader().getResourceAsStream(fileName);
  //设置响应的各种信息
  response.setCharacterEncoding("UTF-8");
  response.setHeader("content-type","applaction/octet-stream;charset=UTF-8");
  response.setContentType("application/octet-stream;charset=UTF-8");
  response.setHeader("Content-Disposition","attachment;filename="+java.net.URLEncoder.encode(fileName));
  //把输出流存入response
  ServletOutputStream outStream = response.getOutputStream();
  //把文件写入outputstream 固定操作
  byte[] buffer = new byte[10 * 1024];
  int n = 0;
  while((n = docfile.read(buffer)) != -1){
  outStream.write(buffer,0,n);
}
  outStream.flush();
  outStream.close();
  docfile.close();
}catch(Exception e){
e.pringtStackTrace();
}
}

 Excel的上传,内容处理:

  后台通过file接受前台传的Excel文件,然后用Workbook读取

//Controller层
@PostMapping("excelImport")
public boolean excelImport(@Request("file")MultiparFile file)){
    boolean boo = true;
  try{
  boo =excelService.importToMysql(file.getOriginalFilename,file);  
}catch(Exception){
  e.printStackTrace();
}
return boo; }
//Service层
public boolean importToMysql(String fileName,MultipartFile file){
  InputStream is = file.getInputStream();
  boolean notNull = false;
  ArrayList<Map> list = new ArrayList<>();
  //判断文件结尾类型
  if(!fileName.matches("^.+\\.(?i)(xls)$") &&
!fileName.matches("^.+\\.(?i)(xlsx)$") ){
  throw new Exception("文件格式有误");
}
  boolean isExcel2003 = true;

  if (fileName.matches("^.+\\.(?i)(xlsx)$")) {
  isExcel2003 = false;
  }
   //创建文档对象
  Workbook wb = null;
  if (isExcel2003) {
  wb = new HSSFWorkbook(is);
  } else {
  wb = new XSSFWorkbook(is);
  }

    //创建表单

  Sheet sheet = wb.getSheet(0);

  if(sheet!=null){

   notNull = false;

  }

  //总行数

  int rowLength = sheet.getLastRowNum()-1;

  //获取第2行的内容(根据excel内容而定,想要那行做map集合的key都行)

  

  

 

}

 

posted @ 2021-03-05 10:58  平平无奇的小源  阅读(523)  评论(0)    收藏  举报