//控制層
@PostMapping("/exportDeposit")
? public void excelDownload(HttpServletResponse response,@ModelAttribute FinanceBudgetData data1) throws IOException {
? ? ? List<List<String>> excelData = new ArrayList<>();
? ? ? List<String> head = new ArrayList<>();
? ? ? head.add("日期");
? ? ? head.add("部門");
? ? ? head.add("事項");
? ? ? head.add("計劃收入金額");
? ? ? head.add("計劃支出金額");
? ? ? head.add("余額");
? ? ? head.add("備注");
? ? ? excelData.add(head);
? ? ? PackageResultData resultData=budgetService.getList(data1);
? ? ? List<ResultData> baseResultData=resultData.getRows();
? ? ? for(ResultData resData:baseResultData) {
? ? ? List<String> data = new ArrayList<>();
? ? ? data.add(resData.getDate());
? ? ? data.add(resData.getOrganizationName());
? ? ? data.add(resData.getItem());
? ? ? data.add(resData.getIncome());
? ? ? data.add(resData.getExpend());
? ? ? data.add(resData.getAmount());
? ? ? data.add(resData.getRemark());
? ? ? excelData.add(data);
? ? ? }
? ? ? String sheetName = "預算現(xiàn)金流量表";
? ? ? String fileName = "預算現(xiàn)金流量表.xls";
? ? ? fileName = URLEncoder.encode(fileName, "UTF-8");
? ? ? ExcelUtil.exportExcel(response, excelData, sheetName, fileName, 15);
? }
//服務層
public class ExcelUtil {
? ? /**
? ? * Excel表格導出
? ? * @param response HttpServletResponse對象
? ? * @param excelData Excel表格的數據,封裝為List<List<String>>
? ? * @param sheetName sheet的名字
? ? * @param fileName 導出Excel的文件名
? ? * @param columnWidth Excel表格的寬度杨蛋,建議為15
? ? * @throws IOException 拋IO異常
? ? */
? ? public static void exportExcel(HttpServletResponse response,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? List<List<String>> excelData,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? String sheetName,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? String fileName,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? int columnWidth) throws IOException {
? ? ? ? //聲明一個工作簿
? ? ? ? HSSFWorkbook workbook = new HSSFWorkbook();
? ? ? ? //生成一個表格,設置表格名稱
? ? ? ? HSSFSheet sheet = workbook.createSheet(sheetName);
? ? ? ? //設置表格列寬度
? ? ? ? sheet.setDefaultColumnWidth(columnWidth);
? ? ? ? //寫入List<List<String>>中的數據
? ? ? ? int rowIndex = 0;
? ? ? ? for(List<String> data : excelData){
? ? ? ? ? ? //創(chuàng)建一個row行,然后自增1
? ? ? ? ? ? HSSFRow row = sheet.createRow(rowIndex++);
? ? ? ? ? ? //遍歷添加本行數據
? ? ? ? ? ? for (int i = 0; i < data.size(); i++) {
? ? ? ? ? ? ? ? //創(chuàng)建一個單元格
? ? ? ? ? ? ? ? HSSFCell cell = row.createCell(i);
? ? ? ? ? ? ? ? //創(chuàng)建一個內容對象
? ? ? ? ? ? ? ? HSSFRichTextString text = new HSSFRichTextString(data.get(i));
? ? ? ? ? ? ? ? //將內容對象的文字內容寫入到單元格中
? ? ? ? ? ? ? ? cell.setCellValue(text);
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? //準備將Excel的輸出流通過response輸出到頁面下載
? ? ? ? //八進制輸出流
? ? ? ? //response.setContentType("application/octet-stream");
? ? ? ? response.setContentType("application/ms-excel;charset=utf-8");
? ? ? ? //設置導出Excel的名稱
? ? ? ? response.setHeader("Content-disposition", "attachment;filename=" + fileName);
? ? ? ? //刷新緩沖
? ? ? ? response.flushBuffer();
? ? ? ? //workbook將Excel寫入到response的輸出流中饺鹃,供頁面下載該Excel文件
? ? ? ? workbook.write(response.getOutputStream());
? ? ? ? //關閉workbook
? ? ? ? workbook.close();
? ? }
}