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();
            }
        }
    }
相关推荐
小龙报20 小时前
【51单片机】深度解析 51 串口 UART:原理、配置、收发实现与工程化应用全总结
c语言·开发语言·c++·stm32·单片机·嵌入式硬件·51单片机
qq_5324535320 小时前
使用 Three.js 构建沉浸式全景图AR
开发语言·javascript·ar
Coder_Boy_20 小时前
基于SpringAI的在线考试系统-整体架构优化设计方案
java·数据库·人工智能·spring boot·架构·ddd
浅念-20 小时前
C语言——动态内存管理
c语言·开发语言·c++·笔记·学习
草履虫建模1 天前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq1 天前
分布式系统安全通信
开发语言·c++·算法
qq_297574671 天前
【实战教程】SpringBoot 实现多文件批量下载并打包为 ZIP 压缩包
java·spring boot·后端
老毛肚1 天前
MyBatis插件原理及Spring集成
java·spring·mybatis
学嵌入式的小杨同学1 天前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
lang201509281 天前
JSR-340 :高性能Web开发新标准
java·前端·servlet