使用xlsxwriter调用get_worksheet_by_name返回None的原因排查
问题原因及解决方案
你的问题核心在于xlsxwriter库的定位——它是一个专门用于创建和写入新Excel文件的库,完全不支持读取或修改已存在的Excel文件。
为什么sheet会是None?
当你执行workbook = xlsxwriter.Workbook('result.xlsx')时,xlsxwriter会做这两件事:
- 如果当前目录下没有
result.xlsx,它会创建一个全新的空工作簿 - 如果已经存在同名文件,它会直接覆盖这个文件,生成一个全新的空工作簿
不管哪种情况,这个新创建的工作簿里默认没有任何工作表,所以你调用workbook.get_worksheet_by_name('result')自然找不到对应的工作表,返回None。
如何解决你的需求?
分两种情况处理:
情况1:你想读取并修改已有的result.xlsx文件
xlsxwriter做不到这件事,你需要换用支持读取Excel的库,比如openpyxl或者pandas:
用openpyxl的示例代码:
from openpyxl import load_workbook # 加载已有的Excel文件 workbook = load_workbook('result.xlsx') # 获取名为'result'的工作表 sheet = workbook['result'] # 后续可以对sheet进行操作
情况2:你想用xlsxwriter创建一个包含'result'工作表的新文件
那你需要先手动添加工作表,再获取它:
import xlsxwriter # 创建新工作簿 workbook = xlsxwriter.Workbook('result.xlsx') # 添加名为'result'的工作表 sheet = workbook.add_worksheet('result') # 现在sheet就不是None了,可以开始写入数据 sheet.write('A1', 'Hello World') # 记得关闭工作簿保存内容 workbook.close()
内容的提问来源于stack exchange,提问作者Xin-Yu Hou
相关产品推荐
相关产品推荐

