Java表格生成和下载

pom

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>3.17</version>
        </dependency>
    @RequestMapping("/download")
    public String downloadOrderFile(HttpServletResponse response) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String excelName = "备货导出" + sdf.format(new Date()) + ".xlsx";
        String[] header = {"备货单号", "品牌", "型号", "尺寸", "内部型号", "总数", "到库", "在途",
                "直发", "更新时间", "创建时间"};
        try {
            // 创建新的Excel 工作簿
            XSSFWorkbook workbook = new XSSFWorkbook();
            // 在Excel工作簿中建一工作表,其名为缺省值
            XSSFSheet sheet = workbook.createSheet();

            XSSFRow r = sheet.createRow(0);
            for (int i = 0; i < header.length; i++) {
                r.createCell(i).setCellValue(header[i]);
            }

            ArrayList<Stock> stocks = (ArrayList<Stock>) stockService.listStocks(null, 1, 10000).getList();
            for (int i = 0; i < stocks.size(); i++) {
                Stock stock = stocks.get(i);
                XSSFRow row = sheet.createRow(i + 1);
                row.createCell(0).setCellValue(stock.getStockNo());
                Goods goods = stock.getGoods();
                row.createCell(1).setCellValue(goods.getBrand());
                row.createCell(2).setCellValue(goods.getModel());
                row.createCell(3).setCellValue(goods.getSize());
                row.createCell(4).setCellValue(goods.getInternalModel());
                row.createCell(5).setCellValue(stock.getTotal());
                row.createCell(6).setCellValue(stock.getWarehouseNum());
                row.createCell(7).setCellValue(stock.getWayNum());
                row.createCell(8).setCellValue(stock.getDirectNum());
                row.createCell(9).setCellValue(sdf.format(stock.getUpdateTime()));
                row.createCell(10).setCellValue(sdf.format(stock.getCreateTime()));
            }

            // 清空response
            response.reset();
            response.setContentType("application/octet-stream");
            response.setHeader("Content-Disposition", "attachment;filename=" + new String(excelName.getBytes(StandardCharsets.UTF_8), StandardCharsets.ISO_8859_1));
            response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");
            OutputStream os = new BufferedOutputStream(response.getOutputStream());
            workbook.write(os);
            os.flush();
            os.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容