Java POI 操作 Excel 读取与写入

mac2024-06-22  43

文章目录

一.写入表格操作二.读表操作 前提:使用 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; }
最新回复(0)