package com.lujier.readExcel;
import java.util.List;
import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
public class ReadExcelPOI {
public static void main(String[] args) {
String file_path = "src/test/resources/students1.xlsx";
try {
// 1. 打开文件(流读取excel文件)
FileInputStream inputs = new FileInputStream(file_path);
// 2.创建excel对象workbook(工作薄)
// 多态Workbook(Excel对象),即可接收2003版本,也可2007版本
Workbook wb = WorkbookFactory.create(inputs);
// 3. 获取sheet(表单)
// Sheet sh = wb.getSheetAt(0); // 通过索引获取表单
// Sheet sh = wb.getSheet("sheet1");
Sheet sh = wb.getSheetAt(0);
// 4.获取row(行)
// sh.getRow(0);
// 4.1 获取最大行号: 索引(0开始)
int lastRowNum = sh.getLastRowNum();
System.out.printf("lastRowNum=%d",lastRowNum);
// 4.2 循环所有的行
for(int i=0;i<=lastRowNum;i++) {
// 4.3 获取当前行
Row row = sh.getRow(i);
// 4.4 获取最大列号: 长度
int lastCellNum = row.getLastCellNum();
System.out.printf("lastCellNum=%d\n",lastCellNum);
// 4.5 遍历每行所有的单元格
for(int j=0;j<lastCellNum;j++) {
// 5. 获取cell(单元格)
Cell cell = row.getCell(j, MissingCellPolicy.CREATE_NULL_AS_BLANK);
// 5.1 设置单元格值类型
cell.setCellType(CellType.STRING);
// 5.2 获取单元格的内容
String cellValue = cell.getStringCellValue();
System.out.printf("(%d,%d)=%s:",i,j,cellValue);
}
System.out.printf("\n");
}
// 6. 关闭文件流
inputs.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}
package com.lujier.readExcel;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.usermodel.Row.MissingCellPolicy;
/**
* TODO
* @File: WriteExcelPOI.java
* @Author: Lujier @SINCE: 2020年8月12日 下午9:59:07
* @Phone: 15934815829 @Email: 15934915829@163.com
* */
public class WriteExcelPOI {
public static void main(String[] args) {
String file_path = "src/test/resources/students1.xlsx";
try {
// 1. 打开文件(流读取excel文件)
FileInputStream inputs = new FileInputStream(file_path);
// 2.创建excel对象workbook(工作薄)
// 多态Workbook(Excel对象),即可接收2003版本,也可2007版本
Workbook wb = WorkbookFactory.create(inputs);
// 3. 获取sheet(表单)
// Sheet sh = wb.getSheetAt(0); // 通过索引获取表单
// Sheet sh = wb.getSheet("sheet1");
Sheet sh = wb.getSheetAt(0);
// 4. 获取指定行:第2行
int row_num = 2;
Row row = sh.getRow(row_num);
// 5. 获取指定列,获得cell对象
int column_num = 2;
Cell cell = row.getCell(column_num, MissingCellPolicy.CREATE_NULL_AS_BLANK);
// 5.1 设置单元格值类型
cell.setCellType(CellType.STRING);
// 5.2 获取单元格的内容
// String cellValue = cell.getStringCellValue();
// System.out.printf("(%d,%d)=%s:",row_num,column_num,cellValue);
// 5.3 单元格值设置: 修改
cell.setCellValue("女女");
// 6. 回写Excel(单元格内容修改也就是工作薄内容改变,所以工作薄对输出流文件写操作)
FileOutputStream out = new FileOutputStream(file_path);
wb.write(out);
// 7. 关闭文件流
inputs.close();
out.close();
} catch(Exception e) {
e.printStackTrace();
}
}
}