如何使用C#按指定参数过滤Excel数据,将不匹配行导出至Errors.xlsx
实现Excel数据过滤并拆分合法/错误数据的两种方案
方案1:Python代码实现(适合大数据量、重复操作场景)
环境准备
- 先安装所需依赖库,打开终端/命令提示符执行:
pip install pandas openpyxl
可直接使用的代码模板
import pandas as pd # 1. 读取原始Excel文件,header=0表示第一行为表头,有多个工作表可加sheet_name参数指定 df = pd.read_excel("ProductList.xlsx", header=0, engine="openpyxl") # 2. 替换下方为你自己的校验规则,所有规则同时满足才判定为合法,多个规则用&连接 # 示例规则:产品ID不为空、价格大于0、库存为正整数,可根据你的参数要求增删 check_mask = ( df["产品ID"].notna() & (df["价格"] > 0) & (df["库存"] > 0) & (df["库存"].apply(lambda x: isinstance(x, int))) ) # 3. 拆分合法数据和错误数据 valid_data = df[check_mask] error_data = df[~check_mask] # 4. 保存文件,不想覆盖原文件可修改保存的文件名 valid_data.to_excel("ProductList.xlsx", index=False, engine="openpyxl") error_data.to_excel("Errors.xlsx", index=False, engine="openpyxl")
新手注意事项
- 代码里的列名必须和你Excel表格的表头完全一致,大小写、前后空格都要匹配
- 不确定规则是否正确时,可以先单独打印某条规则的校验结果测试,比如
print(df["价格"]>0)查看返回的布尔值是否符合预期 - 若错误数据需要标注具体不符合哪项规则,可以在error_data里新增一列存储错误原因,只需在拆分前加对应逻辑即可
方案2:Excel自带高级筛选(适合小数据量、无需重复操作场景)
不需要写代码,直接用Excel内置功能即可完成:
- 在Excel空白区域建立你的规则条件区,第一行写对应表头,第二行写校验条件,比如价格列下方写
>0 - 选中所有原始数据,点击顶部「数据」选项卡中的「高级」筛选按钮
- 筛选方式选择「将筛选结果复制到其他位置」,依次选中原始数据区域、你刚写的条件区域、要存放合法数据的空白起始单元格
- 筛选完成后剩下的未被选中的行就是错误数据,手动复制到Errors.xlsx即可
内容的提问来源于stack exchange,提问作者Kevin Chotaliya
相关产品推荐
相关产品推荐

