使用openpyxl与Python处理Excel时无法匹配Data工作表的问题
解决方法
首先纠正一个误解:你看到的u'不是UTF-8前缀,是Python 2中Unicode字符串的标识,问题本质是工作表名大小写不匹配(模板文件里的工作表实际是小写data,但你代码里判断的是大写Data),再加上Python 2中字符串类型(str/unicode)的差异可能影响判断,以下是具体解决办法:
方案1:精确匹配或大小写不敏感判断
- 直接匹配实际小写名称:
WorkbookTemplate = openpyxl.load_workbook("Template.xlsx") if "data" in WorkbookTemplate.sheetnames: WorkSheetTemplate = WorkbookTemplate["data"]
- 或者做大小写不敏感判断,避免未来名称大小写变动的问题:
WorkbookTemplate = openpyxl.load_workbook("Template.xlsx") target_sheet = None for sheet_name in WorkbookTemplate.sheetnames: if sheet_name.lower() == "data": target_sheet = WorkbookTemplate[sheet_name] break if target_sheet: # 后续处理逻辑 pass
方案2:统一字符串类型(针对Python 2)
在Python 2中,若你的代码使用的是普通str类型字符串,而sheetnames返回的是unicode类型,直接判断可能出现异常,可将判断字符串转为unicode:
WorkbookTemplate = openpyxl.load_workbook("Template.xlsx") if u"data" in WorkbookTemplate.sheetnames: WorkSheetTemplate = WorkbookTemplate[u"data"]
额外提示
如果不确定模板里的工作表名细节,直接打印原始列表(不要转成str),能看到最准确的名称:
print(WorkbookTemplate.sheetnames)
内容的提问来源于stack exchange,提问作者Cliff
相关产品推荐
相关产品推荐

