修改这个代码:mould_sheet.cell(3, 1, info['年度']),把单元格函数公式运算后的值写入
时间: 2023-12-14 11:36:34 浏览: 148
可以使用 openpyxl 中的 `cell.value` 属性来实现将单元格公式计算后的值写入。具体的实现代码如下所示:
```python
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.formula import Tokenizer
from openpyxl.formula.translate import Translator
# 创建一个新的工作簿
workbook = Workbook()
sheet = workbook.active
# 设置单元格公式(例如:SUM(A1:A3))
cell_formula = "SUM(A1:A3)"
sheet["A4"] = cell_formula
# 将单元格公式转换为 R1C1 格式
tokenizer = Tokenizer(cell_formula)
parsed_formula = tokenizer.parse()
r1c1_formula = Translator(parsed_formula, origin="A4").translate_formula()
# 计算公式的值并将其写入单元格
for row in sheet.iter_rows(min_row=4, max_row=4, min_col=1, max_col=1):
for cell in row:
cell.value = cell.parent.parent._evaluate_formula(r1c1_formula, cell.row, cell.column)
# 保存工作簿
workbook.save("example.xlsx")
```
在这个示例代码中,我们首先创建了一个新的工作簿,然后设置了一个单元格公式(例如:`SUM(A1:A3)`),并将其写入到单元格 `A4` 中。接着,我们使用 openpyxl 中的 `Tokenizer` 类将公式转换为 R1C1 格式,并使用 `Translator` 类将其翻译为相应的单元格引用。最后,我们使用 `parent.parent._evaluate_formula()` 方法计算公式的值,并将其写入到单元格中。
需要注意的是,`_evaluate_formula()` 方法是 openpyxl 内部使用的方法,不建议在实际生产环境中使用。如果需要计算公式的值,建议使用 `data_only=True` 参数打开工作簿,这样将会显示公式计算后的值,而不是公式本身。例如:
```python
from openpyxl import load_workbook
# 打开一个已存在的工作簿
workbook = load_workbook(filename="example.xlsx", data_only=True)
sheet = workbook.active
# 获取单元格的值(已计算公式)
cell_value = sheet["A4"].value
print(cell_value)
```
阅读全文