這篇博客再次記錄一下導出excel; 收到一個改一個excel導出的任務,於是很自然的去參考上一篇博客。
https://blog.csdn.net/qq_35529931/article/details/81988802
結果導出excel後,裏面的內容卻一直是亂碼。於是一度認爲是字符集沒有設置,各種設置都沒有效果。於是改成了英文,發現下載下來的卻也是亂碼。可以得出結論,不是亂碼的問題了。改成英文打開,如下圖;
於是參考了另一篇博客。記錄一下。
前端的寫法,沒有改變。用的原來的。
後臺的寫法 也很簡單。由於是導出模板,沒有從數據庫查詢。
代碼如下:
public void exportEnterStockDetailTemplate(HttpServletResponse response) throws IOException{
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet("物資入庫導出模板");
String fileName = null;
try {
fileName = new String("物資入庫導出模板.xls".getBytes("utf-8"), "iso-8859-1");
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("字符編碼格式不支持," + e);
}
// 新增數據行,並且設置單元格數據
String[] headers = { "操作", "入庫數量", "物資名稱", "品牌", "型號",
"單位", "入庫單價", "有效期", "供應商", "" + "位置"};
// headers表示excel表中第一行的表頭
HSSFRow row = sheet.createRow(0);
for(int i=0;i<headers.length;i++){
HSSFCell cell = row.createCell(i);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
response.setContentType("application/octet-stream");
response.setHeader("Content-disposition", "attachment;filename=" + fileName);
response.flushBuffer();
workbook.write(response.getOutputStream());
}
這樣就可以了。主要是設置了表名的中文,以及頭部的設置。
這次記錄完成。這是第二種spring boot導出excel的方法!!!