我有几个excel文件使用大量注释来保存信息.例如,一个单元格的值为2,并且单元格附有评论"2008:2#2009:4".似乎价值2是当前年份(2010年)的价值.注释将所有上一年的值保持为"#".我想创建一个字典来保存所有这些信息,如{2008:2,2009:4,2010:2},但我不知道如何解析(或读取)附加到单元格的这个评论.Python excel readin模块有这个功能(在评论中阅读)?
您可以使用以下命令在没有 Excel COM 对象的情况下执行此操作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)
Run Code Online (Sandbox Code Playgroud)
评论本身的解析可以与 Steven Rumbalski 的答案相同。
(示例改编自此处)
通常从 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()
Run Code Online (Sandbox Code Playgroud)
以下是解析评论的方法:
comment = "2008:2#2009:4"
d = {}
for item in comment.split('#'):
key, val = item.split(':')
d[key] = val
Run Code Online (Sandbox Code Playgroud)
通常,Excel 注释分为两行,第一行注明注释的创建者。如果是这样,您的代码将看起来更像这样:
comment = """Steven:
2008:2#2009:4"""
_, comment = comment.split('\n')
d = {}
for item in comment.split('#'):
key, val = item.split(':')
d[key] = val
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3915 次 |
最近记录: |