Python之Excel公式与注释处理秘籍

在日常工作中,我们经常需要处理Excel表格,无论是读取数据、编辑公式还是添加注释。Python中的xlrdxlwt库就是我们的得力助手。今天,我们就来一起探索如何使用这两个库优雅地应对带有公式和注释的Excel文件。

一、xlrd:读取Excel的魔法棒

1.1 导入xlrd

python 复制代码
import xlrd

xlrd就像一个Excel阅读器,能帮我们打开文件并解析内容。它的open_workbook()函数就是关键:

python 复制代码
workbook = xlrd.open_workbook('your_file.xlsx')

这行代码会加载指定路径的Excel文件。

1.2 读取公式

cell_value()函数能获取单元格的值,包括公式结果:

python 复制代码
sheet = workbook.sheet_by_name('Sheet1')  # 假设你的工作表叫Sheet1
formula_cell = sheet.cell(row=1, col=1)  # 第一行第一列
formula_result = formula_cell.value

如果公式中含有引用其他单元格,它会计算出来:

1.3 获取注释

虽然xlrd本身不直接支持注释,但可以通过一些技巧间接获取。注释通常存储在隐藏的工作表中,我们可以先找出这个隐藏工作表:

python 复制代码
hidden_sheet = workbook.sheet_by_index(0)  # 隐藏工作表索引为0(可能因版本不同而变化)
comments = hidden_sheet.col_values(0)[1:]  # 假设注释在第一列,从第二行开始

这样,comments列表里就包含了对应单元格的注释。

二、xlwt:写入Excel的神笔

2.1 导入xlwt

python 复制代码
import xlwt

xlwt就像一个Excel创作者,让我们能够创建新的Excel文件或修改已有内容。Workbook()创建一个新的工作簿:

python 复制代码
new_workbook = xlwt.Workbook()

2.2 创建公式

使用add_sheet()添加工作表,并用write()写入公式:

python 复制代码
new_sheet = new_workbook.add_sheet('New Sheet')
new_sheet.write(0, 0, "A1 = B1 + C1")  # 在第一行第一列写入公式

保存时,公式会被自动计算:

2.3 添加注释

xlwt本身不支持直接添加注释,但我们可以通过字符串格式化的方式,将注释作为额外信息存储在单元格旁边:

python 复制代码
new_sheet.write(1, 0, "A2 Comment: This is a note", cell_overwrite_ok=True)

这里cell_overwrite_ok=True确保了注释会覆盖原有内容。

三、实战演练

现在,让我们结合以上知识,完成一个读取带公式和注释文件,然后写入新文件的例子:

python 复制代码
# 读取原文件
with xlrd.open_workbook('input.xlsx') as input_wb:
    sheet = input_wb.sheet_by_name('Sheet1')
    formula_cell = sheet.cell(row=1, col=1)
    comments = hidden_sheet.col_values(0)[1:]

# 写入新文件
new_workbook = xlwt.Workbook()
new_sheet = new_workbook.add_sheet('Sheet1')
new_sheet.write(0, 0, f"A1 = {formula_cell.value}")
for i, comment in enumerate(comments):
    new_sheet.write(i+1, 0, f"A{i+2} Comment: {comment}", cell_overwrite_ok=True)

# 保存新文件
new_workbook.save('output.xlsx')

这样,我们就成功地读取了原始文件的公式和注释,并在新文件中保留了这些信息。

希望这个教程能帮助你更好地利用Python处理Excel文件,无论是读取还是写入,都能游刃有余!记得在实际操作中根据需求调整代码哦!

相关推荐
前端 贾公子3 小时前
第09章:上下文与记忆 (3)
python·langchain
缘友一世3 小时前
GLM-5.3-NVFP4 部署实战系列[二]Docker 镜像选择与补丁镜像构建:纯 Python overlay,不重编一行 CUDA
python·docker·容器·vllm
海兰3 小时前
【 Python 量化交易】第3章:金融基础概念
开发语言·python·金融
Feynman’s boom3 小时前
PDF解析文字提取后RAG仍然检索不准
python·pdf解析·rag
一木 之林3 小时前
三.C++ 内存管理(进阶)(二)
开发语言·arm开发·c++
吴声子夜歌3 小时前
Java——类、对象及方法(一)
java·开发语言
心易行者3 小时前
从零搭建完整Web应用:7步走完全流程,配合web应用托管零门槛上线
人工智能·python·ai编程
阿里嘎多学长3 小时前
2026-08-29 GitHub 热点项目精选
开发语言·程序员·github·代码托管
小柯南敲键盘4 小时前
跨境电商图片翻译工具,批量处理视频字幕与抠图
人工智能·python·音视频
এ慕ོ冬℘゜4 小时前
JavaScript学习心得:从只会语法,到真正会写业务逻辑
开发语言·javascript·ecmascript