鱼C论坛

 找回密码
 立即注册
查看: 87|回复: 1

复制excel并选择性删除sheet

[复制链接]
发表于 2024-7-26 15:54:08 | 显示全部楼层 |阅读模式

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

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

x
1,原始文件为“原始数据.xlsx”,有多列数据,其中“管线号”列有多个不同的【管线号】,对同一【管线号】列,在“工艺卡编号”列也会有多个【工艺卡编号】对应。
管线号        焊接类型        工艺卡编号
/TRIM-排污-取样器水槽-N1-40-A1TB52-N        对焊        HKB20-02
/TRIM-排污-取样器水槽-N1-40-A1TB52-N        承插焊        HKC20-02
/TRIM-排污-取样器水槽-N1-40-A1TB52-N        承插焊        HKC20-02
/TRIM-排污-取样器水槽-N1-40-A1TB52-N        承插焊        HKC20-02
/TRIM-排污-取样器水槽-N1-40-A1TB52-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        对焊        HKB20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        对焊        HKB20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-安全阀及消声器排水-20-A1TB51-N        承插焊        HKC20-02
/TRIM-排污-排污扩容器V006-C-50-A1TB52-P        对焊        HKB20-02
/TRIM-排污-排污扩容器V006-C-50-A1TB52-P        对焊        HKB20-02




2,对“管线号”列的每个【管线号】,找到模板文件“工艺卡模板.xlsx”并复制,改名为该【管线号】.xlsx
3, 对生成的【管线号】.xlsx,根据对应该管线号的列“工艺卡编号”中“名称为H开头的sheet”,对不在列内的“名称为H开头的sheet”删除
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 6 天前 | 显示全部楼层
要完成这个任务,可以使用 Python 脚本结合 pandas 和 openpyxl 库来处理 Excel 文件。

1. 读取原始数据文件“原始数据.xlsx”。
2. 对于每个唯一的“管线号”,找到对应的“工艺卡编号”,并检查它们是否以“H”开头。
3. 复制“工艺卡模板.xlsx”文件,并重命名为当前“管线号”。
4. 对于每个重命名的文件,删除不包含在原始数据中的以“H”开头的“工艺卡编号”对应的工作表。

首先,需要安装 pandas 和 openpyxl 库(如果尚未安装):

```bash
pip install pandas openpyxl
```

然后,可以使用以下 Python 脚本:

```python
import pandas as pd
from openpyxl import load_workbook
import os

# 读取原始数据
original_data = pd.read_excel('原始数据.xlsx')

# 遍历每个唯一的管线号
for pipeline in original_data['管线号'].unique():
    # 获取当前管线号的所有工艺卡编号
    pipeline_data = original_data[original_data['管线号'] == pipeline]
   工艺卡编号 = pipeline_data['工艺卡编号'].tolist()
   
    # 复制模板文件
    template_path = '工艺卡模板.xlsx'
    new_file_path = f'{pipeline}.xlsx'
    shutil.copy(template_path, new_file_path)
   
    # 加载新的工作簿
    wb = load_workbook(new_file_path)
   
    # 遍历工作簿中的所有工作表
    for sheet_name in wb.sheetnames:
        # 检查工作表是否以'H'开头且在工艺卡编号列表中
        if not (sheet_name.startswith('H') and sheet_name in 工艺卡编号):
            # 删除不符合条件的工作表
            del wb[sheet_name]
   
    # 保存新的工作簿
    wb.save(new_file_path)
    wb.close()
```
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-8 09:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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