POI操作excel示例

POI自己有些东西不是很熟悉。记录一下。

POI读取

cpp 复制代码
  public static void main(String[] args) throws Exception {
        // 读取文件
        String filePath = "D:\\12.xlsx"; // 替换为你的 Excel 文件路径

        try (FileInputStream fis = new FileInputStream(filePath);
             Workbook workbook = WorkbookFactory.create(fis)) {

            // 遍历所有工作表
            for (int sheetIndex = 0; sheetIndex < workbook.getNumberOfSheets(); sheetIndex++) {
                Sheet sheet = workbook.getSheetAt(sheetIndex);
                System.out.println("工作表名称: " + sheet.getSheetName());
                // 遍历所有行
                for (Row row : sheet) {
                    for (Cell cell : row) {
                        String cellValue = getCellValue(cell);
                        System.out.println(cellValue);
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public static String getCellValue(Cell cell)  {
        switch (cell.getCellType()) {
            case STRING:
                return cell.getStringCellValue().trim();
            case NUMERIC:
                if (DateUtil.isCellDateFormatted(cell)) {
                    return DateFormatUtils.format(cell.getDateCellValue(), "yyyy-MM-dd HH:mm:ss");
                } else {
                    return NumberToTextConverter.toText(cell.getNumericCellValue()).trim();
                }
            case BOOLEAN:
                return String.valueOf(cell.getBooleanCellValue());
            case FORMULA:
                return cell.getCellFormula();
            case ERROR:
                return ErrorEval.getText(cell.getErrorCellValue());
            default:
                return "";
        }
    }
}

POI写入

cpp 复制代码
  public static void main(String[] args) throws Exception {
        // 1. 创建一个新的工作簿(Excel文件)
        Workbook workbook = new XSSFWorkbook();

        // 2. 创建一个工作表(Sheet)
        Sheet sheet = workbook.createSheet("学生信息表");

        // 3. 模拟数据
        String[][] data = {
                {"姓名", "年龄", "成绩"},
                {"张三", "20", "90"},
                {"李四", "21", "85"},
                {"王五", "19", "95"}
        };

        // 4. 写入数据
        int rowNum = 0;
        for (String[] rowData : data) {
            Row row = sheet.createRow(rowNum++);
            int colNum = 0;
            for (String cellData : rowData) {
                Cell cell = row.createCell(colNum++);
                cell.setCellValue(cellData);
            }
        }

        // 5. 自动调整列宽
        for (int i = 0; i < data[0].length; i++) {
            sheet.autoSizeColumn(i);
        }

        // 6. 写入到文件
        try (FileOutputStream outputStream = new FileOutputStream("D:\\13.xlsx")) {
            workbook.write(outputStream);
            System.out.println("Excel 文件写入成功!");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 7. 关闭工作簿,释放资源
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
相关推荐
for_ever_love__10 小时前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c
云原生指北12 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
似水明俊德16 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
Leinwin16 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦16 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士17 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
Thera77717 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++
罗超驿17 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
炘爚17 小时前
C语言(文件操作)
c语言·开发语言
阿蒙Amon17 小时前
C#常用类库-详解SerialPort
开发语言·c#