@RequestMapping("exportExcel.action")
public void exportExcel(HttpServletResponse response) throws IOException {
try {
// 查詢并賦給List集合
List oddList = entityService.listExport();
// 在記憶體中建立一個Excel檔案,通過輸出流寫到用戶端提供下載下傳
// 記憶體中保留 10000 條資料,以免記憶體溢出,其餘寫入 硬碟
SXSSFWorkbook workbook = new SXSSFWorkbook(10000);
// 建立一個sheet頁
SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("這是sheet名");
// 分别設定Excel列的寬度
sheet.setColumnWidth(0, 100 * 40);
sheet.setColumnWidth(1, 100 * 50);
sheet.setColumnWidth(2, 100 * 50);
// 建立标題
SXSSFRow headRow = (SXSSFRow) sheet.createRow(0);
headRow.createCell(0).setCellValue("編号");
headRow.createCell(1).setCellValue("時間");
headRow.createCell(2).setCellValue("單号");
// 周遊oddList集合
for (OddNunber odd : oddList) {
// 建立行
SXSSFRow dataRow = (SXSSFRow) sheet.createRow(sheet.getLastRowNum() + 1);
// 建立下标為0的Cell,并将其值設為查詢結果中的編号
dataRow.createCell(0).setCellValue(odd.getOnid());
// 建立下标為1的Cell,并将其值設為查詢結果中的日期
dataRow.createCell(1).setCellValue(odd.getOrecorddate());
// 建立下标為2的Cell,并将其值設為查詢結果中的單号
dataRow.createCell(2).setCellValue(odd.getCustomernumber());
}
// 設定生成的Excel的檔案名,并以中文進行編碼
String codedFileName = new String("Excel名".getBytes("gbk"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + codedFileName + ".xlsx");
// 響應類型,編碼
response.setContentType("application/octet-stream;charset=UTF-8");
// 形成輸出流
OutputStream osOut = response.getOutputStream();
// 将指定的位元組寫入此輸出流
workbook.write(osOut);
// 重新整理此輸出流并強制将所有緩沖的輸出位元組被寫出
osOut.flush();
// 關閉流
osOut.close();
workbook.dispose();
} catch (Exception e) {
e.printStackTrace();
response.sendRedirect("error.action");
log.error("系統錯誤", e.fillInStackTrace());
}
}
轉載自:https://www.cnblogs.com/shoose/p/7744443.html