Excel - 插入空白行

本文介绍在Excel中批量插入空行的两种方法:一是利用辅助列和定位操作单独选中每行插入;二是通过排序辅助列的方式实现隔行插入。这两种方法能够有效提升工作效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简单的插入一个空白行,只需选中一行,右键,选择插入一行即可。

如果要一次插入多个空行,可以按住Ctrl键,然后逐个选中想要插入的行,然后执行插入操作,如下所示:

选中张三、王五、田七,在每行上面插入一行。

结果如下,注意张三上面插入一行,所以张三一行从第23行变成了第24行。

但如果行数很多,一行行选就很麻烦,因为必须使用ctrl键一行行选,如果整个区域的行都一次选上,插入操作是整个区域上面插入同等数量的行。

一个比较通俗易懂的方法,是借助辅助列,使用定位操作,来单独的选中每行里的一个单元格,然后执行插入操作,就会在每行上面插入一个空行。

如下,第一步右边两列,分别放入两个1,然后下拉到底。

选中右边两列,打开定位窗口,Ctrl + G即可:

点开Special,选择Blanks:

这时就把一个个空白单元格选中,每个单元格都各自一行:

右键执行插入后的操作结果:

注意这里使用两列的原因,如果使用一列,定位时的单元格,如果紧挨一起,再执行插入操作,就不会隔行插入,而是一次插入多行。这个效果类似你一次选中多行插入空行,会在上面一次插入同等行数。

原理是相同的,如果需要隔多行插入一空行,或者隔一行插入多行空行,可以自行试验一下方法。

另一种方法:

同样借助辅助列,右边加入一个排序列:

将右边索引再拷贝一份放到下面:

然后选中这个区域,点击菜单上的排序:

排序时选择辅助列:

显示结果如下:

将辅助列删掉,就会留下隔行插入一空行的结果。

备注:

还可以使用一些Excel的插件,工具套件来完成,那样操作起来就会更方便一些。

参考:

百度搜索

### 如何在 Apache POI 中插入空白行 在使用 Apache POI 操作 Excel 文件时,可以通过创建新的 `HSSFRow` 或 `XSSFRow` 对象来实现插入空白行的效果。需要注意的是,POI 并未直接提供“插入行”的方法,因此需要手动调整现有行的位置并创建新行。 以下是具体实现方式: #### 创建一个新的空白行 通过调用 `Sheet.createRow(int rowIndex)` 方法可以指定索引位置创建一行。如果该索引处已有数据,则会覆盖原有数据[^2]。为了防止这种情况发生,在创建新行之前应先移动后续行的数据到更高的索引位置。 #### 移动现有的行 由于 POI 不支持直接移动行的操作,需逐一遍历受影响的单元格并将它们复制到目标位置。完成后再删除原始行即可模拟出“插入”效果。 下面是一个完整的 Java 实现示例代码用于向特定位置插入空白行: ```java import org.apache.poi.ss.usermodel.*; import java.io.FileOutputStream; import java.util.List; public class InsertBlankRowExample { public static void main(String[] args) throws Exception{ Workbook workbook = new XSSFWorkbook(); // or HSSFWorkbook for .xls files Sheet sheet = workbook.createSheet("New Sheet"); // 原始数据填充 String[][] data = {{"A1", "B1"}, {"A2", "B2"}, {"A3", "B3"}}; int rowNum = 0; for (String[] rowData : data){ Row row = sheet.createRow(rowNum++); int colNum = 0; for (String field : rowData){ Cell cell = row.createCell(colNum++); cell.setCellValue(field); } } // 插入空白行逻辑 int insertRowAt = 1; // 要插入空白行位置 shiftRows(sheet, insertRowAt, sheet.getLastRowNum(), 1); try(FileOutputStream fileOut = new FileOutputStream("workbook.xlsx")){ workbook.write(fileOut); } workbook.close(); } /** * 将从 start 到 end 的所有行向下偏移 n 行. */ private static void shiftRows(Sheet sheet, int start, int end, int n){ if(n == 0 || start > end){ return ; } for(int i=end;i>=start;i--){ Row oldRow=sheet.getRow(i); if(oldRow != null){ Row newRow=sheet.createRow(i+n); copyRow(sheet,oldRow,newRow); sheet.removeRow(oldRow); } } } /** * 复制源行的内容至目标行. */ private static void copyRow(Sheet sheet, Row srcRow, Row destRow){ for(Cell srcCell:srcRow){ Cell newCell=destRow.createCell(srcCell.getColumnIndex()); copyCell(sheet,srcCell,newCell); } } /** * 单元格内容拷贝函数. */ private static void copyCell(Sheet sheet, Cell srcCell, Cell destCell){ switch(srcCell.getCellType()){ case STRING: destCell.setCellValue(srcCell.getStringCellValue()); break; case NUMERIC: destCell.setCellValue(srcCell.getNumericCellValue()); break; default : System.out.println("Unsupported Cell Type"); } } } ``` 此代码展示了如何在一个工作表中插入空白行以及如何处理可能存在的其他数据行位移问题[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜流冰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值