Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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 openpyxl-仅写工作表无法添加表_Python_Excel_Openpyxl - Fatal编程技术网

Python openpyxl-仅写工作表无法添加表

Python openpyxl-仅写工作表无法添加表,python,excel,openpyxl,Python,Excel,Openpyxl,我想写一个新的工作簿,有一张工作表,并在该工作表中添加一个表格。如果可能的话,这次提交就可以了 但当我尝试这样做时,它失败了,并显示以下消息: KeyError: 'Unknown relationship: None' 我的代码片段是: from openpyxl import Workbook from openpyxl.worksheet.table import Table wb = Workbook(write_only=True) ws = wb.create_sheet()

我想写一个新的工作簿,有一张工作表,并在该工作表中添加一个表格。如果可能的话,这次提交就可以了

但当我尝试这样做时,它失败了,并显示以下消息:

KeyError: 'Unknown relationship: None'
我的代码片段是:

from openpyxl import Workbook
from openpyxl.worksheet.table import Table

wb = Workbook(write_only=True)
ws = wb.create_sheet()

ws.append(['col1','col2','col3','col4'])
ws.append(['val11','val12','val13','val14'])
ws.append(['val21','val22','val23','val24'])
ws.append(['val31','val32','val33','val34'])
ws.append(['val41','val42','val43','val44'])

table = Table(displayName="basetable", ref="A1:D4")
ws.add_table(table)
wb.save('table.xlsx')
完整回溯是:

File "<stdin>", line 1, in <module>
    wb.save('table.xlsx')

File "./site-packages/openpyxl/workbook/workbook.py", line 354, in save
    save_dump(self, filename)

File "./site-packages/openpyxl/writer/excel.py", line 313, in save_dump
    writer.save(filename)

File "./site-packages/openpyxl/writer/excel.py", line 266, in save
    self.write_data()

File "./site-packages/openpyxl/writer/excel.py", line 83, in write_data
    self._write_worksheets()

File "./site-packages/openpyxl/writer/excel.py", line 229, in _write_worksheets
    ws._rels[t._rel_id].Target = t.path

File "./site-packages/openpyxl/packaging/relationship.py", line 97, in __getitem__    
    raise KeyError("Unknown relationship: {0}".format(key))
文件“”,第1行,在
wb.save('table.xlsx')
文件“/site packages/openpyxl/workbook/workbook.py”,第354行,保存
保存转储(自身,文件名)
文件“/site packages/openpyxl/writer/excel.py”,第313行,在save_dump中
writer.save(文件名)
文件“/site packages/openpyxl/writer/excel.py”,第266行,保存
self.write_data()
文件“/site packages/openpyxl/writer/excel.py”,第83行,在write_数据中
自己写工作表()
文件“/site packages/openpyxl/writer/excel.py”,第229行,在工作表中
ws.\u rels[t.\u rel\u id].Target=t.path
文件“/site packages/openpyxl/packaging/relationship.py”,第97行,在
raise KeyError(“未知关系:{0}”。格式(键))
问题:仅写工作表无法添加表

试过你的例子得到:

AttributeError: 'WriteOnlyWorksheet' object has no attribute 'add_table'
已删除
write_only=True
,工作正常

输出

使用Python:3.4.2和2.7.9-openpyxl:2.4.1-LibreOffice:4.3.2测试

问题:仅写工作表无法添加表

试过你的例子得到:

AttributeError: 'WriteOnlyWorksheet' object has no attribute 'add_table'
已删除
write_only=True
,工作正常

输出


使用Python:3.4.2和2.7.9进行测试-openpyxl:2.4.1-LibreOffice:4.3.2

忘记提及:我正在使用Python 2.7,并在Ubuntu 16.04上使用openpyxl的当前版本(2.4.8)和预发布版本(2.5.0a3)测试了这段代码。忘记提及:我正在使用Python 2.7,并在当前版本(2.4.8)中测试了这段代码以及Ubuntu 16.04上的openpyxl预发行版(2.5.0a3)谢谢您的回答。正如我在最初的帖子中指出的那样,
add_table
方法是作为问题的修复而添加的,并包含在版本中,因此如果您能在更新的版本上测试代码,我将不胜感激。@ClaudioNovoa:很抱歉,无法使用其他版本进行测试。如果您在问题中添加注释,说明可以使用
add\u table
而不使用
write\u only=True
,我将删除此答案。谢谢您的回答。正如我在最初的帖子中指出的那样,
add_table
方法是作为问题的修复而添加的,并包含在版本中,因此如果您能在更新的版本上测试代码,我将不胜感激。@ClaudioNovoa:很抱歉,无法使用其他版本进行测试。如果您在问题中添加注释,说明可以使用
add_table
而不使用
write_only=True
,我将删除此答案。