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();
            }
        }
    }
相关推荐
han_hanker18 分钟前
@Validated @Valid 用法
java·spring boot
小CC吃豆子20 分钟前
详细介绍一下静态分析工具 SonarQube
java
DevOpenClub23 分钟前
全国三甲医院主体信息 API 接口
java·大数据·数据库
上海合宙LuatOS28 分钟前
LuatOS扩展库API——【exremotecam】网络摄像头控制
开发语言·网络·物联网·lua·luatos
言慢行善30 分钟前
SpringBoot中的注解介绍
java·spring boot·后端
一勺菠萝丶33 分钟前
管理后台使用手册在线预览与首次登录引导弹窗实现
java·前端·数据库
feng_you_ying_li34 分钟前
C++11,{}的初始化情况与左右值及其引用
开发语言·数据结构·c++
xiaotao13141 分钟前
JS new 操作符完整执行过程
开发语言·前端·javascript·原型模式
TE-茶叶蛋1 小时前
结合登录页-PHP基础知识点解析
android·开发语言·php
无巧不成书02181 小时前
Java包(package)全解:从定义、使用到避坑,新手零基础入门到实战
java·开发语言·package·java包