Poi文件上传解析代码
导出代码:
@RequestMapping("subtotals")
public String subTotals(Subscribe subscribe,Model model,String pageNow,HttpServletRequest request,HttpServletResponse httpServletResponse) throws IOException{
//查出所有制药方式
List<Subscribe> list = pageView.getRecords();
if(list.size()>0){
//通过poi创建对象
HSSFWorkbook hssfWorkbook=new HSSFWorkbook();
//创建标签页
HSSFSheet createSheet = hssfWorkbook.createSheet("sheet1");
//设置第一行信息
HSSFRow createRow = createSheet.createRow(0);
createRow.createCell(0).setCellValue("编号");
createRow.createCell(1).setCellValue("用户名");
createRow.createCell(2).setCellValue("密码");
createRow.createCell(3).setCellValue("类型");
createRow.createCell(4).setCellValue("生日");
createRow.createCell(5).setCellValue("性别");
createRow.createCell(6).setCellValue("手机");
//遍历数据
for (Subscribe su : list) {
//设置进表格
HSSFRow createRow2 = createSheet.createRow(createSheet.getLastRowNum()+1);
createRow2.createCell(0).setCellValue(su.getId());
createRow2.createCell(1).setCellValue(su.getAddUserName());
createRow2.createCell(2).setCellValue(su.getCustomerName());
if(su.getType()!=null){
createRow2.createCell(3).setCellValue(su.getType());
}else {
createRow2.createCell(3).setCellValue("无数据");
}
if(su.getAddTime()!=null){
createRow2.createCell(4).setCellValue(su.getAddTime());
}else {
createRow2.createCell(4).setCellValue("无数据");
}
if(su.getSex()!=null){
createRow2.createCell(5).setCellValue(su.getSex());
}else {
createRow2.createCell(5).setCellValue("无数据");
}
createRow2.createCell(6).setCellValue(su.getBeginDate());
}
//设置文件名
String fileName="客户数据.xls";
//获取所用浏览器请求头信息
String agent = request.getHeader("User-Agent");
//处理中文名乱码问题
fileName = FileUtil.encodeDownloadFilename(fileName, agent);
//作为附件下载需要一个流 两个头
fileName=new String(fileName.getBytes("gbk"),"iso8859-1");//防止中文乱码
HttpHeaders headers=new HttpHeaders();//设置响应头
headers.add("Content-Disposition", "attachment;filename="+fileName);
HttpStatus statusCode = HttpStatus.OK;//设置响应吗
httpServletResponse.setHeader("content-type", "application/vnd.ms-excel");
httpServletResponse.setHeader("content-disposition", "attachment;fileName="+fileName);
//给这个对象设置一个流
hssfWorkbook.write(httpServletResponse.getOutputStream());
}
return NONE;
}
fileUtil:
/**
* 下载文件时,针对不同浏览器,进行附件名的编码
*
* @param filename
* 下载文件名
* @param agent
* 客户端浏览器
* @return 编码后的下载附件名
* @throws IOException
*/
public static String encodeDownloadFilename(String filename, String agent)
throws IOException {
if (agent.contains("Firefox")) { // 火狐浏览器
filename = "=?UTF-8?B?"
+ new BASE64Encoder().encode(filename.getBytes("utf-8"))
+ "?=";
filename = filename.replaceAll("\r\n", "");
} else { // IE及其他浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+"," ");
}
return filename;
}
导入代码:
@ResponseBody
@RequestMapping("subtotalss")
public void subTotalss(Subscribe subscribe,Model model,@RequestParam MultipartFile file,HttpServletRequest request,HttpServletResponse httpServletResponse) throws IOException{
//先将文件上传服务器
FileBean uploadFile = ImageUtil.uploadFile(file);
String fileName = "E:/hsdresource/resource/"+uploadFile.getFileName();//获取文件保存路径
FileInputStream fileInputStream = new FileInputStream(fileName);
HSSFWorkbook hssfWorkbook= new HSSFWorkbook(fileInputStream);
//获取文件中的第一页
HSSFSheet sheet = hssfWorkbook.getSheet("sheet1");
List<Subscribe> list=new ArrayList<>();
//遍历sheet标签页中行
for (Row row : sheet) {
//判断getRowNum==0
if(row.getRowNum()==0){
continue;
}
// 将区域编号的cell中的内容当做字符串处理
row.getCell(0).setCellType(HSSFCell.CELL_TYPE_STRING);
String id = row.getCell(0).getStringCellValue();
String province = row.getCell(1).getStringCellValue();
//赋值到对象
subscribe.setId(Integer.parseInt(id));
list.add(subscribe);
}
// subscribeService.save(list);//进行保存
}
实现导出第二种方式
Jsp中加入 (页面直接展示数据即可)
<%response.setContentType(“application/vnd.ms-excel”);
response.addHeader(“Content-Disposition”, “attachment;filename=toll.xls”);%>