cn.hutool.poi.excel.ExcelWriter 基础操作

  • 创建ExcelWriter
String fileName = "F:\\4366.xlsx";
ExcelWriter writer = ExcelUtil.getWriter(fileName);
  • 表格合并操作

    private static void merger(ExcelWriter writer) {
        //合并 选择范围至少要两个cell要不会报错
        //合并的开始列 ,最后一列
        int startCol = 5,lastCol = 10;
        //合并开始行 结束行
        int startRow = 1,endRow = 5;
        String content = "合并后写入的内容";

        //合并后设置样式
        CellStyle row0Style = writer.createRowStyle(0);
        //根据当前行进行合并 0-lastCol 列
        writer.merge(lastCol);
        //合并后写入内容
        writer.merge(lastCol,content);
        //合并后 设置表头样式
        writer.merge(lastCol,content,false);
        //选择合并范围后写入内容 并设置默认的 表头样式
        writer.merge(startRow,endRow,startCol,lastCol,content,true);
        //选择合并范围后写入内容 并设置样式;
        writer.merge(startRow, endRow, startCol,lastCol , content, row0Style);
    }
  • 全局样式
    以下的设置会在后续写入的数据中都按照这个样式进行进行。 设置全局字体

    private static void setWorkbookWriteStyle(ExcelWriter writer) {
        //宋体 9号
        Font allfont = writer.createFont();
        allfont.setFontName("宋体");
        allfont.setFontHeightInPoints((short) 9);
        StyleSet sset = new StyleSet(writer.getWorkbook());
        sset.setAlign(HorizontalAlignment.LEFT, VerticalAlignment.CENTER);
        sset.setFont(allfont, false);

        writer.setStyleSet(sset);
    }
  • 行样式设置

    public static CellStyle rowStyle(ExcelWriter writer) {
        CellStyle row0Style = writer.createRowStyle(0);
        Font row0Font = writer.createFont();
        row0Font.setFontHeightInPoints((short) 18);
        row0Font.setFontName("宋体");
        row0Font.setBold(true);
        row0Style.setFont(row0Font);

        //设置对齐的格式  剧中
        row0Style.setAlignment(HorizontalAlignment.CENTER);
        //设置边框 有以下的格式
//        NONE(0),
//                THIN(1),
//                MEDIUM(2),
//                DASHED(3),
//                DOTTED(4),
//                THICK(5),
//                DOUBLE(6),
//                HAIR(7),
//                MEDIUM_DASHED(8),
//                DASH_DOT(9),
//                MEDIUM_DASH_DOT(10),
//                DASH_DOT_DOT(11),
//                MEDIUM_DASH_DOT_DOT(12),
//                SLANTED_DASH_DOT(13);
        row0Style.setBorderBottom(BorderStyle.DASH_DOT);
        row0Style.setBorderLeft(BorderStyle.DOTTED);
        row0Style.setBorderRight(BorderStyle.DOUBLE);
        row0Style.setBorderTop(BorderStyle.MEDIUM);
        //背景色
        row0Style.setFillBackgroundColor((short) 9888);
        //前景色
        row0Style.setFillForegroundColor((short) 9888);
        //设置填充方式
        row0Style.setFillPattern(FillPatternType.THICK_HORZ_BANDS);
        //设置数据格式
        row0Style.setDataFormat((short) 1);

        return row0Style;
    }
  • 写入列表数据
//每一行的数据 
 List<List<Object>> exportList = Lists.newArrayList();
//跳过行数
writer.passRows(3);
writer.write(exportList);
writer.flush();
  • 指定单元格式写入数据
 writer.getOrCreateCell(x, y).setCellValue("这是一个测试");
  • 结束 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hutool库是一个Java工具包,提供了一些便捷的工具类供开发者使用,简化日常编码工作。其中`ExcelWriter`是用来生成Excel文件的功能组件之一。如果你需要通过`Hutool`来向Excel文件中插入一列数据,可以按照下面的步骤进行操作: ### 准备工作 首先,你需要在项目中添加`Hutool`依赖到你的构建工具的配置文件(如`pom.xml` 或 `build.gradle`),以确保能够引用这个库。 #### Maven 示例 (`pom.xml`): ```xml <dependencies> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-core</artifactId> <version>5.x.y</version> </dependency> </dependencies> ``` #### Gradle 示例 (`build.gradle`): ```groovy dependencies { implementation 'cn.hutool:hutool-core:5.x.y' } ``` 替换`5.x.y`为您实际使用的版本号。 ### 插入一列的步骤 假设你已经有了一个已打开的Excel文件,并希望在指定位置插入一列数据。下面是一个基本示例: 1. **创建ExcelWriter**:初始化`ExcelWriter`对象并设置文件路径、工作表名称等信息。 ```java import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelWriter; //... String filePath = "path/to/excel.xlsx"; ExcelWriter writer = new ExcelWriter(filePath); ``` 2. **读取现有数据**:如果需要从已有数据出发修改,先读取原始数据。 ```java ExcelReader reader = new ExcelReader(filePath); ``` 3. **准备新列的数据**:创建一个适合插入的位置的新列数据数组。 ```java String[] newColumnData = {"New Data 1", "New Data 2", ..., "New Data N"}; ``` 4. **插入新列**:使用`insertCol()`方法将新列插入指定位置(例如,插入第3行之前的所有行)。 ```java int newRowPosition = 3; // 插入位置,从0开始计数 writer.insertCol(newRowPosition, newColumnData); ``` 5. **保存更改**:最后,确保将更改应用到Excel文件上。 ```java IoUtil.close(writer); ``` ### 完整代码示例 完整代码示例如下所示: ```java import cn.hutool.core.io.IoUtil; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelWriter; public class HutoolExcelInsertDemo { public static void main(String[] args) throws Exception { String filePath = "path/to/excel.xlsx"; // 替换为实际的文件路径 ExcelWriter writer = new ExcelWriter(filePath); // 假设我们有一个新的数据列表作为插入的列数据 String[] newData = {"New Data 1", "New Data 2", ...}; // 新数据数组 try (ExcelReader reader = new ExcelReader(filePath)) { // 阅读现有的Excel内容 // ... // 将新数据插入到特定位置 int insertPosition = 3; // 插入位置索引 writer.insertCol(insertPosition, newData); } // 应用更改 IoUtil.close(writer); } } ``` --- ### 相关问题: 1. **如何处理大型数据集?** 使用`Hutool`进行大数据量操作时需要注意性能优化。对于大型数据集,考虑分批读写或流式处理,减少内存占用。 2. **如何自定义单元格样式?** `Hutool`允许对单个单元格或整行、整列进行样式定制,如字体颜色、背景色、边框等。 3. **如何导出非标准表格结构?** 对于复杂或非标准的表格布局需求,`Hutool`的`ExcelWriter`功能可能无法直接满足所有需求。在这种情况下,可能需要结合其他工具或自定义代码逻辑来生成所需的Excel格式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值