@[toc]
前提:使用 java poi 的包
一.写入表格操作
/**
* Excel 中第一个 sheet 页进行多行多列数据写入操作
*
* @param excelName Excel 文件名
* @param data 保存有写入表格多行的数据,类型是 List<String[]>
*/
synchronized public static void writeExcel(String excelName, List<String[]> excelData) throws Exception {
// 获取 Excel 文件绝对路径
String absoluteExcelPath = new File("").getCanonicalPath() + "/src/test/resources/" + excelName;
// 根据 Excel 路径创建 File 文件类
File excelFile = new File(absoluteExcelPath);
// 根据 File 文件类创建 Workbook 工作簿类
Workbook workbook = WorkbookFactory.create(excelFile);
// 根据 Workbook 获取当前 Sheet 页
Sheet sheet = workbook.getSheetAt(0);
/* 开始逐行遍历 */
for(int rowNum = sheet.getLastRowNum() + 1, i = 0; i < data.size(); rowNum++, i++) {
// 获取新的没有数据的一行
Row row = sheet.getRow(rowNum);
// 拿到当前行数据
String[] rowData = excelData.get(i);
/* 开始逐列遍历 */
for(int columnNum = row.getLastCellNum() + 1, j = 0; j < rowData.length; columnNum++, j++){
// 单元格存储数据
row.createCell(columnNum).setCellValue(rowData[j]);
}
}
// 文件输出流
FileOutputStream out=new FileOutputStream(absoluteExcelPath);
// 清理
out.flush();
// 将 Workbook 中的数据通过流写入
workbook.write(out);
// 关闭流
out.close();
}
二.读表操作
/**
* Excel 中第一个 sheet 页进行多行多列数据写入操作
*
* @param excelName Excel 文件名
* @return 返回 List<String[]> 类型读取表格的数据
*/
synchronized public static List<String[]> readExcel(String excelName) throws Exception {
// 获取 Excel 文件绝对路径
String absoluteExcelPath = new File("").getCanonicalPath() + "/src/test/resources/" + excelName;
// 根据 Excel 路径创建 File 文件类
File excelFile = new File(absoluteExcelPath);
// 根据 File 文件类创建 Workbook 工作簿类
Workbook workbook = WorkbookFactory.create(excelFile);
// 根据 Workbook 获取当前 Sheet 页
Sheet sheet = workbook.getSheetAt(0);
List<String[]> dataList = new ArrayList<>();
/* 开始逐行遍历 */
for(int rowNum = 0, i = 0; i <= sheet.getLastRowNum(); rowNum++, i++) {
// 获取新的一行
Row row = sheet.getRow(rowNum);
// 创建该行对应的 String[] 数组
String[] rowString = new String[row.getLastCellNum() + 1];
/* 开始逐列遍历 */
for(int columnNum = 0, j = 0; j < row.getLastCellNum(); columnNum++, j++){
// 获取新的一列
Cell cell = row.getCell(columnNum);
// 设置 Cell 类型为 String
cell.setCellType(CellType.STRING);
// 将单元格内容保存进 String[] 行数组
rowString[j] = new DataFormatter().formatCellValue(cell);
}
// 将各行数组数据保存进 List 集合
dataList.add(rowString);
}
return dataList;
}