您的位置:首页 > 编程语言 > Java开发

使用POI实现Java读写Excel文件

2015-01-16 17:35 309 查看
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文件的功能,例如字体、背景、表格大小的控制和自适应等等,后面再做进一步的介绍。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: