zoukankan      html  css  js  c++  java
  • poi api工具

    ------------官网api地址

    http://poi.apache.org/apidocs/index.html

    ------------官方下载地址

    http://poi.apache.org/download.html

    ------------一些说明

    HSSF(用于操作Excel的组件)提供给用户使用的对象在org.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象: 

    常用组件:

    HSSFWorkbook                      excel的文档对象

    HSSFSheet                         excel的表单

    HSSFRow                           excel的行

    HSSFCell                          excel的格子单元

    HSSFFont                          excel字体

    HSSFDataFormat                    日期格式

    HSSFHeader                        sheet头

    HSSFFooter                        sheet尾(只有打印的时候才能看到效果)

    样式:

    HSSFCellStyle                       cell样式

    辅助操作包括:

    HSSFDateUtil                        日期

    HSSFPrintSetup                      打印

    HSSFErrorConstants                  错误信息表

    ------------基本操作步骤理解

      一个Excel文件对应于一个workbook(HSSFWorkbook),

           一个workbook可以有多个sheet(HSSFSheet)组成,

           一个sheet是由多个row(HSSFRow)组成,

           一个row是由多个cell(HSSFCell)组成。

    1、用HSSFWorkbook打开或者创建“Excel文件对象”
    2、用HSSFWorkbook对象返回或者创建Sheet对象
    3、用Sheet对象返回行对象,用行对象得到Cell对象
    4、对Cell对象读写。


    ------------简单例子:

    //创建HSSFWorkbook对象  
    HSSFWorkbook wb = new HSSFWorkbook();  
    //创建HSSFSheet对象  
    HSSFSheet sheet = wb.createSheet("sheet0");  
    //创建HSSFRow对象  
    HSSFRow row = sheet.createRow(0);  
    //创建HSSFCell对象  
    HSSFCell cell=row.createCell(0);  
    //设置单元格的值  
    cell.setCellValue("单元格中的中文");  

    ------------合并 单元格

    方法 :public int addMergedRegion(CellRangeAddress region) 

    //参数说明:1:开始行 2:结束行 3:开始列 4:结束列
    //比如我要合并 第二行到第四行的 第六列到第八列 
    sheet.addMergedRegion(new CellRangeAddress(1,3,5,7));

    ------------设置单元格的行高、列宽

    //设置缺省列高

    sheet.setDefaultRowHeightInPoints(10);

    //设置缺省列宽

    sheet.setDefaultColumnWidth(20);

    //设置指定列的列宽,256 * 50这种写法是因为width参数单位是单个字符的256分之一  
      
    sheet.setColumnWidth(cell.getColumnIndex(), 256 * 50);  

    ------------设置样式

    // 单元格的横向和纵向对齐方式  
     cellStyle.setAlignment(HSSFCellStyle.ALIGN_JUSTIFY);  
     cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);  
      
     /* 设置单元格的填充方式,以及前景颜色和背景颜色 
      三点注意: 
      1.如果需要前景颜色或背景颜色,一定要指定填充方式,两者顺序无所谓; 
      2.如果同时存在前景颜色和背景颜色,前景颜色的设置要写在前面; 
      3.前景颜色不是字体颜色。 
     */  
      
     //设置填充方式(填充图案)  
     cellStyle.setFillPattern(HSSFCellStyle.DIAMONDS);   
     //设置前景色  
     cellStyle.setFillForegroundColor(HSSFColor.RED.index);  
     //设置背景颜色  
     cellStyle.setFillBackgroundColor(HSSFColor.LIGHT_YELLOW.index);  
     // 设置单元格底部的边框及其样式和颜色  
     // 这里仅设置了底边边框,左边框、右边框和顶边框同理可设   
     cellStyle.setBorderBottom(HSSFCellStyle.BORDER_SLANTED_DASH_DOT);  
     cellStyle.setBottomBorderColor(HSSFColor.DARK_RED.index);   
     //设置日期型数据的显示样式  
     cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));   
    将样式应用于单元格
    cell.setCellStyle(cellStyle);  
    //将样式应用到行,但有些样式只对单元格起作用  
    row.setRowStyle(cellStyle);  

    ------------设置字体样式
    1、创建HSSFFont对象(调用HSSFWorkbook 的createFont方法)

    HSSFWorkbook wb=new HSSFWorkbook();  
      
    HSSFFont  fontStyle=wb.createFont();  
    2、设置字体各种样式
      //设置字体样式  
      fontStyle.setFontName("宋体");    
      //设置字体高度  
      fontStyle.setFontHeightInPoints((short)20);    
      //设置字体颜色  
      font.setColor(HSSFColor.BLUE.index);  
      //设置粗体  
      fontStyle.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);  
      //设置斜体  
    font.setItalic(true);  
    //设置下划线  
    font.setUnderline(HSSFFont.U_SINGLE);  
    3、将字体设置到单元格样式
    //字体也是单元格格式的一部分,所以从属于HSSFCellStyle  
    // 将字体对象赋值给单元格样式对象  
    cellStyle.setFont(font);  
    // 将单元格样式应用于单元格  
    cell.setCellStyle(cellStyle);  

     ---------------获取指定行,列 以及行列总数

    /获取指定行
    hssfRow=hssfSheet.getRow(1);
    //获取指定列
    hssfCell=hssfRow.getCell((short)1);
    //获取总行数
    int rowNum=hssfSheet.getLastRowNum();
    //获取一个excel表格中的总记录数
    int rowNum=storagesList.size();
    //获取总列数
    int columnNum=hssfRow.getPhysicalNumberOfCells();

     ---------------设置整个sheet每个单元格宽度自适应

    public void setAutoWith(HSSFSheet sheet) throws Exception {
    int maxColumn = sheet.getPhysicalNumberOfRows();
    // 列宽自适应,只对英文和数字有效
    for (int i = 0; i <= maxColumn; i++) {
    sheet.autoSizeColumn(i);
    }
    // 获取当前列的宽度,然后对比本列的长度,取最大值
    for (int columnNum = 0; columnNum <= maxColumn; columnNum++) {
    int columnWidth = sheet.getColumnWidth(columnNum) / 256;
    for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {
    Row currentRow;
    // 当前行未被使用过
    if (sheet.getRow(rowNum) == null) {
    currentRow = sheet.createRow(rowNum);
    } else {
    currentRow = sheet.getRow(rowNum);
    }

    if (currentRow.getCell(columnNum) != null) {
    Cell currentCell = currentRow.getCell(columnNum);
    int length = currentCell.toString().getBytes("GBK").length;
    if (columnWidth < length + 1) {
    columnWidth = length + 1;
    }
    }
    }
    sheet.setColumnWidth(columnNum, columnWidth * 256);
    }

    }

     ---------------不管格子的数据是何类型,自动返回相应的值

    /**
    * 获取单元格的值
    * @param cell
    * @return
    */
    public String getCellValue(Cell cell){
    if(cell == null) return "";
    if(cell.getCellType() == Cell.CELL_TYPE_STRING){
    return cell.getStringCellValue();
    }else if(cell.getCellType() == Cell.CELL_TYPE_BOOLEAN){
    return String.valueOf(cell.getBooleanCellValue());
    }else if(cell.getCellType() == Cell.CELL_TYPE_FORMULA){
    return cell.getCellFormula() ;
    }else if(cell.getCellType() == Cell.CELL_TYPE_NUMERIC){
    return String.valueOf(cell.getNumericCellValue());
    }
    return "";
    }

     ---------------颜色索引对照表

    设置字体时,后面要加上.index 比如HSSFColor.GREY_80_PERCENT.index取得short

    .            

    HSSFColor.GREY_80_PERCENT

    .

    HSSFColor.INDIGO

    .

    HSSFColor.PLUM

     

    HSSFColor.BROWN

    .

    HSSFColor.OLIVE_GREEN

    .

    HSSFColor.DARK_GREEN

    .

    HSSFColor.SEA_GREEN

    .

    HSSFColor.DARK_TEAL

    .

    HSSFColor.GREY_40_PERCENT

    .

    HSSFColor.BLUE_GREY

    .

    HSSFColor.ORANGE

    .

    HSSFColor.LIGHT_ORANGE

    .

    HSSFColor.GOLD

    .

    HSSFColor.LIME

    .

    HSSFColor.AQUA

    .

    HSSFColor.LIGHT_BLUE

     

  • 相关阅读:
    sys.exc_info()方法:获取异常信息
    tempfile模块:生成临时文件和临时目录
    fnmatch模块:用于文件名的匹配
    pathlib模块用法详解
    linecache模块 随机读取文件指定行
    fileinput模块:逐行读取多个文件
    asyncio异步IO--协程(Coroutine)与任务(Task)详解
    Python中协程异步IO(asyncio)详解
    删除某个时间段之前的文件
    Mac入门--如何使用brew安装多个PHP版本
  • 原文地址:https://www.cnblogs.com/rdchen/p/9723529.html
Copyright © 2011-2022 走看看