Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.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 2.7 Openpyxl保存错误“;参数必须是字节或unicode,got';布尔'&引用;_Python 2.7_Anaconda_Jupyter_Openpyxl - Fatal编程技术网

Python 2.7 Openpyxl保存错误“;参数必须是字节或unicode,got';布尔'&引用;

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

我正在尝试使用Openpyxl v2.3.2自动化Excel仪表板。我正在使用一个jupyter笔记本(Anaconda4.11)使用Python 2.7运行我的代码

我有一个现有的电子表格,我正试图修改,然后保存。在玩了一些游戏之后,我注意到它没有正确保存,所以我把每张表(一张一张)放到一个新的电子表格中,并再次尝试保存它。我注意到它每次都抛出相同的错误。下面是我正在运行的代码(非常简单)

返回错误

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'
顶部的错误向我表明边框格式有问题(或不兼容),但在使用了一些边框样式之后,我似乎无法修复它

这是我试图保存的文档的屏幕截图

其他资料:

  • Dashboard.xlsx不受影响(可能是因为如果我重新启动内核而不保存更改,它会被垃圾收集),但输出文档TVXL.xlsx已损坏,无法打开
  • 抛出的错误在serialisable.pyc中,但我无法通过读取它来判断该函数做了什么,或者它是如何传递的
  • 在我的电子表格截图中,我添加了虚拟数据,因为它是敏感信息
  • 希望您能帮助我解决这个问题,因为这是第一次真正演示python在我的业务领域有多么强大


    提前谢谢。

    您至少应该尝试更新到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'