颂风侯 发表于 2024-9-21 09:41:40

删除excel中空行

需要对excel 的指定sheet“sheet3”做如下操作
1、对第7行开始,到出现第一行“第一列的数据不为空”的行数之间的空行,全部删除
2、对第200行开始,倒着往上查,到出现第一行“第一列的数据不为空”的行数之间的空行,留一行,其他全部删除

FishC 发表于 2024-9-21 09:41:52

为了实现您在 Excel 中的需求,可以使用 Python 和 openpyxl 库。以下是一个示例代码,来删除指定的空行:

import openpyxl

def delete_empty_rows(file_path, sheet_name):
    # 打开 Excel 文件
    wb = openpyxl.load_workbook(file_path)
    sheet = wb
   
    # 删除第7行开始的空行
    for row in range(7, sheet.max_row + 1):
      if sheet.cell(row=row, column=1).value is not None:
            break
      else:
            sheet.delete_rows(row)
   
    # 删除第200行开始到第一行“第一列的数据不为空”的行数之间的空行
    non_empty_found = False
    empty_rows = []
   
    for row in range(200, 0, -1):
      if sheet.cell(row=row, column=1).value is not None:
            non_empty_found = True
      elif non_empty_found:
            empty_rows.append(row)
   
    # 留下一行空行,其他全部删除
    for row in empty_rows:
      sheet.delete_rows(row)
   
    # 保存更改
    wb.save(file_path)

# 使用示例
delete_empty_rows('path_to_your_file.xlsx', 'sheet3')

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

确保在运行脚本之前安装 `openpyxl`:
pip install openpyxl

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

颂风侯 发表于 2024-9-21 09:58:46

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

FishC 发表于 2024-9-21 09:58:55

颂风侯 发表于 2024-09-21 09:58
需要对excel 的指定sheet“sheet3”做如下操作
1、对 ...

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

import openpyxl

def delete_empty_rows(file_path, sheet_name):
    # 打开Excel文件
    wb = openpyxl.load_workbook(file_path)
    sheet = wb

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

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

# 使用示例
delete_empty_rows('path_to_your_file.xlsx', 'sheet3')

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

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

pip install openpyxl

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

颂风侯 发表于 2024-9-21 10:46:12

需要对excel 的指定sheet“sheet3”做如下操作
1、如果“第一列的数据不为空”的行数不小于30,删除所有空行
2、如果“第一列的数据不为空”的行数小于30,将空格删除到控制总行数为30

FishC 发表于 2024-9-21 10:46:19

颂风侯 发表于 2024-09-21 10:46
需要对excel 的指定sheet“sheet3”做如下操作
1、如 ...

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

import openpyxl

def delete_empty_rows(sheet):
    rows = list(sheet.iter_rows())
    non_empty_row_count = sum(1 for row in rows if row.value is not None)
    max_total_rows = 30

    if non_empty_row_count >= max_total_rows:
      # 删除所有空行
      for row in reversed(rows):
            if row.value is None:
                sheet.delete_rows(row.row)
    else:
      # 删除空行直到总行数为30
      current_row_count = len(rows)
      rows_to_keep = []
      
      for row in reversed(rows):
            if row.value is None:
                sheet.delete_rows(row.row)
                current_row_count -= 1
                if current_row_count == max_total_rows:
                  break
            else:
                rows_to_keep.append(row)
      
      # 如果已经删除到了剩余30行以内,再次反向插入保留行
      if current_row_count < max_total_rows:
            for row in reversed(rows_to_keep):
                sheet.insert_rows(row.row, amount=1)
                for cell in row:
                  sheet.cell(row=row.row, column=cell.column, value=cell.value)

def main(file_path):
    wb = openpyxl.load_workbook(file_path)
    sheet = wb['sheet3']
    delete_empty_rows(sheet)
    wb.save(file_path)

if __name__ == "__main__":
    file_path = "your_excel_file.xlsx"
    main(file_path)

这个代码的步骤:

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

颂风侯 发表于 2024-9-21 11:12:18

需要对excel 的指定sheet“sheet3”做如下操作
对第7行开始到999行,对于“第一列的数据为空”的行,删除

FishC 发表于 2024-9-21 11:12:25

颂风侯 发表于 2024-09-21 11:12
需要对excel 的指定sheet“sheet3”做如下操作
对第7 ...

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

import openpyxl

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

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

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

    # 保存修改
    wb.save(file_path)

# 示例调用
delete_empty_rows('your_excel_file.xlsx', 'sheet3')

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

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 删除excel中空行