因为舍友项目的某种需求,需要将数据存储在excel表格中,我就下载并尝试使用了 poi-3.15 ,下面是我自己在学习中的一点所得
poi-3.15 下载地址:https://mvnrepository.com/artifact/org.apache.poi/poi/3.15
这是一个简单的excel表格,第一行给出了 表头
实际上poi包的基本操作也是对 行 列 和 cell 的操作
目录
建立
来看一个建立表的例子
//创建一个hssfWorkbook与一个excel对应
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
// 创建对应的sheet
HSSFSheet hssfSheet = hssfWorkbook.createSheet("message");
// 添加表格第0行
HSSFRow row = hssfSheet.createRow(0);
// 设置单元格,设置表头
HSSFCell cell = row.createCell(0);
cell.setCellValue("id");
cell = row.createCell(1);
cell.setCellValue("password");
这样就建立好一个表了,hssfSheet就是这个excel表格的一个“面”,叫“message”
通过这个面hssfSheet可以新建一个给定行号的行row
通过行可以构建一个给定列号的单元格cell
即,cell是某面某行某列的单元格
所有的操作都是基于单元格来说的
切记!保存操作:
FileOutputStream fos;
try {
// 输出流,新建excel表(路径文件名)
fos = new FileOutputStream("message.xls");
// 将hssfWorkbook对应的excel表格写入
hssfWorkbook.write(fos);
// 关闭输出流
fos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
结果:
写入
// 写 的前提是有这个excel表,因此要【取】也要【存】
// 故文件输入流和输出流都必须有
FileInputStream fis = null;
FileOutputStream fos = null;
try {
// 找到文件
fis = new FileInputStream("message.xls");
HSSFWorkbook hssfWorkbook = new HSSFWorkbook(fis);
HSSFSheet hssfSheet = hssfWorkbook.getSheet("message");
if (hssfSheet == null) {
// 未找到的操作
}
// 定位最后一行位置并新建行
int saveIndex = hssfSheet.getLastRowNum() + 1;
HSSFRow row = hssfSheet.createRow(saveIndex);
// 创建cell并填入
row.createCell(0).setCellValue("003");
row.createCell(1).setCellValue("003300");
// 写入文件
fos = new FileOutputStream("message.xls");
hssfWorkbook.write(fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} finally {
fis.close();
fos.close();
}
结果:
读
FileInputStream fis = null;
try {
fis = new FileInputStream(