openxyl写入带excel的表格并保存后,用pandas读取如何把几列涉及公式的值计算出来
时间: 2024-09-15 12:07:05 浏览: 69
OpenXLSX是一个Python库,用于读写Excel文件,特别是Microsoft Office的XLSX格式。如果你想从使用OpenXLSX写入的数据中读取包含公式的结果,需要注意的是OpenXLSX本身并不直接支持Excel公式计算,它主要用于存储数据。当你在OpenXLSX中写入含有公式的单元格时,它会存储公式而不是计算结果。
当你用Pandas读取这个文件时,你可能会得到原始的公式字符串,而非计算后的数值。如果你想获取计算后的值,你需要:
1. 使用`openpyxl`或`xlrd`这样的库,它们支持公式计算,可以读取到Excel文件中的计算结果。
2. 对于 `openpyxl`,首先读取Excel文件,然后对包含公式的单元格应用`eval()`函数来计算值,例如:
```python
import pandas as pd
from openpyxl import load_workbook
wb = load_workbook('your_file.xlsx')
ws = wb.active
data = pd.DataFrame(ws.values)
# 确保列名是str,因为eval需要字符串
if data.columns.dtype == 'category':
data.columns = data.columns.astype(str)
for col in data.columns[data.columns.str.contains('=')]:
data[col] = data[col].apply(lambda x: eval(x) if isinstance(x, str) else x)
```
3. 如果你不想处理字符串转换,可以直接使用`pd.ExcelFile.parse`读取后再计算,但它不会自动识别公式:
```python
df = pd.read_excel('your_file.xlsx', engine='openpyxl', keep_default_na=False)
df.eval() # 这里可以尝试使用eval,但通常会依赖其他库如`numexpr`
```
**相关问题--:**
1. OpenXLSX如何处理公式计算?
2. 如何判断哪些列包含公式?
3. 如果文件非常大,上述方法是否可行?是否有优化建议?
阅读全文