如何用Python(Jupyter)提取PDS Excel中已勾选复选框的值?
提取Excel中复选框选中状态的实现方案
场景1:单元格内显示符号型复选框(如☐/☒)
这种情况是用文本符号模拟复选框,直接读取单元格内容判断即可,推荐用pandas或openpyxl实现:
代码示例(pandas)
import pandas as pd # 读取Excel文件 df = pd.read_excel("你的PDS文件路径.xlsx") # 定义函数提取婚姻状态 def get_marital_status(cell_text): if "☒" in cell_text: if "已婚" in cell_text: return "已婚" elif "单身" in cell_text: return "单身" return None # 应用函数到目标列(假设列名为"婚姻状况") df["提取的婚姻状态"] = df["婚姻状况"].apply(get_marital_status) # 查看结果 print(df[["婚姻状况", "提取的婚姻状态"]])
代码示例(openpyxl)
from openpyxl import load_workbook wb = load_workbook("你的PDS文件路径.xlsx") ws = wb.active # 或指定工作表名 ws = wb["Sheet1"] # 遍历目标单元格(假设在A列) for row in ws.iter_rows(min_row=2, max_col=1, values_only=True): cell_text = row[0] if cell_text: if "☒" in cell_text: if "已婚" in cell_text: print(f"婚姻状况:已婚") elif "单身" in cell_text: print(f"婚姻状况:单身") wb.close()
场景2:Excel表单控件复选框
如果是插入的表单控件复选框,需要用win32com.client操作(仅Windows环境支持):
import win32com.client as win32 # 启动Excel应用 excel = win32.gencache.EnsureDispatch("Excel.Application") excel.Visible = False # 后台运行 # 打开工作簿 wb = excel.Workbooks.Open("你的PDS文件路径.xlsx") ws = wb.Worksheets("Sheet1") # 指定工作表名 # 遍历工作表中的所有控件 for shape in ws.Shapes: if shape.Type == 8: # 8代表表单控件复选框 # 复选框的关联单元格存储状态(1=勾选,0=未勾选) linked_cell = shape.ControlFormat.LinkedCell if linked_cell: cell_value = ws.Range(linked_cell).Value # 根据复选框标题判断对应状态 if shape.TextFrame2.TextRange.Text == "单身" and cell_value == 1: print("婚姻状况:单身") elif shape.TextFrame2.TextRange.Text == "已婚" and cell_value == 1: print("婚姻状况:已婚") # 关闭工作簿和Excel wb.Close(SaveChanges=False) excel.Quit()
内容的提问来源于stack exchange,提问作者Zeena Marquez
相关产品推荐
相关产品推荐

