Python 2.7 Openpyxl保存错误“;参数必须是字节或unicode,got';布尔'&引用;
我正在尝试使用Openpyxl v2.3.2自动化Excel仪表板。我正在使用一个jupyter笔记本(Anaconda4.11)使用Python 2.7运行我的代码 我有一个现有的电子表格,我正试图修改,然后保存。在玩了一些游戏之后,我注意到它没有正确保存,所以我把每张表(一张一张)放到一个新的电子表格中,并再次尝试保存它。我注意到它每次都抛出相同的错误。下面是我正在运行的代码(非常简单) 返回错误Python 2.7 Openpyxl保存错误“;参数必须是字节或unicode,got';布尔'&引用;,python-2.7,anaconda,jupyter,openpyxl,Python 2.7,Anaconda,Jupyter,Openpyxl,我正在尝试使用Openpyxl v2.3.2自动化Excel仪表板。我正在使用一个jupyter笔记本(Anaconda4.11)使用Python 2.7运行我的代码 我有一个现有的电子表格,我正试图修改,然后保存。在玩了一些游戏之后,我注意到它没有正确保存,所以我把每张表(一张一张)放到一个新的电子表格中,并再次尝试保存它。我注意到它每次都抛出相同的错误。下面是我正在运行的代码(非常简单) 返回错误 TypeError: Argument must be bytes or unicode, g
TypeError: Argument must be bytes or unicode, got 'bool'
完整错误消息中最相关的部分是:
C:\Users\v7736101\AppData\Local\Continuum\Anaconda2\lib\site-packages\openpyxl\writer\styles.pyc in write_table(self)
32 self._write_fonts()
33 self._write_fills()
---> 34 self._write_borders()
35
36 self._write_named_styles()
C:\Users\v7736101\AppData\Local\Continuum\Anaconda2\lib\site-packages\openpyxl\writer\styles.pyc in _write_borders(self)
66 borders_node = SubElement(self._root, 'borders', count="%d" % len(self.wb._borders))
67 for border in self.wb._borders:
---> 68 borders_node.append(border.to_tree())
69
70 def _write_named_styles(self):
C:\Users\v7736101\AppData\Local\Continuum\Anaconda2\lib\site-packages\openpyxl\descriptors\serialisable.pyc in to_tree(self, tagname, idx, namespace)
97 del attrs[key]
98
---> 99 el = Element(tagname, attrs)
100
101 for child_tag in self.__elements__:
lxml.etree.pyx in lxml.etree.Element (src\lxml\lxml.etree.c:75395)()
apihelpers.pxi in lxml.etree._makeElement (src\lxml\lxml.etree.c:16379)()
apihelpers.pxi in lxml.etree._makeElement (src\lxml\lxml.etree.c:16236)()
apihelpers.pxi in lxml.etree._initNodeAttributes (src\lxml\lxml.etree.c:18647)()
apihelpers.pxi in lxml.etree._addAttributeToNode (src\lxml\lxml.etree.c:18846)()
apihelpers.pxi in lxml.etree._utf8 (src\lxml\lxml.etree.c:30113)()
TypeError: Argument must be bytes or unicode, got 'bool'
顶部的错误向我表明边框格式有问题(或不兼容),但在使用了一些边框样式之后,我似乎无法修复它
这是我试图保存的文档的屏幕截图
其他资料:
提前谢谢。您至少应该尝试更新到2.3.5,但我怀疑您正在阅读的文件中的样式有问题。如果新版本的问题仍然存在,那么我建议您在openpyxl bugtracker上创建一个bug,并包含一个示例仪表板文件。我认为该版本是Anaconda可用的最新版本,在提交bug之前,我将听取您的建议并尝试使用纯python。非常感谢。我也犯了同样的错误。我们发现问题在于excel中有一些特殊字符或格式是openpyxl无法识别的。这些属性非常少见,例如,在我的excel中,是一个带有斜线框的框导致了问题。您至少应该尝试更新到2.3.5,但我怀疑您正在阅读的文件中的样式有问题。如果新版本的问题仍然存在,那么我建议您在openpyxl bugtracker上创建一个bug,并包含一个示例仪表板文件。我认为该版本是Anaconda可用的最新版本,在提交bug之前,我将听取您的建议并尝试使用纯python。非常感谢。我也犯了同样的错误。我们发现问题在于excel中有一些特殊字符或格式是openpyxl无法识别的。这些属性非常少见,例如,在我的excel中,是一个带有对角线边框的框导致了问题
C:\Users\v7736101\AppData\Local\Continuum\Anaconda2\lib\site-packages\openpyxl\writer\styles.pyc in write_table(self)
32 self._write_fonts()
33 self._write_fills()
---> 34 self._write_borders()
35
36 self._write_named_styles()
C:\Users\v7736101\AppData\Local\Continuum\Anaconda2\lib\site-packages\openpyxl\writer\styles.pyc in _write_borders(self)
66 borders_node = SubElement(self._root, 'borders', count="%d" % len(self.wb._borders))
67 for border in self.wb._borders:
---> 68 borders_node.append(border.to_tree())
69
70 def _write_named_styles(self):
C:\Users\v7736101\AppData\Local\Continuum\Anaconda2\lib\site-packages\openpyxl\descriptors\serialisable.pyc in to_tree(self, tagname, idx, namespace)
97 del attrs[key]
98
---> 99 el = Element(tagname, attrs)
100
101 for child_tag in self.__elements__:
lxml.etree.pyx in lxml.etree.Element (src\lxml\lxml.etree.c:75395)()
apihelpers.pxi in lxml.etree._makeElement (src\lxml\lxml.etree.c:16379)()
apihelpers.pxi in lxml.etree._makeElement (src\lxml\lxml.etree.c:16236)()
apihelpers.pxi in lxml.etree._initNodeAttributes (src\lxml\lxml.etree.c:18647)()
apihelpers.pxi in lxml.etree._addAttributeToNode (src\lxml\lxml.etree.c:18846)()
apihelpers.pxi in lxml.etree._utf8 (src\lxml\lxml.etree.c:30113)()
TypeError: Argument must be bytes or unicode, got 'bool'