JAVA实现Excel的读写--poi

时间:2022-10-09 20:25:08

  上一篇为大家介绍了通过xls.jar的方式生成Excel的方法,本篇就为大家再介绍一下通过poi方式实现Excel文件的读写操作,内容很简单,代码注释很清晰。

  1、生成Excel文件:

import java.io.File;
import java.io.FileOutputStream;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class poi_write {

public static void main(String[] args) {
final String [] str = {"id", "name", "sex"};
//创建Excel工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
//创建Excel工作表
HSSFSheet sheet = workbook.createSheet();
//创建第一行
HSSFRow row = sheet.createRow(0);
HSSFCell cell
= null;

//添加表头
for (int i = 0; i < str.length; i++) {
cell
= row.createCell(i);
cell.setCellValue(str[i]);
}

//追加数据
for (int i = 1; i <= 10; i++) {
HSSFRow rows
= sheet.createRow(i);
HSSFCell cell_id
= rows.createCell(0);
cell_id.setCellValue(i
+"");
HSSFCell cell_name
= rows.createCell(1);
cell_name.setCellValue(
"name:"+i);
HSSFCell cell_sex
= rows.createCell(2);
cell_sex.setCellValue(
"男");
}

//文件保存路径
File file = new File("E:/cnblogs/poi_text.xls");
try{
if(!file.exists()){
file.createNewFile();
}
FileOutputStream fileOut
= new FileOutputStream(file);//创建一个文件输出流对象
workbook.write(fileOut);
fileOut.close();
//关闭输出流对象
}catch (Exception e) {
e.printStackTrace();
}
System.out.println(
"Excel文件已生成");
}

}

  2、读取Excel文件:

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class poi_reading {

public static void main(String[] args) {
final File file = new File("E:/cnblogs/poi_text.xls");
if(file.exists()){
try {
HSSFWorkbook workbook
= new HSSFWorkbook(FileUtils.openInputStream(file));
//workbook.getSheet("Sheet0");获得指定的工作表
//HSSFSheet sheet = workbook.getSheet("Sheet0");
//workbook.getSheetAt(0);默认获得第一个工作表
HSSFSheet sheet = workbook.getSheetAt(0);

int firstRowNum = 0;
//获得当前sheet最后一行行号
int lastRowNum = sheet.getLastRowNum();
for (int i = firstRowNum; i <= lastRowNum; i++) {
HSSFRow row
= sheet.getRow(i);
//获得当前行最后单元格列号
int lastCellNum = row.getLastCellNum();
for (int j = 0; j < lastCellNum; j++) {
HSSFCell cell
= row.getCell(j);
String value
= cell.getStringCellValue();
System.out.print(value
+" ");
}
System.out.println(
"");
}
}
catch (IOException e) {
e.printStackTrace();
}
}
else{
System.out.println(
"读取文件不存在");
}
}

}

  好了,基本的方法已经为大家介绍完毕,更好的效果展示就靠大家自己摸索了。

  不知道大家发现一个问题没?我们生成的Excl文件都是.xls结尾,.xls是office97-2003的版本,而对于2007以后的版本则是以.xlsx结尾。那如何生成高版本的Excel呢?我们不能仅仅是修改一下File文件的后缀名,我们这里需要使用XSSFWorkbook进行创建workbook,然后把剩余的HSSF开头去掉就可以了。不过在这里需要说明的就是,我们不知道用户使用的是低版本还是高版本,所以我们建议大家都使用HSSFWorkbook来进行创建以.xls结尾的Excel文件。

  如有错误,还望指正。谢谢