如何使用xlrd包处理xlsx文件读取错误("断言tvalue不是None")?

时间:2016-02-20 06:13:24

标签: python excel

Python代码下面是阅读xls& xlsx文件。我在阅读xlsx文件时遇到问题。错误是"断言tvalue不是None"

--> workbook=xlrd.open_workbook("/home/perlzuser/sprint12/template.xlsx")
sheet=workbook.sheet_by_index(0)    
data=[[sheet.cell_value(r,c) for c in range(sheet.ncols)]for r in range (sheet.nrows)]
print " ::",data

我的错误:::

  

/home/perlzuser/Enthought/Canopy_32bit/User/lib/python2.7/site-packages/xlrd/xlsx.pyc   在do_row中(self,row_elem)       723其他:       724 bad_child_tag(child_tag)    - > 725断言tvalue不是None       726 self.sheet.put_cell(rowx,colx,XL_CELL_TEXT,tvalue,xf_index)       727否则:

     

的AssertionError:

如何在python中解决此问题?

1 个答案:

答案 0 :(得分:3)

我找到了解决断言错误的方法:

<强>码

import xlrd
from openpyxl import load_workbook

wb = load_workbook("/home/perlzuser/sprint12/template.xlsx")
wb.save("file_new.xlsx")
workbook=xlrd.open_workbook("file_name.xlsx")

sheet=workbook.sheet_by_index(0)

data=[[sheet.cell_value(r,c) for c in range(sheet.ncols)]for r in range (sheet.nrows)]

print "output:", data

代码说明:

  • 这里我使用load_workbook读取文件并将该文件保存为file_new.xlsx。
  • 我只是将实际的xlsx文件(template.xlsx)数据复制到新的xlsx文件(file_new.xlsx)

注意:此复制的file_new.xlsx只能由python代码读取。它将不是人类可读的格式,但您的代码将读取它。您可以使用这些数据存储到DB中或写入其他文件。