杰瑞科技汇

Java Excel单元格合并怎么操作?

Java Excel 单元格合并指南

在Java中操作Excel并合并单元格,常用的库有Apache POI和EasyExcel,以下是使用这两个库实现单元格合并的方法:

Java Excel单元格合并怎么操作?-图1
(图片来源网络,侵删)

使用Apache POI合并单元格

Apache POI是最常用的Java操作Excel的库之一。

基本步骤

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
public class MergeCellsExample {
    public static void main(String[] args) throws Exception {
        // 创建工作簿
        Workbook workbook = new XSSFWorkbook();
        // 创建工作表
        Sheet sheet = workbook.createSheet("合并单元格示例");
        // 创建行和单元格
        Row row1 = sheet.createRow(0);
        Cell cellA1 = row1.createCell(0);
        cellA1.setCellValue("合并A1:C1");
        Row row2 = sheet.createRow(1);
        Cell cellA2 = row2.createCell(0);
        cellA2.setCellValue("A2单元格");
        // 合并单元格 (起始行, 结束行, 起始列, 结束列)
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2));
        // 写入文件
        try (FileOutputStream out = new FileOutputStream("merged_cells.xlsx")) {
            workbook.write(out);
        }
        // 关闭工作簿
        workbook.close();
    }
}

常用合并方法

  1. 合并单个区域

    sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, 0)); // 合并A1:A2
  2. 合并多个区域

    sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 2)); // 合并A1:C1
    sheet.addMergedRegion(new CellRangeAddress(1, 2, 1, 2)); // 合并B2:C3
  3. 合并所有空单元格

    Java Excel单元格合并怎么操作?-图2
    (图片来源网络,侵删)
    // 需要自己实现逻辑遍历并合并

使用EasyExcel合并单元格

EasyExcel是阿里巴巴开源的Excel处理库,性能更好。

基本步骤

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import org.apache.poi.ss.usermodel.*;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
public class EasyExcelMergeExample {
    public static void main(String[] args) throws Exception {
        // 准备数据
        List<List<String>> data = new ArrayList<>();
        List<String> header = new ArrayList<>();
        header.add("姓名");
        header.add("年龄");
        header.add("性别");
        data.add(header);
        List<String> row1 = new ArrayList<>();
        row1.add("张三");
        row1.add("25");
        row1.add("男");
        data.add(row1);
        List<String> row2 = new ArrayList<>();
        row2.add("李四");
        row2.add("30");
        row2.add("女");
        data.add(row2);
        // 创建Excel写入器
        ExcelWriter excelWriter = EasyExcel.write(new FileOutputStream("easyexcel_merged.xlsx")).build();
        // 创建写入表
        WriteSheet writeSheet = EasyExcel.writerSheet("合并示例").build();
        // 创建表格并设置合并
        WriteTable writeTable = new WriteTable();
        writeTable.setHead(data.subList(0, 1));
        // 自定义样式
        WriteCellStyle headWriteCellStyle = new WriteCellStyle();
        WriteFont headWriteFont = new WriteFont();
        headWriteFont.setFontHeightInPoints((short)11);
        headWriteCellStyle.setWriteFont(headWriteFont);
        WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
        WriteFont contentWriteFont = new WriteFont();
        contentWriteFont.setFontHeightInPoints((short)10);
        contentWriteCellStyle.setWriteFont(contentWriteFont);
        HorizontalCellStyleStrategy horizontalCellStyleStrategy = 
            new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
        // 写入数据
        excelWriter.write(data, writeSheet);
        // 合并单元格 (行1, 行2, 列1, 列2)
        excelWriter.merge(0, 0, 0, 2, "合并的标题");
        // 关闭写入器
        excelWriter.finish();
    }
}

注意事项

  1. 合并后的内容:合并后只有左上角的单元格有内容,其他单元格为空
  2. 样式继承:合并后的单元格会继承左上角单元格的样式
  3. 性能考虑:大量合并操作可能影响性能,建议只在必要时使用
  4. 文件格式.xlsx格式支持合并,.xls也支持但功能有限

高级技巧

  1. 动态合并:根据数据内容动态决定是否合并
  2. 合并后设置样式:合并后可以单独设置合并区域的样式
  3. 取消合并:可以通过sheet.getMergedRegions()获取合并区域,然后sheet.removeMergedRegion()取消

希望这些示例能帮助你在Java中实现Excel单元格合并功能!

Java Excel单元格合并怎么操作?-图3
(图片来源网络,侵删)
分享:
扫描分享到社交APP
上一篇
下一篇