java读写excel表格

📅 发布时间:2026/7/7 2:36:53 👁️ 浏览次数:
java读写excel表格
Java 读写 Excel 表格最常用方案Apache POIJava 操作 Excel 最主流、稳定的方案是Apache POI同时支持.xlsExcel 2003和.xlsxExcel 2007两种格式。我直接给你完整可运行的代码复制就能用附带详细注释。一、先引入依赖Maven/GradleMaven最常用在pom.xml中添加xml!-- Excel 2007 .xlsx 格式 -- dependency groupIdorg.apache.poi/groupId artifactIdpoi-ooxml/artifactId version5.2.5/version /dependency !-- Excel 2003 .xls 格式可选 -- dependency groupIdorg.apache.poi/groupId artifactIdpoi/artifactId version5.2.5/version /dependencyGradlegroovyimplementation org.apache.poi:poi-ooxml:5.2.5 implementation org.apache.poi:poi:5.2.5二、Java 写入 Excel.xlsx完整代码java运行import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileOutputStream; import java.io.IOException; public class ExcelWrite { public static void main(String[] args) { // 1. 创建一个新的工作簿.xlsx 用 XSSFWorkbook try (Workbook workbook new XSSFWorkbook()) { // 2. 创建工作表 Sheet sheet workbook.createSheet(用户信息表); // 3. 创建表头行第0行 Row headerRow sheet.createRow(0); // 设置表头单元格 headerRow.createCell(0).setCellValue(ID); headerRow.createCell(1).setCellValue(姓名); headerRow.createCell(2).setCellValue(年龄); headerRow.createCell(3).setCellValue(城市); // 4. 写入数据行第1、2、3行 Object[][] data { {1, 张三, 22, 北京}, {2, 李四, 25, 上海}, {3, 王五, 28, 广州} }; for (int i 0; i data.length; i) { Row row sheet.createRow(i 1); Object[] rowData data[i]; for (int j 0; j rowData.length; j) { row.createCell(j).setCellValue(rowData[j].toString()); } } // 5. 自动调整列宽 for (int i 0; i 4; i) { sheet.autoSizeColumn(i); } // 6. 写入文件 try (FileOutputStream fos new FileOutputStream(user.xlsx)) { workbook.write(fos); System.out.println(Excel 写入成功文件路径当前项目根目录); } } catch (IOException e) { e.printStackTrace(); } } }三、Java 读取 Excel.xlsx完整代码java运行import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import java.io.FileInputStream; import java.io.IOException; public class ExcelRead { public static void main(String[] args) { // 要读取的文件路径 String filePath user.xlsx; try (FileInputStream fis new FileInputStream(filePath); Workbook workbook new XSSFWorkbook(fis)) { // 获取第一个工作表 Sheet sheet workbook.getSheetAt(0); // 获取最后一行的行号 int lastRowNum sheet.getLastRowNum(); // 遍历行跳过表头从第1行开始从0开始则包含表头 for (int i 1; i lastRowNum; i) { Row row sheet.getRow(i); if (row null) continue; // 读取单元格数据 String id getCellValue(row.getCell(0)); String name getCellValue(row.getCell(1)); String age getCellValue(row.getCell(2)); String city getCellValue(row.getCell(3)); System.out.println(ID id 姓名 name 年龄 age 城市 city); } } catch (IOException e) { e.printStackTrace(); } } // 工具方法统一获取单元格的值处理不同类型 private static String getCellValue(Cell cell) { if (cell null) return ; switch (cell.getCellType()) { case STRING: return cell.getStringCellValue(); case NUMERIC: return String.valueOf((int) cell.getNumericCellValue()); case BOOLEAN: return String.valueOf(cell.getBooleanCellValue()); default: return ; } } }四、关键说明格式区分.xlsx2007XSSFWorkbook.xls2003HSSFWorkbook行和列都是从 0 开始计数大文件处理超大数据量10 万 行推荐使用SXSSFWorkbook避免内存溢出。异常处理代码中使用了try-with-resources自动关闭流最安全。五、运行效果写入生成user.xlsx包含表头 3 行数据读取控制台打印plaintextID1姓名张三年龄22城市北京 ID2姓名李四年龄25城市上海 ID3姓名王五年龄28城市广州总结用Apache POI是 Java 操作 Excel 的标准方案写入用XSSFWorkbookcreateRow/createCell读取用getSheetAt 遍历行 工具方法取值代码直接复制运行无需修改