鱼C论坛

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

删除excel中空行

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

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

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

x
需要对excel 的指定sheet“sheet3”做如下操作
1、对第7行开始,到出现第一行“第一列的数据不为空”的行数之间的空行,全部删除
2、对第200行开始,倒着往上查,到出现第一行“第一列的数据不为空”的行数之间的空行,留一行,其他全部删除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[sheet_name]
    
    # 删除第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[1:]:
        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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[sheet_name]

    # 删除第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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 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[0].value is not None)
    max_total_rows = 30

    if non_empty_row_count >= max_total_rows:
        # 删除所有空行
        for row in reversed(rows):
            if row[0].value is None:
                sheet.delete_rows(row[0].row)
    else:
        # 删除空行直到总行数为30
        current_row_count = len(rows)
        rows_to_keep = []
        
        for row in reversed(rows):
            if row[0].value is None:
                sheet.delete_rows(row[0].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[0].row, amount=1)
                for cell in row:
                    sheet.cell(row=row[0].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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 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[sheet_name]
    
    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 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 04:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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