我有几个excel文件,它们使用大量注释来保存信息。 例如,一个单元格的值为2,并且单元格附有注释 “2008:2#2009:4”。似乎价值2是当前年份(2010年)的价值。注释将所有上一年的值保持为“#”。我想创建一个字典来保存所有这些信息,如{2008:2,2009:4,2010:2},但我不知道如何解析(或阅读)附加到单元格的这个评论。 Python excel readin模块有这个功能(在评论中阅读)?
答案 0 :(得分:3)
通常从Excel读取,我建议使用xlrd,但xlrd不支持注释。所以改为使用Excel COM对象:
from win32com.client import Dispatch
xl = Dispatch("Excel.Application")
xl.Visible = True
wb = xl.Workbooks.Open("Book1.xls")
sh = wb.Sheets("Sheet1")
comment = sh.Cells(1,1).Comment.Text()
以下是解析评论的方法:
comment = "2008:2#2009:4"
d = {}
for item in comment.split('#'):
key, val = item.split(':')
d[key] = val
通常,Excel注释分为两行,第一行注明谁创建了注释。如果是这样,您的代码看起来会更像这样:
comment = """Steven:
2008:2#2009:4"""
_, comment = comment.split('\n')
d = {}
for item in comment.split('#'):
key, val = item.split(':')
d[key] = val
答案 1 :(得分:0)
您可以使用openpyxl
from openpyxl import load_workbook
workbook = load_workbook('/tmp/data.xlsx')
first_sheet = workbook.get_sheet_names()[0]
worksheet = workbook.get_sheet_by_name(first_sheet)
for row in worksheet.iter_rows():
for cell in row:
if cell.comment:
print(cell.comment.text)
评论本身的解析可以像Steven Rumbalski的答案一样进行。
(示例改编自here)
答案 2 :(得分:0)
在这里运行最后发布的代码后,您可以稍后将该信息存储在 Word 文档中吗?
from openpyxl import load_workbook
workbook = load_workbook('/tmp/data.xlsx')
first_sheet = workbook.get_sheet_names()[0]
worksheet = workbook.get_sheet_by_name(first_sheet)
for row in worksheet.iter_rows():
for cell in row:
if cell.comment:
print(cell.comment.text)