鱼C论坛

 找回密码
 立即注册
查看: 698|回复: 7

删除excel中空行

[复制链接]
发表于 2024-9-21 09:41:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
需要对excel 的指定sheet“sheet3”做如下操作
1、对第7行开始,到出现第一行“第一列的数据不为空”的行数之间的空行,全部删除
2、对第200行开始,倒着往上查,到出现第一行“第一列的数据不为空”的行数之间的空行,留一行,其他全部删除
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2024-9-21 09:41:52 | 显示全部楼层
为了实现您在 Excel 中的需求,可以使用 Python 和 openpyxl 库。以下是一个示例代码,来删除指定的空行:

  1. import openpyxl

  2. def delete_empty_rows(file_path, sheet_name):
  3.     # 打开 Excel 文件
  4.     wb = openpyxl.load_workbook(file_path)
  5.     sheet = wb[sheet_name]
  6.    
  7.     # 删除第7行开始的空行
  8.     for row in range(7, sheet.max_row + 1):
  9.         if sheet.cell(row=row, column=1).value is not None:
  10.             break
  11.         else:
  12.             sheet.delete_rows(row)
  13.    
  14.     # 删除第200行开始到第一行“第一列的数据不为空”的行数之间的空行
  15.     non_empty_found = False
  16.     empty_rows = []
  17.    
  18.     for row in range(200, 0, -1):
  19.         if sheet.cell(row=row, column=1).value is not None:
  20.             non_empty_found = True
  21.         elif non_empty_found:
  22.             empty_rows.append(row)
  23.    
  24.     # 留下一行空行,其他全部删除
  25.     for row in empty_rows[1:]:
  26.         sheet.delete_rows(row)
  27.    
  28.     # 保存更改
  29.     wb.save(file_path)

  30. # 使用示例
  31. delete_empty_rows('path_to_your_file.xlsx', 'sheet3')
复制代码


解释:
1. 使用 `openpyxl` 打开 Excel 文件和指定的工作表(sheet3)。
2. 从第7行开始,查找到第一列不为空的行,并删除所有空行。
3. 从第200行开始,倒着查找,找到第一列不为空的行,记录所有空行,保留第一行空行,删除其余空行。
4. 保存更改。

确保在运行脚本之前安装 `openpyxl`:
  1. pip install openpyxl
复制代码


请根据需要调整代码中的路径和文件名。这样,您可以实现所描述的功能。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-21 09:58:46 | 显示全部楼层
需要对excel 的指定sheet“sheet3”做如下操作
1、对第7行开始,到出现第一行“第一列的数据不为空”的行数之间的空行,全部删除
2、对第200行开始,倒着往上查,到出现第一行“第一列的数据不为空”的行数之间的空行,如果表格总行数大于30,留一行空行,其他空行删除,如果表格总行数在执行1后不大于30,不做操作

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-21 09:58:55 | 显示全部楼层
颂风侯 发表于 2024-09-21 09:58
需要对excel 的指定sheet“sheet3”做如下操作
1、对 ...


可以使用Python和openpyxl库来实现这个功能。以下是示例代码:

  1. import openpyxl

  2. def delete_empty_rows(file_path, sheet_name):
  3.     # 打开Excel文件
  4.     wb = openpyxl.load_workbook(file_path)
  5.     sheet = wb[sheet_name]

  6.     # 删除第7行开始到第一列有数据行之间的空行
  7.     first_non_empty_row = None
  8.     for row in range(7, sheet.max_row + 1):
  9.         if sheet.cell(row=row, column=1).value is not None:
  10.             first_non_empty_row = row
  11.             break
  12.         else:
  13.             sheet.delete_rows(row, 1)

  14.     # 判断如果表格总行数不大于30,不做第二部分的操作
  15.     if sheet.max_row > 30:
  16.         # 删除第200行开始到第一列有数据行之间的空行,保留一行空行
  17.         non_empty_found = False
  18.         empty_rows = []
  19.         for row in range(200, 7, -1):
  20.             if sheet.cell(row=row, column=1).value is not None:
  21.                 non_empty_found = True
  22.             
  23.             if non_empty_found and sheet.cell(row=row, column=1).value is None:
  24.                 empty_rows.append(row)
  25.         
  26.         # 如果存在空行,保留一行空行
  27.         if empty_rows:
  28.             empty_rows.remove(empty_rows[-1])
  29.             for row in empty_rows:
  30.                 sheet.delete_rows(row, 1)
  31.    
  32.     # 保存更改
  33.     wb.save(file_path)

  34. # 使用示例
  35. delete_empty_rows('path_to_your_file.xlsx', 'sheet3')
复制代码


解释:
1. 先使用 `openpyxl` 打开指定的 Excel 文件和工作表(这里是 `sheet3`)。
2. 【第一步】从第7行开始,依次检查第一列数据,如果数据为空,则删除该行,直到遇到第一列数据不为空的行。
3. 【第二步】检测删除空行后的总行数,只有当总行数大于30时,才执行第二部分的操作。
  - 从第200行开始往上检查,找到第一列不为空的数据行。
  - 从找到的该行继续往上检查所有在第一列为空的行,记录下来留空行保留一行,删除其余空行。

这样通过以上代码,先进行第一步操作,再根据行数条件执行第二步操作,实现了对 Excel 空行的处理。注意,确保在执行脚本之前,安装了 `openpyxl` 库:

  1. pip install openpyxl
复制代码


以上代码需要你替换 `path_to_your_file.xlsx` 为你的文件路径。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-21 10:46:12 | 显示全部楼层
需要对excel 的指定sheet“sheet3”做如下操作
1、如果“第一列的数据不为空”的行数不小于30,删除所有空行
2、如果“第一列的数据不为空”的行数小于30,将空格删除到控制总行数为30
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-21 10:46:19 | 显示全部楼层
颂风侯 发表于 2024-09-21 10:46
需要对excel 的指定sheet“sheet3”做如下操作
1、如 ...


明白了!我们可以使用 `openpyxl` 库来实现这个操作。下面是一个简单的代码示例:

  1. import openpyxl

  2. def delete_empty_rows(sheet):
  3.     rows = list(sheet.iter_rows())
  4.     non_empty_row_count = sum(1 for row in rows if row[0].value is not None)
  5.     max_total_rows = 30

  6.     if non_empty_row_count >= max_total_rows:
  7.         # 删除所有空行
  8.         for row in reversed(rows):
  9.             if row[0].value is None:
  10.                 sheet.delete_rows(row[0].row)
  11.     else:
  12.         # 删除空行直到总行数为30
  13.         current_row_count = len(rows)
  14.         rows_to_keep = []
  15.         
  16.         for row in reversed(rows):
  17.             if row[0].value is None:
  18.                 sheet.delete_rows(row[0].row)
  19.                 current_row_count -= 1
  20.                 if current_row_count == max_total_rows:
  21.                     break
  22.             else:
  23.                 rows_to_keep.append(row)
  24.         
  25.         # 如果已经删除到了剩余30行以内,再次反向插入保留行
  26.         if current_row_count < max_total_rows:
  27.             for row in reversed(rows_to_keep):
  28.                 sheet.insert_rows(row[0].row, amount=1)
  29.                 for cell in row:
  30.                     sheet.cell(row=row[0].row, column=cell.column, value=cell.value)

  31. def main(file_path):
  32.     wb = openpyxl.load_workbook(file_path)
  33.     sheet = wb['sheet3']
  34.     delete_empty_rows(sheet)
  35.     wb.save(file_path)

  36. if __name__ == "__main__":
  37.     file_path = "your_excel_file.xlsx"
  38.     main(file_path)
复制代码


这个代码的步骤:

1. 打开Excel文件并加载 `sheet3` 页。
2. 计算非空行数。
3. 根据非空行数决定删除策略:
   - 如果非空行数大于等于30,删除所有空行。
   - 如果非空行数小于30,删除空行直到总行数为30。
4. 最后保存文件。

请根据实际需要替换 `your_excel_file.xlsx` 的文件路径。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-21 11:12:18 | 显示全部楼层
需要对excel 的指定sheet“sheet3”做如下操作
对第7行开始到999行,对于“第一列的数据为空”的行,删除
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-9-21 11:12:25 | 显示全部楼层
颂风侯 发表于 2024-09-21 11:12
需要对excel 的指定sheet“sheet3”做如下操作
对第7 ...


好的,这里是一个使用 `openpyxl` 库的Python代码示例,用于删除指定范围内第一列数据为空的行:

  1. import openpyxl

  2. def delete_empty_rows(file_path, sheet_name):
  3.     # 打开 Excel 文件
  4.     wb = openpyxl.load_workbook(file_path)
  5.     sheet = wb[sheet_name]
  6.    
  7.     rows_to_delete = []

  8.     # 遍历第7行到第999行
  9.     for row in range(7, 1000):
  10.         if sheet.cell(row=row, column=1).value is None:
  11.             rows_to_delete.append(row)

  12.     # 从后往前删除空行
  13.     for row in reversed(rows_to_delete):
  14.         sheet.delete_rows(idx=row)

  15.     # 保存修改
  16.     wb.save(file_path)

  17. # 示例调用
  18. delete_empty_rows('your_excel_file.xlsx', 'sheet3')
复制代码


在这段代码中:
1. 打开指定的 Excel 文件和工作表。
2. 从第7行到第999行逐行检查第一列是否为空。
3. 如果空,则记录该行号。
4. 从下到上删除这些空行(这样做是为了避免删除时行号变化的问题)。
5. 保存修改后的 Excel 文件。

请确保先安装了 `openpyxl` 库,可以使用 `pip install openpyxl` 进行安装。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-21 22:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表