POI实现对Excel表格的操作一之导包与例子

一、介绍


1.POI
  • Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件的开源库。它包含类和方法对用户输入数据或文件到MS Office文档进行解码。

  • POI可以通过操作SS,SL,WP操作Excel,PowerPoint,Word

  • 它的官网http://poi.apache.org/

  • 注:Excel (SS=HSSF+XSSF+SXSSF),PowerPoint (SL=HSLF+XSLF),Word (WP=HWPF+XWPF)SS官网介绍

2.HSSF
  • 全称为Horrible SpreadSheet Format 中文翻译为讨厌的电子表格格式
  • HSSF是POI项目的纯java实现,可以操作Excel文件(97-2007)格式(.xls)
3.XSSF
  • XSSF是POI项目的纯java实现,可以操作Excel文件(2007)格式(.xslx)
4.SXSSF
  • 自POI版本3.8-beta3 以来, 提供了新的API-------一个在 XSSF 之上构建的低内存占用空间的SXSSF
  • SXSSF是 XSSF 的 API 兼容流扩展, 在必须生成非常大的电子表格时使用,而且在堆空间使用方面是有限的。
  • SXSSF通过限制访问,是一个滑动窗口内的行实现低内存占用,而XSSF可以访问文档中的所有行。不在窗口中的旧行变得无法访问,因为它们已经被写入磁盘。
  • 就我认为,SXSSF专门用来处理大量数据的。
二、下载jar包

  1. 官网下载jar包

    poi

    可以下载jar包,和它的源代码

    jar包和源代码

  2. 下载下来解压,得到一个文件夹,里面包含很多jar包和html文档,jar包具体作用,百度得到一个答案仅供参考

  3. 官网例子测试,暂时所以先用最核心的poi.jar

    1. 前几个创建HSSFWorkbook时,操作xls文件没有问题,等到使用WorkbookFactory时,会报异常,把poi-ooxml.jar导进去,正常。
    2. 新版本的常量没有放在接口里,都放在了枚举里,所以官网里有些例子,使用这个版本的jar包,会报错,例子是旧版的,需要把接口里的静态变量修改到枚举里。这时关联源码,可以找到方法定义,找到参数,找到枚举,找到枚举实例,使用名字差不多的,可能会有差别,不过都差不多。
    3. 接下来创建XSSFWorkbook对象时会报错,又是没有找到类的异常,根据类的名字依次导入jar包
      • poi-ooxml-schemas.jar
      • commons-collections.jar
      • xmlbeans.jar
    public static void main(String[] args) throws IOException {
    		 Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();不可以,会无法打开
    
    	        Sheet sheet = wb.createSheet();
    	        Row row = sheet.createRow((short) 2);
    	        row.setHeightInPoints(30);
    	        
    	        createCell(wb, row, (short) 0, HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
    	        createCell(wb, row, (short) 1, HorizontalAlignment.CENTER_SELECTION, VerticalAlignment.BOTTOM);
    	        createCell(wb, row, (short) 2, HorizontalAlignment.DISTRIBUTED, VerticalAlignment.CENTER);
    	        createCell(wb, row, (short) 3, HorizontalAlignment.GENERAL, VerticalAlignment.CENTER);
    	        createCell(wb, row, (short) 4, HorizontalAlignment.JUSTIFY, VerticalAlignment.JUSTIFY);
    	        createCell(wb, row, (short) 5, HorizontalAlignment.LEFT, VerticalAlignment.TOP);
    	        createCell(wb, row, (short) 6, HorizontalAlignment.RIGHT, VerticalAlignment.TOP);
    	        FileOutputStream fileOut = new FileOutputStream("xssf-align.xlsx");
    	        wb.write(fileOut);
    	        fileOut.close();
    	}
    	private static void createCell(Workbook wb, Row row, short column, HorizontalAlignment halign, VerticalAlignment valign) {
            Cell cell = row.createCell(column);
            cell.setCellValue("Align It");
            CellStyle cellStyle = wb.createCellStyle();
            cellStyle.setAlignment(halign);
            cellStyle.setVerticalAlignment(valign);
            cell.setCellStyle(cellStyle);
        }
    

以下是官方原版的,使用这个版本3.17会出错。

public static void main(String[] args)  throws Exception {
	        Workbook wb = new XSSFWorkbook(); //or new HSSFWorkbook();
	
	        Sheet sheet = wb.createSheet();
	        Row row = sheet.createRow((short) 2);
	        row.setHeightInPoints(30);
	
	        createCell(wb, row, (short) 0, CellStyle.ALIGN_CENTER, CellStyle.VERTICAL_BOTTOM);
	        createCell(wb, row, (short) 1, CellStyle.ALIGN_CENTER_SELECTION, CellStyle.VERTICAL_BOTTOM);
	        createCell(wb, row, (short) 2, CellStyle.ALIGN_FILL, CellStyle.VERTICAL_CENTER);
	        createCell(wb, row, (short) 3, CellStyle.ALIGN_GENERAL, CellStyle.VERTICAL_CENTER);
	        createCell(wb, row, (short) 4, CellStyle.ALIGN_JUSTIFY, CellStyle.VERTICAL_JUSTIFY);
	        createCell(wb, row, (short) 5, CellStyle.ALIGN_LEFT, CellStyle.VERTICAL_TOP);
	        createCell(wb, row, (short) 6, CellStyle.ALIGN_RIGHT, CellStyle.VERTICAL_TOP);
	
	        // Write the output to a file
	        FileOutputStream fileOut = new FileOutputStream("xssf-align.xlsx");
	        wb.write(fileOut);
	        fileOut.close();
	
	    }
	
	    /**
	     * Creates a cell and aligns it a certain way.
	     *
	     * @param wb     the workbook
	     * @param row    the row to create the cell in
	     * @param column the column number to create the cell in
	     * @param halign the horizontal alignment for the cell.
	     */
	    private static void createCell(Workbook wb, Row row, short column, short halign, short valign) {
	        Cell cell = row.createCell(column);
	        cell.setCellValue("Align It");
	        CellStyle cellStyle = wb.createCellStyle();
	        cellStyle.setAlignment(halign);
	        cellStyle.setVerticalAlignment(valign);
	        cell.setCellStyle(cellStyle);
	    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aabond

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值