如何使用Python将Excel工作表中的一行复制到另一个工作表

3
我希望能够比较每行中给定列的值和另一个值,如果这些值相等,我想将整个行复制到另一个电子表格中。如何使用Python实现这一点?谢谢!
2个回答

3
请参考Python的Excel库xlrd(用于读取Excel)/xlwt(用于写入Excel)。你可以访问http://www.python-excel.org/了解更多信息。
例如,读取Excel文件可以参考以下链接:http://www.pythonclub.org/python-files/excel
import xlrd

fname = "sample.xls"
bk = xlrd.open_workbook(fname)
shxrange = range(bk.nsheets)
try:
    sh = bk.sheet_by_name("Sheet1")
except:
    print "no sheet in %s named Sheet1" % fname
    return None
nrows = sh.nrows
ncols = sh.ncols
print "nrows %d, ncols %d" % (nrows,ncols)

cell_value = sh.cell_value(1,1)
print cell_value

row_list = []
for i in range(1,nrows):
    row_data = sh.row_values(i)
    row_list.append(row_data)

如果你正在处理Excel 2007,那么使用openpyxlhttp://packages.python.org/openpyxl/


但是我已经在使用openpyxl了。你有什么想法如何使用openpyxl轻松完成这个任务? - DanielY
@Daniel 网站上的文档非常清晰(http://packages.python.org/openpyxl/tutorial.html#accessing-one-cell),从workbook1读取一行并保存到listA中,然后从workbook2读取一行并保存到listB中,最后比较它们的每个元素。或者你能具体说明你无法解决的问题吗? - Shawn Zhang
谢谢!我个人也试过了。xlrd+xlwt 似乎比 openpyxl 更好地保留了格式。 - DanielY
@Daniel,用Python做这个真的很麻烦,你考虑过通过Python Win Com操作电子表格吗?我没有深入研究过,但相信COM会节省一些麻烦。 - Shawn Zhang
@Daniel:但是xlrd和xlwt无法处理.xlsx格式的数据。我有同样的需求,但是只想处理.xlsx文件。如果有任何指针,请告诉我。 - rose
显示剩余3条评论

0
对于“xls”文件,可以使用xlutils包。由于Excel格式的结构存在许多依赖关系需要管理,因此目前在openpyxl中无法在工作簿之间复制对象。因此,客户端代码有责任手动复制所需的所有内容。如果时间允许,我们可能会尝试将一些xlutils功能移植到openpyxl中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接