使用POI实现Java读写Excel文件

        Apache POI提供了强大的操作Microsoft Office文档的功能。在实际工作中,常常使用Excel文件来存储数据。利用POI,可以方便地对Excel文档进行读写,进而实现对数据的处理与存储。本文将介绍使用POI实现对Excel文件的基本读写功能。POI对Excel的工具包可以在http://poi.apache.org/download.html下载。POI对Excel的处理分为两类:HSSF和XSSF,前者用于处理97-03版的Excel文件(.xls),XSSF用于处理07版的Excel文件。

        首先是写入功能,生成的目标文件如下:

      

      文本的内容很简单,创建一个“数学成绩”表,然后录入两位同学的成绩。实现方法如下:

    public void write() throws IOException {
    	Workbook wb = new HSSFWorkbook();       //创建工作簿
    	Sheet sheet = wb.createSheet("数学成绩");   //创建sheet
    	Row row = sheet.createRow(0);   //创建第一行
    	Cell cell11 = row.createCell(0);  //第一行第一列
        cell11.setCellValue("小明");       //写入值:小明
        
    	Cell cell12 = row.createCell(1);  //第一行第二列
        cell12.setCellValue(90);       //写入值:90
    	
    	Row row2 = sheet.createRow(1);   //创建第二行
    	Cell cell21 = row2.createCell(0);  //第二行第一列
        cell21.setCellValue("小华");       //写入值:小华
        
    	Cell cell22 = row2.createCell(1);  //第二行第二列
        cell22.setCellValue(80);       //写入值:80

        FileOutputStream fileOut = new FileOutputStream("d:/test.xls");
        wb.write(fileOut);
        fileOut.close();
    }


       这样就实现了写入功能。这里的数据非常简单,如果是大量录入,可以通过循环等方式减少代码的重复量。如果还需要录入"英语成绩",只需要创建对应的表wb.createSheet("英语成绩")并写入数据即可。

       Excel文件内容的读取同样简单,找到对应的sheet,然后定位到目标cell即可。需要注意的是,读取Cell内容前需要对Cell中的内容的类型进行判断,也就是说,需要提前检查该数据是字符串、数字、日期等,如果不做检查,则可能在读取的过程中发生错误。下面的代码实现了对上面创建的文件内容的读取。

       

	public void read() throws IOException {
		InputStream inp = new FileInputStream("d:/test.xls");
		HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp));
		Sheet sheet = wb.getSheet("数学成绩");
		for (Row row : sheet) {
			for (Cell cell : row) {
				CellReference cellRef = new CellReference(row.getRowNum(),cell.getColumnIndex());
				System.out.print(cellRef.formatAsString());
				System.out.print(" - ");

				switch (cell.getCellType()) {
				case Cell.CELL_TYPE_STRING:
					System.out.println(cell.getRichStringCellValue().getString());
					break;
				case Cell.CELL_TYPE_NUMERIC:
					if (DateUtil.isCellDateFormatted(cell)) {
						System.out.println(cell.getDateCellValue());
					} else {
						System.out.println(cell.getNumericCellValue());
					}
					break;
				case Cell.CELL_TYPE_BOOLEAN:
					System.out.println(cell.getBooleanCellValue());
					break;
				case Cell.CELL_TYPE_FORMULA:
					System.out.println(cell.getCellFormula());
					break;
				default:
					System.out.println();
				}
			}
		}
	}

       除了基本的读写功能,POI还提供了一系列操作Excel文件的功能,例如字体、背景、表格大小的控制和自适应等等,后面再做进一步的介绍。

    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值