xlwings中clear/clear_contents无法清除图表,求Python解决方案
解决xlwings清除Excel工作表内容及旧图表的问题
你遇到的核心问题是只清除了单元格内容,但没处理工作表里已存在的旧图表。之前调用的chart.delete()是针对你新创建的图表对象,对之前生成的旧图表无效。
修改后的代码可以先遍历并删除工作表中所有已有的图表,再清除单元格内容,最后创建新图表:
import xlwings as xw def main(): wb = xw.Book.caller() sheet = wb.sheets('Sheet') # 遍历并删除工作表中所有图表 for chart in sheet.charts: chart.delete() # 清除指定区域的内容和格式 sheet.range('A1:P200').clear() # 写入新数据 sheet.range('A1').value = [['Foo1', 'Foo2'], [1, 2]] # 添加新图表并设置数据源 chart = sheet.charts.add(left=410, top=0, width=355, height=211) chart.set_source_data(sheet.range('A1').expand())
这样每次点击宏按钮时,会先把工作表里的旧图表全部删除,再清空单元格内容,确保新图表能干净地放置。
内容的提问来源于stack exchange,提问作者askqs
相关产品推荐
相关产品推荐

