java 创建excel并操作,下载

点击下载

//导出
        $("#export").click(function (){
            if (!$("#startDate").val()){
                layer.msg("请选择开始日期")
                return
            }
            if (!$("#endDate").val()){
                layer.msg("请选择结束日期")
                return;
            }
window.location.href = baseUrl + "/giftPurchase/enterAccountDetailsExport"
 })
//创建 wordBook
 Workbook workbook = ExcelExport.createWorkBook(maps,keys,(short)3);
//画表头
hartHead(workbook,workbook.getSheet("sheet1"),title);
        try {
        //执行下载
            ExcelExport.doloadExcel(workbook,response,"自采礼品入账明细");
        } catch (IOException e) {
            e.printStackTrace();
        }

画表头

private void hartHead(Workbook workbook, Sheet sheet1, String title) {
		//单元格位置设定
		//开始行,结束列,开始行,结束列
		//这里是第一行第一列 占6行
        CellRangeAddress cellAddresses = new CellRangeAddress(0, 0, 0, 6);
		//第二行,第一列
        CellRangeAddress cellAddresses1 = new CellRangeAddress(1, 2, 0, 0);
        //第二行,第二列
        CellRangeAddress cellAddresses2 = new CellRangeAddress(1, 2, 1, 1);
        //第二行,第三列
        CellRangeAddress cellAddresses3 = new CellRangeAddress(1, 2, 2, 2);
        
		//设置默认列宽
        sheet1.setDefaultColumnWidth(20);
        //添加单元格位置设定
        sheet1.addMergedRegion(cellAddresses);
        sheet1.addMergedRegion(cellAddresses1);
        sheet1.addMergedRegion(cellAddresses2);
        sheet1.addMergedRegion(cellAddresses3);

		//设置字体样式
        Font fontHead = workbook.createFont();
        fontHead.setBold(true);
        fontHead.setFontHeight((short) 360);
        //创建一个样式
        CellStyle cellStyle = workbook.createCellStyle();
        //添加字体样式
        cellStyle.setFont(fontHead);
        //对齐方式
        cellStyle.setAlignment(HorizontalAlignment.CENTER);
        //垂直对齐
        cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
        //开启换行
        cellStyle.setWrapText(true);

		//创建字体
        Font otherHeadFont = workbook.createFont();
        //字体样式
        otherHeadFont.setFontHeight((short)230);
        otherHeadFont.setBold(true);
        //创建样式
        CellStyle otherHeadcs = workbook.createCellStyle();
        //添加字体样式
        otherHeadcs.setFont(otherHeadFont);
        //对齐方式
        otherHeadcs.setAlignment(HorizontalAlignment.CENTER);
        //垂直对齐方式
        otherHeadcs.setVerticalAlignment(VerticalAlignment.CENTER);
        //开启换行
        otherHeadcs.setWrapText(true);
		
		//创建行
        Row row = sheet1.createRow(0);
        //高度
        row.setHeight((short)600);
        //创建列  已继承上面设定的单元格 cellAddresses 
        Cell cell = row.createCell(0);
        //内容
        cell.setCellValue(title);
        //样式
        cell.setCellStyle(cellStyle);
		
		//创建行
        Row row1 = sheet1.createRow(1);
        //行高
        row1.setHeight((short)450);
		
		//创建列 列位置已在上面设定cellAddresses1
        Cell cell0 = row1.createCell(0);
        cell0.setCellValue("礼品名称");
        cell0.setCellStyle(otherHeadcs);
		//创建列 列位置已在上面设定 cellAddresses2
        Cell cell1 = row1.createCell(1);
        cell1.setCellValue("入账数量");
        cell1.setCellStyle(otherHeadcs);
		//创建列 列位置已在上面设定 cellAddresses3
        Cell cell2 = row1.createCell(2);
        cell2.setCellValue("采购日期");
        cell2.setCellStyle(otherHeadcs);


    }

创建 Workbook

  /**
     * 
     * @param list  要操作的数据数据
     * @param keys  列的key
     * @param startRow  开始行
     * @return
     */
  public static Workbook createWorkBook(List<Map> list, String[] keys, short startRow) {
        //创建excel工作牌
        XSSFWorkbook workbook = new XSSFWorkbook();
        //创建一个sheet(页),并命名
        XSSFSheet sheet = workbook.createSheet("sheet1");
        sheet.setDefaultColumnWidth(10);
        sheet.setDefaultRowHeight((short) 500);
        if (list.isEmpty()||keys==null){
            return workbook;
        }
        //设置每列的值
        //设置每行的值
        for (int i = startRow,a=0; a < list.size(); i++,a++) {
            //Row行,Cell方格,Row和Cell都是从0开始计数的
            //创建一行,在页sheet上
            XSSFRow row1 = sheet.createRow(i);
            row1.setHeight((short) 600);

            //在row1上上创建一个方格
            for (int j = 0; j < keys.length; j++) {
                XSSFCell cell = row1.createCell(j);
                XSSFCellStyle c = workbook.createCellStyle();
                c.setVerticalAlignment(VerticalAlignment.CENTER);
                c.setAlignment(HorizontalAlignment.CENTER);
                cell.setCellValue(list.get(a).get(keys[j]) == null ? " " : list.get(a).get(keys[j]).toString());
                cell.setCellStyle(c);
            }

        }
        return workbook;
    }
//下载 Workbook 文件
public static void doloadExcel(Workbook wb,HttpServletResponse response, String fileName) throws IOException {

        ByteArrayOutputStream os = new ByteArrayOutputStream();
        try {
            //将转换成的Workbook对象通过流形式下载
            wb.write(os);
        } catch (IOException e) {
            e.printStackTrace();
        }
        byte[] content = os.toByteArray();
        InputStream is = new ByteArrayInputStream(content);
        // 设置response参数,可以打开下载页面
        response.reset();
        response.setContentType("application/vnd.ms-excel;charset=utf-8");
        response.setHeader("Content-Disposition", "attachment;filename="+ new String((fileName + ".xlsx").getBytes(), "iso-8859-1"));
        ServletOutputStream out = response.getOutputStream();
        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            bis = new BufferedInputStream(is);
            bos = new BufferedOutputStream(out);
            byte[] buff = new byte[2048];
            int bytesRead;
            while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                bos.write(buff, 0, bytesRead);
            }
        } catch (final IOException e) {
            throw e;
        } finally {
            if (bis != null) {
                bis.close();
            }
            if (bos != null) {
                bos.close();
            }
        }
    }
上一篇:Excel文档操作


下一篇:js 导出多sheet表格