我有一个.xlsx文件。其中的某些单元格有注释,此后将使用哪些内容。如何检查,遍历每个单元格(如果有注释)?这段代码(我尝试迭代第三列,而没有其他任何操作)返回错误:
import win32com.client, win32gui, re
xl = win32com.client.Dispatch("Excel.Application")
xl.Visible = 1
TempExchFilePath = win32gui.GetOpenFileNameW()[0]
wb = xl.Workbooks.Open(TempExchFilePath)
sh = wb.Sheets("Sheet1")
comments = None
for i in range (0,201,1):
if sh.Cells(2,i).Comment.Text() != None:
comment = sh.Cells(2,i).Comment.Text()
comments += comment
print(comments)
input()
我对Python非常陌生,对我的英语感到抱歉。谢谢!:3
我认为这是使用Python Excel模块的最佳方法,特别是xlrd
假设您有一个工作簿,其中有一个单元格A1,并带有Joe Schmo编写的注释,说“嗨!”,这就是您要达到的目的。
>>> from xlrd import *
>>> wb = open_workbook("test.xls")
>>> sheet = wb.sheet_by_index(0)
>>> notes = sheet.cell_note_map
>>> print notes
{(0, 0): <xlrd.sheet.Note object at 0x00000000033FE9E8>}
>>> notes[0,0].text
u'Schmo, Joe:\nHi!'
快速说明发生了什么
因此xlrd
,一旦您弄清楚了该模块(此处是完整的文档),这是一件非常方便的事情。前两行导入模块并创建一个名为的工作簿对象wb
。接下来,我们创建第一个工作表(索引为0)的工作表对象,并将其称为sheet
(我今天觉得很有创造力)。然后,我们创建一个notes
用cell_note_map
我们的工作表对象的属性调用的注释对象的字典。该词典将注释的(行,列)索引作为键,然后将注释对象作为值。然后,我们可以使用text
note对象的属性提取该注释的文本。
对于多个注释,您可以遍历字典以获取所有文本,如下所示:
>>> comments = []
>>> for key in notes.keys():
... comments.append(notes[key].text)
...
>>> print comments
[u"Schmo, Joe:\nHere's another\n", u'Schmo, Joe:\nhi!']
注意事项
.xls
文件,不适用于.xlsx
,但是您可以将任何文件另存.xlsx
为,.xls
因此没有问题author
属性而不是进行单独访问text
。\n
在作者和文本之间总会有一个隔a 。cell_note_map
。因此,没有任何评论的完整工作表将产生一个空字典本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句