使用Python轻松填写Excel文件的方法

6
假设我有一个名为test.xlsx的Excel文件,这是一个包含三个工作表的工作簿,其中第一个工作表名为hello1,第二个工作表名为hello2,第三个工作表名为bye
现在,我想读取文件并重新写入相同的文件,但仅更改名为hello2的工作表中(列B,行11)和名为bye的工作表中的(列D,行14)值。我想要赋予的值分别为字符串“test”和数字135(即在hello2工作表中写入test,在bye工作表中写入14)。
您可能会想为什么我会问这样奇怪的问题,但基本上我正在寻求获得以下技能/知识:
  • 使用Python能够读取工作簿和Excel文件中特定的工作表
  • 使用Python能够在给定位置写入Excel工作表
注意:为了参考,我可以在Redhat服务器上使用任何版本的Python,Excel文件是在我的Mac上生成的,使用Excel for Mac 2011保存为xlsx格式,版本为14.0.1,然后我将Excel文件复制到Redhat服务器。

如果它被保存为Excel 97格式,为什么文件名是test.xlsx?如果您能确定它的版本(以及您想要输出的Excel版本),那将非常有用。 - Jon Clements
@Jon Clements 对不起,你是对的,是使用 Excel for Mac 2011 版本14.0.1 保存为 xlsx 格式的 - 我刚刚更新了 Q。 - Dnaiel
1
你有没有看过Python的xlwt、xlrd和xlutils模块?(http://www.python-excel.org) - scohe001
@josh,非常好的建议,我现在正在研究它。 - Dnaiel
1个回答

11

我建议使用xlwtxlrdxlutils模块(可以在这里找到:python-excel.org)。

使用xlrdxlwtxlutils,你可以使用xlrd读取工作簿,然后使用xlutils创建一个可写的副本。由于你所做的事情并不依赖于单元格中已有的值,所以除了打开工作簿外,你根本不需要使用xlrd

你的代码的一个快速示例会像这样:

import xlrd, xlwt
from xlutils.copy import copy

read_book = xlrd.open_workbook("Path/To/Doc", formatting_info=True) #Make Readable Copy
write_book = copy(read_book) #Make Writeable Copy

write_sheet1 = write_book.get_sheet(1) #Get sheet 1 in writeable copy
write_sheet1.write(1, 11, 'test') #Write 'test' to cell (B, 11)

write_sheet2 = write_book.get_sheet(2) #Get sheet 2 in writeable copy
write_sheet2.write(3, 14, '135') #Write '135' to cell (D, 14)

write_book.save("New/File/Path") #Save the newly written copy. Enter the same as the old path to write over

新副本中是否保留了原始副本中的所有Excel公式? - trazoM
xlrt / xlwt 被认为是过时的(https://groups.google.com/g/python-excel/c/P6TjJgFVjMI/m/g8d0eWxTBQAJ),因为它们只能读写 XLS 文件,即旧版 Excel 格式(2003 年之前)。如果要读写 XLSX 文件,请参考:https://foss.heptapod.net/openpyxl/openpyxl - undefined
@Jose 如果你用openpyxl给这个问题提供一个新的答案,并指出xlrt/xlwt已经过时,你将得到我的点赞 :) - undefined

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