zoukankan      html  css  js  c++  java
  • POI之Excel操作

    一、Workbook 相关操作

    1.1 创建 Workbook 对象

    //  操作 Excel2003之前(包括2003)的版本,扩展名是.xls,单个 Sheet 导出的行数最多为65535行
    Workbook workbook = new HSSFWorkbook();
    //  操作 Excel2007后(包括2007)的版本,扩展名是.xlsx;
    Workbook workbook = new XSSFWorkbook();
    

    二、Sheet 相关操作

    2.1 创建 Sheet 对象

    // 创建默认名称的 sheet
    Sheet sheet = workbook.createSheet();
    // 创建指定名称的 sheet
    Sheet sheet = workbook.createSheet("计划输出表");
    

    2.2 设置页边距

    // 页边距(上) = 0
    sheet.setMargin(Sheet.TopMargin, (double) (0));
    // 页边距(下) = 0
    sheet.setMargin(Sheet.BottomMargin, (double) (0));
    // 页边距(左) = 0
    sheet.setMargin(Sheet.LeftMargin, (double) (0));
    // 页边距(右) = 0
    sheet.setMargin(Sheet.RightMargin, (double) 0);
    // 页眉边距 = 0.3
    sheet.setMargin(Sheet.HeaderMargin, (double) (0.12));
    // 页脚边距 = 0.3
    sheet.setMargin(Sheet.FooterMargin, (double) (0.12));
    // 设置水平对齐方式
    sheet.setHorizontallyCenter(true);
    // 设置垂直对齐方式
    sheet.setVerticallyCenter(true); 
    

    三、打印相关操作

    3.1 创建 PrintSetup 对象

     PrintSetup printSetup =  sheet.getPrintSetup();
    

    3.2 打印相关设置

    // 设置纸张大小为A4
    printSetup.setPaperSize(HSSFPrintSetup.A4_PAPERSIZE);
    // 设置打印质量为300点
    printSetup.setVResolution((short) 300);
    // 设置缩放比例
    printSetup.setScale((short) 85);
    // 设置打印方向,true:横向,false:纵向
    printSetup.setLandscape(true);
    // 设置页宽
    printSetup.setFitWidth((short) 1);
    // 设置页高
    printSetup.setFitHeight((short) 0);
    // 设置打印起始页码
    printSetup.setPageStrart((short) 0);
    // 打印网格线
    printSetup.setPrintGridlines(false); 
    // 单色打印
    printSetup.setNoColor(false);
    // 按草稿方式打印
    printSetup.setDraft(false);
    // 打印顺序
    printSetup.setLeftToRight(false);
    

    3.3 页眉和页脚

    // 获取页眉对象
    Header header = sheet.getHeader();
    // 设置页眉显示位置
    header.setLeft("显示内容");
    header.setRight("显示内容");
    header.setCenter("显示内容");
    // 获取页脚对象
    Footer footer=sheet.getFooter();
    // 设置页脚显示位置
    footer.setLeft("显示内容");
    footer.setRight("显示内容");
    footer.setCenter("显示内容");
    

    3.4 打印区域

    workbook.setPrintArea((int) sheetIndex,  (int) startColumn,  (int) endColumn,  (int) startRow,  (int) endRow);
    

    参数说明:

    * sheetIndex–从0开始的sheet的索引编号  
    * startColumn-打印区域的开始列号  
    * endColumn- 打印区域的结束列号  
    * startRow-打印区域的开始行号  
    * endRow- 打印区域的结束行号
    

    3.5 打印标题

    HSSFWorkbook#setRepeatingRowsAndColumns((int) sheetIndex,  (int) startColumn,  (int) endColumn,  (int) startRow,  (int) endRow); 
    

    参数说明:

    * sheetIndex–从0开始的sheet的索引编号  
    * startColumn-打印区域的开始列号  
    * endColumn- 打印区域的结束列号  
    * startRow-打印区域的开始行号  
    * endRow- 打印区域的结束行号
    

    实例:

    //设置左端标题列
    workbook.setRepeatingRowsAndColumns(0,0,1,-1,-1); 
    //设置顶端标题行
    workbook.setRepeatingRowsAndColumns(0,-1,-1,0,4); 
    // 同时设置左端和顶端标题
    workbook.setRepeatingRowsAndColumns(0,-1,-1,-1,-1);
    

    四、Row和Cell相关操作

    4.1 Row 对象

    // 创建指定行的对象,从0开始
    Row row = sheet.createRow(int rownum);
    // 设置行高
    row.setHeight(short height);
    

    4.2 Cell 对象

    // 创建列对象,从0开始
    Cell cell = row.createCell(int column);
    // 移除列对象
    row.removeCell(Cell cell);
    // 设置列的内容
    cell.setCellValue("内容");
    // 设置列的样式
    cell.setCellStyle(CellStyle style);
    

    4.3 合并单元格

    // 创建合并单元格对象
    CellRangeAddress cellRangeAddress = new CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol);
    // 增加到 sheet 中
    sheet.addMergedRegion(cellRangeAddress);
    // 给合并单元格设置边框
    RegionUtil.setBorderTop(BorderStyle.THIN, orderingCompanyCellRangeAddress, sheet);
    RegionUtil.setBorderBottom(BorderStyle.THIN, orderingCompanyCellRangeAddress, sheet);
    RegionUtil.setBorderLeft(BorderStyle.THIN, orderingCompanyCellRangeAddress, sheet);
    RegionUtil.setBorderRight(BorderStyle.THIN, orderingCompanyCellRangeAddress, sheet);
    

    五、样式相关操作

    5.1 字体

    // 创建字体对象
    Font font = workbook.createFont();
    // 设置字体名称 
    font.setFontName("宋体");
    // 设置字体大小
    font.setFontHeightInPoints((short) fontSize);
    // 设置是否加粗
    font.setBold(true);
    // 设置字体高度
    font.setFontHeightInPoints(short height);
    

    5.2 单元格样式

    // 创建单元格样式对象
    CellStyle cellStyle = workbook.createCellStyle();
    // 设置样式字体
    cellStyle.setFont(font);
    // 设置内容水平对齐方式
    cellStyle.setAlignment(HorizontalAlignment.CENTER);
    // 设置内容垂直对齐方式
    cellStyle.setVerticalAlignment(HorizontalAlignment.CENTER);
    // 设置自动换行
    cellStyle.setWrapText(true);
    // 设置单元格内容垂直对其方式为居中
    cellStyle.setVerticalAlignment(VerticalAlignment.CENTER); 
    // 设置单元格顶部边框的边框类型
    cellStyle.setBorderTop(BorderStyle.THIN);
    // 设置单元格左边边框的边框类型
    cellStyle.setBorderLeft(BorderStyle.THIN);
    // 设置单元格右边边框的边框类型
    cellStyle.setBorderRight(BorderStyle.THIN);
    // 设置单元格底部边框的边框类型
    cellStyle.setBorderBottom(BorderStyle.THIN);
    

    5.3 富文本样式(一个单元格多个样式)

    // 创建富文本样式对象
    HSSFRichTextString hssfRichTextString = new HSSFRichTextString(wholeStr);
    // 设置指定长度字符串的字体
    hssfRichTextString.applyFont(int startIndex, int endIndex, Font font);
    // 赋值给单元格对象
    cell.setCellValue(hssfRichTextString);
    

    六、导出

    6.1 浏览器导出

    HttpServletResponse response = getHttpServletResponse();
    // 设置响应头相关属性
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Access-Control-Expose-Headers", "Content-disposition");
    // 导出文件格式为.xls
    response.setHeader("Content-disposition", "attachment; filename=" + new String(URLEncoder.encode(excelName, "UTF-8").getBytes("UTF-8"),"ISO8859-1") + ".xls");
    // 导出文件格式为.xlsx
    response.setHeader("Content-disposition", "attachment; filename=" + new String(URLEncoder.encode(excelName, "UTF-8").getBytes("UTF-8"),"ISO8859-1") + ".xlsx");
    // 获取输出流对象
    OutputStream outputStream = response.getOutputStream();
    // 开始输出
    workbook.write(outputStream);
    outputStream.flush();
    // 关闭流出流
    outputStream.close();
    
  • 相关阅读:
    算法训练 表达式计算
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    基础练习 十六进制转十进制
    New ways to verify that Multipath TCP works through your network
    TCP的拥塞控制 (Tahoe Reno NewReno SACK)
    Multipath TCP Port for Android 4.1.2
    How to enable ping response in windows 7?
    NS3
    Multipath TCP Port for Android
  • 原文地址:https://www.cnblogs.com/markLogZhu/p/12935111.html
Copyright © 2011-2022 走看看