如何检查是否有注释或n

2024-10-01 04:52:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个.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个


Tags: textclientnone内容shcommentxlsxcomments
3条回答

我认为将注释定义为None,然后尝试添加内容(我猜是一个字符串)是行不通的。在

尝试comments = ""而不是comments = None

除此之外,它将有助于明确地看到错误。在

我想这应该行得通。但是,你有

comments = None

然后呢

^{pr2}$

我不认为你能做任何事。很有可能,你要么想这么做

comments = ''
comments += comment

或者

comments = []
comments.append(comment)

另一件事你可能需要解决:

if sh.Cells(2,i).Comment.Text() != None:

(2,i)语法在python中似乎不起作用。更改为Cells[2][i]。另外,如果Comment不存在,那么它将是None,并且没有{}函数。i、 电子邮箱:

if sh.Cells[2][i].Comment != None:
    comment = sh.Cells[2][i].Comment.Text()

这里是我认为最好的方法,使用Python Excel模块,特别是{}

假设您有一个工作簿,其中有一个单元格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模块是一个非常方便的东西,一旦你弄清楚了(完整的文档here)。前两行导入模块并创建一个名为wb的工作簿对象。接下来,我们创建第一个sheet的sheet对象(索引0),并将其命名为sheet(我今天感觉很有创意)。然后,我们使用sheet对象的cell_note_map属性创建一个名为notes的注释对象。这个字典将注释的(行,列)索引作为键,然后以note对象作为值。然后,我们可以使用note对象的text属性提取该注释的文本。在

对于多个注释,您可以在字典中迭代以获取所有文本,如下所示:

^{pr2}$

注意事项

  • {{{cd9}不能保存任何文件
  • 注释的作者总是首先列出,但是可以使用author属性而不是text单独访问。在作者和文本之间也总是有一个\n。在
  • 没有注释的单元格将不会被cell_note_map映射。因此,没有任何注释的完整页将产生一个空字典

相关问题 更多 >