python+pandas如何判断Excel中的公式并以结果显示

话不多说

1)测试Excel用例

2)判断Excel中某个字段是否为公式

"""
测试对excel公式操作
"""
import pandas as pd
from openpyxl import load_workbook
from openpyxl.formula import Tokenizer
# 加载工作簿
workbook = load_workbook(r'./static/tt_excel/Excel测试公式导入.xlsx')

# 选择工作表
sheet = workbook.active  # 或者通过名字 workbook['Sheet1']
# 遍历单元格
for row in sheet.iter_rows():
    for cell in row:

        # 检查单元格是否包含公式
        if cell.data_type == 'f':  # 'f' 表示公式
            formula = cell.value  # 公式的字符串表示
            print(f"Cell {cell.coordinate} contains a formula: {formula}")
            # 使用 Tokenizer 分析公式
            tokenizer = Tokenizer(formula)
            tokens = tokenizer.items
            print(tokens)  # 打印公式的 tokens
        elif cell.data_type == 'n':  # 'n' 表示数字
            print(f"Cell {cell.coordinate} contains a number: {cell.value}")
                # 可以添加更多的elif来处理其他数据类型

输出结果:

3)将Excel中公式计算为结果输出到pandas 格式为Dataframe

import pandas as pd
from openpyxl import load_workbook
"""
请注意,使用 data_only=True 时,如果公式的结果是错误(例如 #DIV/0!),你将得到错误字符串,而不是公式本身。如果公式没有计算结果(例如,如果它依赖于尚未加载的工作簿中的其他数据),则 cell.value 将是 None。
"""
# 加载工作簿,设置 data_only=True 来获取公式的计算结果
workbook = load_workbook(r'./static/tt_excel/Excel测试公式导入.xlsx', data_only=True)
sheet = workbook.active

# # 遍历单元格
# for row in sheet.iter_rows():
#     for cell in row:
#         # 检查单元格是否包含公式的计算结果
#         if cell.value is not None:
#             print(f"Cell {cell.coordinate} contains a value: {cell.value}")

# 初始化列表来存储数据
data = []

# 遍历单元格
for row in sheet.iter_rows():
    row_data = [cell.value for cell in row if cell.value is not None]
    data.append(row_data)

# 将数据转换为 DataFrame
df = pd.DataFrame(data)
print(df)

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿桂天山

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值