Python 无法通过writer.save保存excel
我试图将数据框添加到现有excel文件中,我阅读了以下问题的答案: 但我仍然有一些问题:Python 无法通过writer.save保存excel,python,excel,pandas,Python,Excel,Pandas,我试图将数据框添加到现有excel文件中,我阅读了以下问题的答案: 但我仍然有一些问题: IndexError Traceback (most recent call last) <ipython-input-3-3ca40cf2bef3> in <module>() 17 18 df_selection2.to_excel(writer,sheet_name='Selection',st
IndexError Traceback (most recent call last)
<ipython-input-3-3ca40cf2bef3> in <module>()
17
18 df_selection2.to_excel(writer,sheet_name='Selection',startrow=7, startcol=6,header=False, index=False)
---> 19 writer.save()
20
21 #df_selection2.to_excel(writer,sheet_name='Selection',startrow=7, startcol=6,header=False, index=False)
C:\Anaconda3\lib\site-packages\pandas\io\excel.py in save(self)
725 Save workbook to disk.
726 """
--> 727 return self.book.save(self.path)
728
729 def write_cells(self, cells, sheet_name=None, startrow=0, startcol=0):
C:\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.py in save(self, filename)
337 save_dump(self, filename)
338 else:
--> 339 save_workbook(self, filename)
340
341
C:\Anaconda3\lib\site-packages\openpyxl\writer\excel.py in save_workbook(workbook, filename)
266 archive = ZipFile(filename, 'w', ZIP_DEFLATED, allowZip64=True)
267 writer = ExcelWriter(workbook, archive)
--> 268 writer.save(filename)
269 return True
270
C:\Anaconda3\lib\site-packages\openpyxl\writer\excel.py in save(self, filename)
248 def save(self, filename):
249 """Write data into the archive."""
--> 250 self.write_data()
251 self.archive.close()
252
C:\Anaconda3\lib\site-packages\openpyxl\writer\excel.py in write_data(self)
91 archive.writestr(ARC_STYLE, tostring(stylesheet))
92
---> 93 archive.writestr(ARC_WORKBOOK, write_workbook(self.workbook))
94 archive.writestr(ARC_WORKBOOK_RELS, write_workbook_rels(self.workbook))
95
C:\Anaconda3\lib\site-packages\openpyxl\writer\workbook.py in write_workbook(workbook)
86
87 # book views
---> 88 active = get_active_sheet(wb)
89 view = BookView(activeTab=active)
90 root.bookViews =[view]
C:\Anaconda3\lib\site-packages\openpyxl\writer\workbook.py in get_active_sheet(wb)
58 """
59 idx = wb._active_sheet_index
---> 60 sheet = wb.active
61 if sheet.sheet_state == "visible":
62 return idx
C:\Anaconda3\lib\site-packages\openpyxl\workbook\workbook.py in active(self)
128 def active(self):
129 """Get the currently active sheet"""
--> 130 return self._sheets[self._active_sheet_index]
131
132 @active.setter
IndexError: list index out of range
索引器错误回溯(最近一次调用)
在()
17
18 df_selection2.to_excel(编写器,工作表名称='Selection',startrow=7,startcol=6,header=False,index=False)
--->19.保存
20
21#df#u Selection 2.to_excel(编写器,工作表名称='Selection',startrow=7,startcol=6,header=False,index=False)
保存中的C:\Anaconda3\lib\site packages\pandas\io\excel.py(self)
725将工作簿保存到磁盘。
726 """
-->727返回self.book.save(self.path)
728
729 def写入单元(自身、单元、工作表名称=无、startrow=0、startcol=0):
保存中的C:\Anaconda3\lib\site packages\openpyxl\workbook\workbook.py(self,文件名)
337保存转储(自身,文件名)
338其他:
-->339保存工作簿(自我,文件名)
340
341
保存工作簿(工作簿,文件名)中的C:\Anaconda3\lib\site packages\openpyxl\writer\excel.py
266 archive=ZipFile(文件名为'w',压缩,允许zip64=True)
267 writer=ExcelWriter(工作簿、存档)
-->268 writer.save(文件名)
269返回真值
270
保存中的C:\Anaconda3\lib\site packages\openpyxl\writer\excel.py(self,文件名)
248 def保存(自我,文件名):
249“将数据写入存档”
-->250 self.write_data()
251 self.archive.close()
252
C:\Anaconda3\lib\site packages\openpyxl\writer\excel.py in write_data(self)
91 archive.writest(ARC_样式,tostring(样式表))
92
--->93存档.写入(ARC_工作簿,写入_工作簿(self.工作簿))
94存档。写入(ARC_工作簿,写入工作簿(self.工作簿))
95
C:\Anaconda3\lib\site packages\openpyxl\writer\workbook.py在write\u工作簿(工作簿)中
86
87#书籍视图
--->88活动=获取活动工作表(wb)
89视图=书本视图(活动选项卡=活动)
90 root.bookViews=[view]
获取活动工作表(wb)中的C:\Anaconda3\lib\site packages\openpyxl\writer\workbook.py
58 """
59 idx=wb.\u活动\u工作表\u索引
--->60张=wb.active
61如果sheet.sheet_状态=“可见”:
62返回idx
C:\Anaconda3\lib\site packages\openpyxl\workbook\workbook.py处于活动状态(self)
128 def激活(自):
129“获取当前活动的工作表”
-->130返回自工作表[自工作表索引]
131
132@active.setter
索引器:列表索引超出范围
这是因为我要修改的选项卡处于隐藏状态吗?问题是,您
将工作簿
加载到变量wb\u target
,然后尝试分配给名为wb\u target
的writer
属性<默认情况下,code>writer没有该属性。因此,当您分配它时,您创建了它。这不会带来任何好处
相反,您需要将其指定给正确的属性,即book
。在这个例子中,这是令人困惑的,因为他们使用的变量是book
,所以您可能假设这两个变量必须相同。他们没有
这是您重新编写的代码,应该可以正常工作
import pandas as pd
import numpy as np
from openpyxl import load_workbook
filename = 'template.xlsx'
wb_target = load_workbook(filename)
writer = pd.ExcelWriter(filename, engine='openpyxl')
# my key change
writer.book = wb_target
writer.sheets = dict((ws.title, ws) for ws in wb_target.worksheets)
df_selection2.to_excel(
writer, sheet_name='Selection', startrow=7,
startcol=6, header=False, index=False)
writer.save()
问题是
将工作簿加载到变量wb\u target
,然后尝试分配给名为wb\u target
的writer
属性<默认情况下,code>writer
没有该属性。因此,当您分配它时,您创建了它。这不会带来任何好处
相反,您需要将其指定给正确的属性,即book
。在这个例子中,这是令人困惑的,因为他们使用的变量是book
,所以您可能假设这两个变量必须相同。他们没有
这是您重新编写的代码,应该可以正常工作
import pandas as pd
import numpy as np
from openpyxl import load_workbook
filename = 'template.xlsx'
wb_target = load_workbook(filename)
writer = pd.ExcelWriter(filename, engine='openpyxl')
# my key change
writer.book = wb_target
writer.sheets = dict((ws.title, ws) for ws in wb_target.worksheets)
df_selection2.to_excel(
writer, sheet_name='Selection', startrow=7,
startcol=6, header=False, index=False)
writer.save()
是否尝试取消隐藏选项卡,然后将数据框保存到Excel?是否尝试取消隐藏选项卡,然后将数据框保存到Excel?