package com.example.file.controller;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
@RestController
public class ExportController {
/**
* 导出excel
* @param response
*/
@GetMapping("/exportExcel")
public void fileDownLoad(HttpServletResponse response) {
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
HSSFSheet sheet = hssfWorkbook.createSheet("sheet");
// 一个创建excel标题的的方法
createTitle(hssfWorkbook, sheet);
try {
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" +
java.net.URLEncoder.encode("测试.xls", "UTF-8"));
OutputStream outputStream = response.getOutputStream();
hssfWorkbook.write(outputStream);
outputStream.flush();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 创建表头
*
* @param workbook
* @param sheet
*/
private void createTitle(HSSFWorkbook workbook, HSSFSheet sheet) {
HSSFRow row = sheet.createRow(0);
//设置为居中加粗
HSSFCellStyle style = workbook.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER);
HSSFFont font = workbook.createFont();
style.setFont(font);
HSSFCell cell;
cell = row.createCell(0);
cell.setCellValue("测试1");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("测试2");
cell.setCellStyle(style);
cell = row.createCell(2);
cell.setCellValue("测试3");
cell.setCellStyle(style);
}
/**
* 下载文件
* @param response
* @return
*/
@GetMapping(value = "/exportFile")
public void expertExcel(HttpServletResponse response) {
File file = new File("/Volumes/Personal/remark.pdf");
try {
InputStream fis = new BufferedInputStream(new FileInputStream(file));
byte[] buffer = new byte[fis.available()];
fis.read(buffer);
response.addHeader("Content-Length", "" + file.length());
OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
response.setContentType("application/octet-stream;charset=utf-8");
toClient.write(buffer);
toClient.flush();
fis.close();
toClient.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}