1. 程式人生 > >利用POI匯出Excel表

利用POI匯出Excel表

<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.16</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.16</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml-schemas -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.16</version>
    </dependency>

/** * 訂單列表匯出 */ @RequestMapping(value = “orderDownload”) public void orderDownloads(HttpServletResponse response, OrderListQuery vo) throws Exception, ParseException { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(“訂單列表”); //資料列表 vo.setTransstatus(-1); List transPage = salesTransService.findTransPage(vo); //設定要匯出的檔案的名字 String fileName = “訂單列表” + “.xls”; // 如果檔名有中文,必須URL編碼 fileName = URLEncoder.encode(fileName, “UTF-8”); //新增資料行,並且設定單元格資料 int rowNum = 1; String[] headers = {“外部訂單號”, “商戶訂單號”, “票號”, “城市”, “景區”, “門票名稱”, “訂單狀態”, “退單狀態”, “人數”, “已檢票”, “刷臉/二維碼”, “應付金額”, “實付金額”, “結算金額”, “退款金額”, “下單時間”, “遊玩日期”, “取票人”, “聯絡電話”}; //headers表示excel表中第一行的表頭 HSSFRow row = sheet.createRow(0); //在excel表中新增表頭 for (int i = 0; i < headers.length; i++) { HSSFCell cell = row.createCell(i); HSSFRichTextString text = new HSSFRichTextString(headers[i]); cell.setCellValue(text); } //日期格式 SimpleDateFormat sdf1 = new SimpleDateFormat(“EEE MMM dd HH:mm:ss z yyyy”, Locale.ENGLISH); SimpleDateFormat sdf2 = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); HSSFCellStyle dateCellStyle = workbook.createCellStyle(); short df = workbook.createDataFormat().getFormat(“yyyy-MM-dd HH:mm:ss”); dateCellStyle.setDataFormat(df); //在表中存放查詢到的資料放入對應的列 for (OrderList order : transPage) { HSSFRow row1 = sheet.createRow(rowNum); row1.createCell(0).setCellValue(order.getOrdersheetid()); row1.createCell(1).setCellValue(order.getPaychannelorderid()); row1.createCell(2).setCellValue(order.getTicketno()); row1.createCell(3).setCellValue(order.getCityname()); row1.createCell(4).setCellValue(order.getScenicname()); row1.createCell(5).setCellValue(order.getTicketname()); row1.createCell(6).setCellValue(order.getTransStatusStr()); row1.createCell(7).setCellValue(order.getReturnStatusStr()); row1.createCell(8).setCellValue(order.getTickepersonnum()); row1.createCell(9).setCellValue(order.getCheckpersonnum()); row1.createCell(10).setCellValue(order.getPaytypeStr()); row1.createCell(11).setCellValue(String.valueOf(order.getOutmoney())); row1.createCell(12).setCellValue(String.valueOf(order.getPaymoney())); row1.createCell(13).setCellValue(String.valueOf(order.getSummoney())); row1.createCell(14).setCellValue(String.valueOf(order.getRtOutmoney())); row1.createCell(15).setCellValue(sdf2.format(sdf1.parse(order.getSaletime().toString()))); row1.createCell(16).setCellValue(sdf2.format(sdf1.parse(order.getTourday().toString()))); row1.createCell(17).setCellValue(order.getCustomname()); row1.createCell(18).setCellValue(order.getLinkphone()); rowNum++; } //設定頭資訊 // ContentType 可以不設定 response.setHeader(“Content-disposition”, “attachment;filename=” + fileName); response.setContentType(“application/vnd.ms-excel;charset=UTF-8”); workbook.write(response.getOutputStream()); response.getOutputStream().flush(); response.getOutputStream().close();

}