导入依赖(poi实现excel导入导出)
<!--poi实现excel导入导出-->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
Controller层
@ResponseBody
@RequestMapping("/export")
public Result goodsExcel(@RequestBody Order order, HttpServletResponse response) {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");
XSSFWorkbook wb = null;
String fileName ="";
wb = goodsService.show();
fileName = df.format(new Date())+".xlsx";
<!--这里开始 这是跟下面三行代码一块的 如果生成之后直接下载就把上传的代码注释打开这个和下面三行代码就可以-->
OutputStream outputStream = null;
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
outputStream = response.getOutputStream();
ByteArrayOutputStream os = new ByteArrayOutputStream();
<!--这里结束-->
<!--这里开始 生成之后需要上传到服务器-->
ByteArrayOutputStream os = new ByteArrayOutputStream();
wb.write(os);
byte[] b = os.toByteArray();
ByteArrayInputStream in = new ByteArrayInputStream(b);
String strBase64 = fileUtils.ioToBase64(in);
MultipartFile file = fileUtils.base64ToMultipart(strBase64);
boolean upload = fileUtils.upload(file,localPath, fileName);
if(upload){
return Result.success("你的地址加上生成的名字就就可以访问到你生成的export"+fileName,"上传成功");
}else{
return Result.ERROR("文件上传失败");
}
<!--这里结束-->
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return Result.Exception();
}
Service层
XSSFWorkbook show();
ServiceImpl层
@Override
public XSSFWorkbook show() {
List<EndReport> list = goodsMapper.selectByExample();
XSSFWorkbook wb = new XSSFWorkbook();
Sheet sheet = wb.createSheet("EndReport");
Row titleRow = sheet.createRow(0);
titleRow.createCell(0).setCellValue("起止日期");
titleRow.createCell(1).setCellValue("截止日期");
titleRow.createCell(2).setCellValue("员工");
titleRow.createCell(3).setCellValue("实收金额");
titleRow.createCell(4).setCellValue("应收金额");
titleRow.createCell(5).setCellValue("交易笔数");
titleRow.createCell(6).setCellValue("交易升数");
titleRow.createCell(7).setCellValue("优惠金额");
titleRow.createCell(8).setCellValue("挂牌价总价");
int cell = 1;
for (EndReport endReport : list) {
Row row = sheet.createRow(cell);
row.createCell(0).setCellValue(endReport.getStart_time());
row.createCell(1).setCellValue(endReport.getEnd_time());
row.createCell(2).setCellValue(endReport.getEmployee());
row.createCell(3).setCellValue(endReport.getActual_amount());
row.createCell(4).setCellValue(endReport.getAmount_receivable());
row.createCell(5).setCellValue(endReport.getJy_count());
row.createCell(6).setCellValue(endReport.getJy_liter());
row.createCell(7).setCellValue(endReport.getDiscount_amount());
row.createCell(8).setCellValue(endReport.getPrice_sum());
cell++;
}
return wb;
}
FileUtils上传工具类
@Component
public class FileUtils {
public static boolean upload(MultipartFile file, String path, String fileName) {
String realPath = path + fileName;
System.out.println("上传文件:" + realPath);
File dest = new File(realPath);
if (!dest.getParentFile().exists()) {
dest.getParentFile().mkdir();
}
try {
file.transferTo(dest);
return true;
} catch (IllegalStateException e) {
e.printStackTrace();
return false;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
public String ioToBase64(InputStream in) throws IOException {
String strBase64 = null;
try{
byte[] bytes = new byte[in.available()];
in.read(bytes);
strBase64 = new BASE64Encoder().encode(bytes);
in.close();
}catch (IOException e) {
e.printStackTrace();
}
return strBase64;
}
public MultipartFile base64ToMultipart(String base64) {
try {
BASE64Decoder decoder = new BASE64Decoder();
byte[] b = decoder.decodeBuffer(base64);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {
b[i] += 256;
}
}
return new BASE64DecodedMultipartFile(b, base64);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}