easyExcel 删除某一行,比如表头

在 EasyExcel 中,删除某一行(如表头)需要手动处理。EasyExcel 主要用于解析 Excel 文件为 Java 对象,它不直接提供修改和删除某一行的 API。因此,删除某一行可以通过以下步骤实现:

  1. 读取 Excel 文件: 使用 EasyExcel 读取整个 Excel 文件的数据,并将数据存储到列表中。
  2. 删除指定行: 通过操作列表,移除指定行(如表头)。
  3. 重新写回 Excel 文件: 处理完成后,将更新后的数据写回到新的 Excel 文件。

示例代码如下:

import com.alibaba.excel.EasyExcel;

import java.util.List;

public class EasyExcelDeleteRow {

    public static void main(String[] args) {
        // 文件路径
        String inputFilePath = "input.xlsx";
        String outputFilePath = "output.xlsx";

        // 读取 Excel 文件
        List<List<String>> data = EasyExcel.read(inputFilePath).sheet().doReadSync();

        // 删除第一行(表头)
        if (!data.isEmpty()) {
            data.remove(0);
        }

        // 将数据写回到新的 Excel 文件
        EasyExcel.write(outputFilePath).sheet("Sheet1").doWrite(data);
    }
}

说明:

  1. 读取部分: EasyExcel.read().sheet().doReadSync() 读取 Excel 文件,并以 List<List<String>> 的形式存储数据。
  2. 删除操作: data.remove(0) 删除第一行,即表头。
  3. 写入部分: EasyExcel.write(outputFilePath) 写入新的 Excel 文件。

这种方式适用于简单的删除操作。如果你想要更复杂的处理,比如根据某些条件删除行,则可以进一步修改列表操作逻辑。

easyExcel清空某一行的数据,比如表头行

在 EasyExcel 中,要清空某一行的数据(如表头行),可以通过以下步骤实现:

  1. 读取 Excel 文件:使用 EasyExcel 读取 Excel 文件中的所有数据。
  2. 清空指定行的数据:对目标行(如表头行)进行操作,将该行的数据设置为空。
  3. 将数据写回 Excel 文件:处理完成后,将修改后的数据重新写入新的 Excel 文件。

下面是一个示例代码,演示如何清空表头行的数据:

import com.alibaba.excel.EasyExcel;

import java.util.List;

public class EasyExcelClearRow {

    public static void main(String[] args) {
        // 文件路径
        String inputFilePath = "input.xlsx";
        String outputFilePath = "output.xlsx";

        // 读取 Excel 文件
        List<List<String>> data = EasyExcel.read(inputFilePath).sheet().doReadSync();

        // 清空第一行(表头行)数据
        if (!data.isEmpty()) {
            List<String> headerRow = data.get(0);
            // 将表头行数据设置为空字符串
            for (int i = 0; i < headerRow.size(); i++) {
                headerRow.set(i, "");
            }
        }

        // 将数据写回到新的 Excel 文件
        EasyExcel.write(outputFilePath).sheet("Sheet1").doWrite(data);
    }
}

代码说明:

  1. 读取数据:使用 EasyExcel.read().sheet().doReadSync() 将 Excel 文件的数据读取为 List<List<String>>
  2. 清空表头行:使用 headerRow.set(i, "") 将表头行的每一列内容设置为空字符串。
  3. 写入文件:将修改后的数据写回到新的 Excel 文件中。

这样操作后,指定的行(如表头行)的数据将被清空,但行本身仍然保留。

easyExcel清空某一行的数据,比如表头行,包括样式

在 EasyExcel 中,要清空某一行的数据并移除其样式(如表头行),虽然 EasyExcel 对样式的支持有限,但你可以通过以下方式来实现清空数据的同时清除样式:

  1. 读取数据:首先使用 EasyExcel 读取 Excel 文件中的数据。
  2. 手动清空数据:将表头行的数据清空代码
    import com.alibaba.excel.EasyExcel;
    import com.alibaba.excel.write.handler.WriteHandler;
    import org.apache.poi.ss.usermodel.*;
    
    import java.util.List;
    
    public class EasyExcelClearRowAndStyle {
    
        public static void main(String[] args) {
            // 文件路径
            String inputFilePath = "input.xlsx";
            String outputFilePath = "output.xlsx";
    
            // 读取 Excel 文件
            List<List<String>> data = EasyExcel.read(inputFilePath).sheet().doReadSync();
    
            // 清空第一行(表头行)数据
            if (!data.isEmpty()) {
                List<String> headerRow = data.get(0);
                // 将表头行数据设置为空字符串
                for (int i = 0; i < headerRow.size(); i++) {
                    headerRow.set(i, "");
                }
            }
    
            // 写回数据并清空表头行样式
            EasyExcel.write(outputFilePath)
                    .sheet("Sheet1")
                    .registerWriteHandler(new ClearStyleHandler(0)) // 清除表头行样式
                    .doWrite(data);
        }
    
        /**
         * 自定义 WriteHandler 用于清除指定行的样式
         */
        static class ClearStyleHandler implements WriteHandler {
            private final int rowIndexToClear;
    
            public ClearStyleHandler(int rowIndexToClear) {
                this.rowIndexToClear = rowIndexToClear;
            }
    
            @Override
            public void sheet(int sheetNo, Sheet sheet) {
                // 不处理 sheet 级别的操作
            }
    
            @Override
            public void row(int rowNum, Row row) {
                if (rowNum == rowIndexToClear) {
                    // 清空指定行的样式
                    for (Cell cell : row) {
                        CellStyle blankStyle = row.getSheet().getWorkbook().createCellStyle();
                        cell.setCellStyle(blankStyle);
                    }
                }
            }
    
            @Override
            public void cell(int cellNum, Cell cell) {
                // 不处理 cell 级别的操作
            }
        }
    }
    
  3. 通过拦截器清除样式:在写回数据时,可以使用 EasyExcel 的 WriteHandler 处理器接口来移除指定行的样式。

下面是一个示例代码,展示如何清空表头行的数据以及样式:

代码说明:

  1. 清空数据:在读取到的数据中,使用 headerRow.set(i, "") 将表头行的所有数据设置为空字符串。
  2. 清除样式:使用自定义的 WriteHandler 实现 ClearStyleHandler,它在写入数据时针对指定的行(如表头行)清除样式。通过创建空的 CellStyle 来覆盖原来的样式。
  3. 注册拦截器:使用 EasyExcel.write() 时,注册 ClearStyleHandler 处理器,它会在写入过程中对特定行清空样式。

效果:

  • 表头行的数据被清空。
  • 表头行的样式被清除,变为默认的无样式。

这种方式可以同时清除数据和样式,使表头行变为空白行。