Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法通过writer.save保存excel_Python_Excel_Pandas - Fatal编程技术网

Python 无法通过writer.save保存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

我试图将数据框添加到现有excel文件中,我阅读了以下问题的答案:

但我仍然有一些问题:

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?