2012-09-23 73 views
4

我试图用python创建工作簿,我需要测试不同单元格的值来填充它,但我遇到了一些麻烦。 我使用xlrd and xlwt来创建和编辑excel文件。xlrd和xlwt是否兼容?

我做了一个我的问题的例子,我不明白为什么它不工作。

import xlwt 
import xlrd 
wb = xlwt.Workbook() 
ws = wb.add_sheet('Test') 
ws.write(0,0,"ah") 
cell = ws.cell(0,0) # AttributeError: 'Worksheet' object has no attribute 'cell' 
print cell.value 

我曾想当然地认为,xlrdxlwt共用,可以互相交流类,但它似乎并不如此。如何获取打开的Worksheet对象的单元格值?

+0

一件事是尝试打印'目录(WS)',看看有什么方法/属性的类有。没有看起来像他们获得细胞价值(肯定有办法做到这一点,而不保存,然后用xlrd重新打开)。 –

回答

2

根据我的理解,xlwt和xlrd模块是分开的,用于将整本书读入内存,或将内存中的日期写入文件。如果你打算使用这两个模块,我相信你必须这样做:

1)将整个现有文件读入内存。 (xlrd) 2)编辑内存中的工作簿 3)写出工作簿。 (xlwt)

换句话说,它们不能互换使用。虽然这是一个名为'openpyxl'的模块,但它可以让你创建对象并在运行期间按照上面的方式操作它们。

链接:http://packages.python.org/openpyxl/

+1

还有另外一个软件包'xlutils',它是'xlrd'和'xlwt'之间的桥梁。对于那些需要使用.xls的人来说,这个组合可能是最好的选择。 'openpyxl'不能处理.xls。 –