读取excel
@Test
public void test1() throws Exception {
//拿到工作薄
XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("D:\\course\\传智健康2.0\\day05\\资源\\test.xlsx")));
//获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
XSSFSheet sheet = excel.getSheetAt(0);
//遍历每一行
for (Row row : sheet) {
//每一个cell
for (Cell cell : row) {
System.out.println(cell.getRichStringCellValue()); //若有数字存在,会有格式异常
}
System.out.println("========================");
}
// 关闭
excel.close();
}
从最后一行最后一格子获取:
@Test
public void test2() throws Exception {
//拿到工作薄
XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("D:\\course\\传智健康2.0\\day05\\资源\\test.xlsx")));
//获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
XSSFSheet sheet = excel.getSheetAt(0);
//获取当前工作表最后一行的行号,行号从0开始
int lastRowNum = sheet.getLastRowNum();
System.out.println("lastRowNum:"+lastRowNum);
for(int i=0;i<=lastRowNum;i++){
//根据行号获取行对象
XSSFRow row = sheet.getRow(i);
short lastCellNum = row.getLastCellNum();
System.out.println("lastCellNum:"+lastCellNum);
for(short j=0;j<lastCellNum;j++){
String value = row.getCell(j).getStringCellValue();
System.out.println(value);
}
System.out.println("===============");
}
// 关闭
excel.close();
}
在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将内存中的Excel文件下载到磁盘:
@Test
public void test3() throws Exception {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("传智播客");
XSSFRow row = sheet.createRow(0);
row.createCell(0).setCellValue("编号");
row.createCell(1).setCellValue("名称");
row.createCell(2).setCellValue("年龄");
XSSFRow row1 = sheet.createRow(1);
row1.createCell(0).setCellValue("1");
row1.createCell(1).setCellValue("小明");
row1.createCell(2).setCellValue("10");
XSSFRow row2 = sheet.createRow(2);
row2.createCell(0).setCellValue("2");
row2.createCell(1).setCellValue("小王");
row2.createCell(2).setCellValue("20");
/通过输出流将workbook对象下载到磁盘
FileOutputStream out = new FileOutputStream("D:\\course\\传智健康2.0\\day05\\资源\\itcast.xlsx");
workbook.write(out);
out.flush();
out.close();
workbook.close();
}