Python使用xlwings重命名未保存的活动Excel工作簿和工作表
问题解答
报错原因
fullname 是xlwings封装的只读属性,仅支持读取工作簿的完整存储路径,不能直接赋值修改,因此运行修改代码会抛出AttributeError: can't set attribute错误。
需求实现方案
该需求可以实现,工作表重命名不需要保存文件,工作簿重命名仅需要暂存到系统临时目录,不需要你手动指定永久存储路径,不会影响后续的自定义保存操作。
完整操作代码如下:
import xlwings as xw import tempfile import os import pandas as pd # 示例DataFrame,可替换为你自己的df df = pd.DataFrame({"序号": [1,2,3], "内容": ["测试1", "测试2", "测试3"]}) # 打开DataFrame到Excel xw.view(df) # 获取当前激活的工作簿 active_wb = xw.books.active # 1. 重命名工作表(无需保存即可生效) # 这里修改的是第一个工作表的名称,可按需调整 active_wb.sheets[0].name = "业务数据表" # 2. 重命名工作簿(仅暂存到系统临时目录,无需指定自定义路径) target_workbook_name = "Report" # 拼接临时文件完整路径 temp_file_path = os.path.join(tempfile.gettempdir(), f"{target_workbook_name}.xlsx") # 保存到临时路径,工作簿名称自动更新为你设置的名称 active_wb.save(temp_file_path)
注意事项
- 仅修改工作表名称的场景下,不需要执行第二步的暂存操作,直接修改
sheet.name即可即时生效 - 暂存到系统临时目录的文件会被系统自动清理,不会占用你自定义的存储空间,后续你可以正常在Excel界面执行「另存为」操作,把文件存到你想要的任意位置
内容的提问来源于stack exchange,提问作者stacksideways
相关产品推荐
相关产品推荐

