我有一个.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个
我认为将注释定义为
None
,然后尝试添加内容(我猜是一个字符串)是行不通的。在尝试
comments = ""
而不是comments = None
除此之外,它将有助于明确地看到错误。在
我想这应该行得通。但是,你有
然后呢
^{pr2}$我不认为你能做任何事。很有可能,你要么想这么做
或者
另一件事你可能需要解决:
(2,i)
语法在python中似乎不起作用。更改为Cells[2][i]
。另外,如果Comment
不存在,那么它将是None
,并且没有{这里是我认为最好的方法,使用Python Excel模块,特别是{}
假设您有一个工作簿,其中有一个单元格A1,其中有一个Joe Schmo写的注释,上面写着“嗨!”,下面是你应该怎么做的。在
快速解释发生了什么事
因此,
xlrd
模块是一个非常方便的东西,一旦你弄清楚了(完整的文档here)。前两行导入模块并创建一个名为wb
的工作簿对象。接下来,我们创建第一个sheet的sheet对象(索引0),并将其命名为sheet
(我今天感觉很有创意)。然后,我们使用sheet对象的cell_note_map
属性创建一个名为notes
的注释对象。这个字典将注释的(行,列)索引作为键,然后以note对象作为值。然后,我们可以使用note对象的text
属性提取该注释的文本。在对于多个注释,您可以在字典中迭代以获取所有文本,如下所示:
^{pr2}$注意事项
author
属性而不是text
单独访问。在作者和文本之间也总是有一个\n
。在cell_note_map
映射。因此,没有任何注释的完整页将产生一个空字典相关问题 更多 >
编程相关推荐