6

假设我有一个名为test.xlsx的 excel 文件,这是一个包含三张工作表的工作簿,其中 sheet1 称为hello1, sheet2 两张称为hello2, sheet3 称为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.14.0.1版本保存为xlsx格式,然后我将excel文件复制到redhat服务器.

4

1 回答 1

11

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

使用和xlrd,您可以阅读工作簿,然后用于制作可写副本。由于您所做的不依赖于单元格中已有的值,因此除了打开书本之外,您根本不需要使用。xlwtxlutilsxlrdxlutilsxlrd

您的代码的快速模型如下所示:

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
于 2013-08-24T23:02:53.357 回答