Python中如何结合列表使用.format()?Excel转图片循环报错求助
解决excel2img循环导出图片时的范围定位失败问题
原始代码与问题描述
用户尝试通过循环遍历filelist中的工作表名称,批量将Excel工作表导出为图片,但执行时出现报错:
Exception: Failed locating range '{}'!A1:HO29
原始代码如下:
import excel2img import os filelist = [ '1R 1R 1R', '24 54 994', '9d 13 885', ] file_name = "C:/Users/3315/Desktop/fdifndfd.xlsx" img_name ='C:/Users/3315/Desktop/Weekly/company/{}.png' .format(filelist[1]) excel2img.export_img(file_name, img_name, "", "'{}'!A1:HO29") .format(filelist[1])
错误原因
问题出在format()方法的调用位置错误:你把format(filelist[1])写在了excel2img.export_img()方法调用的末尾,这会导致export_img的第三个参数(范围字符串)还是未被替换的'{}'!A1:HO29,程序自然找不到名为{}的工作表,从而抛出定位失败的异常。
修正后的代码
将format()正确应用到需要替换的字符串上,结合循环实现批量导出:
import excel2img import os filelist = [ '1R 1R 1R', '24 54 994', '9d 13 885', ] file_name = "C:/Users/3315/Desktop/fdifndfd.xlsx" # 遍历列表中的每个工作表名称 for sheet_name in filelist: # 生成对应图片路径 img_name = 'C:/Users/3315/Desktop/Weekly/company/{}.png'.format(sheet_name) # 生成正确的范围字符串,先替换再传入export_img range_str = "'{}'!A1:HO29".format(sheet_name) # 调用导出方法 excel2img.export_img(file_name, img_name, "", range_str)
关键说明
- 要确保
range_str在传入export_img之前就完成字符串替换,让它变成类似'1R 1R 1R'!A1:HO29的有效工作表范围格式。 - 循环遍历
filelist时,直接用每个元素作为工作表名称,实现批量处理逻辑。
内容的提问来源于stack exchange,提问作者pynoooob
相关产品推荐
相关产品推荐

