openpyxl读取Excel中公式计算后的值 读出全是none 如何使读出的值变为数值
时间: 2023-09-30 14:13:09 浏览: 240
您可以使用openpyxl库中的`data_only`参数来读取Excel中公式计算后的值。默认情况下,openpyxl只会读取Excel中存储的公式,而不会计算公式的结果。将`data_only`参数设置为True,可以强制openpyxl读取公式的计算结果。
以下是一个示例代码:
```python
from openpyxl import load_workbook
# 打开Excel文件
workbook = load_workbook('your_file.xlsx', data_only=True)
# 选择工作表
sheet = workbook['Sheet1']
# 读取单元格的值(已经计算后的值)
value = sheet['A1'].value
print(value)
```
在上面的代码中,`data_only=True`参数用于打开工作簿时,以计算后的值而不是公式本身来读取单元格的值。这样,您将能够读取到Excel中公式计算后的数值。
相关问题
openpyxl读出的Excel公式计算后的值为none 如何读出公式计算后的数值
要读取Excel公式计算后的数值,您可以使用openpyxl库中的`data_only`属性。默认情况下,openpyxl只会读取Excel文件中的公式,而不会计算它们的值。但是,通过设置`data_only=True`,您可以强制openpyxl在读取文件时计算公式并返回计算后的值。
下面是一个示例代码,演示如何使用`data_only`属性读取公式计算后的数值:
```python
from openpyxl import load_workbook
# 打开Excel文件
workbook = load_workbook('example.xlsx')
# 选择要操作的工作表
worksheet = workbook['Sheet1']
# 启用data_only属性
worksheet.calculate_dimensions = False
worksheet.data_only = True
# 读取A1单元格的数值
value = worksheet['A1'].value
print(value)
```
在上面的代码中,我们首先打开Excel文件,并选择要操作的工作表。然后,我们将`calculate_dimensions`设置为False(以防止openpyxl自动计算整个工作表的维度)并将`data_only`设置为True。最后,我们读取A1单元格的值,并将其打印出来。
请注意,`data_only`属性只能在打开具有公式的Excel文件时使用,而不是在创建新的Excel文件时。
python读出excel
### 使用Python读取Excel文件的方法
#### 方法一:使用`xlrd`
对于较旧版本的Excel文件(`.xls`格式),推荐使用`xlrd`库。此库专门用于读取Excel文件,但请注意其返回的对象为只读模式。
```python
import xlrd
workbook = xlrd.open_workbook('example.xls') # 打开指定路径下的Excel文件[^1]
sheet_names = workbook.sheet_names() # 获取工作表名称列表
print(sheet_names)
worksheet = workbook.sheet_by_index(0) # 根据索引获取第一个工作表
num_rows = worksheet.nrows # 获取总行数
for curr_row in range(num_rows): # 遍历每一行数据
row = worksheet.row_values(curr_row)
print(row)
```
由于`xlrd`仅支持读取功能而不允许修改或创建新文件,在处理现代版Excel文档(`.xlsx`)时可能遇到兼容性问题[^2]。
#### 方法二:使用`openpyxl`
针对`.xlsx`格式的Excel文件,建议采用`openpyxl`库。该库不仅能够读取还能编辑现有的Excel文件,并能新建Excel文件。
```python
from openpyxl import load_workbook
wb = load_workbook(filename='example.xlsx', data_only=True) # 加载Excel文件并设置data_only参数以获得计算后的值
ws = wb.active # 获取活动的工作表
for row in ws.iter_rows(values_only=True): # 迭代遍历所有行的数据
print(row)
```
这种方法适用于需要对Excel文件进行更复杂操作的情况,比如更新现有内容或者添加新的表格等。
#### 方法三:使用`pandas`
如果目标是从Excel中提取结构化数据以便后续分析,则`pandas`可能是最合适的选择之一。它提供了简单易用的功能来加载整个工作簿到DataFrame对象中,从而简化数据分析流程。
```python
import pandas as pd
df = pd.read_excel('example.xlsx', sheet_name=None, engine='openpyxl') # 将Excel中的每一个Sheet作为单独的DataFrame存储在一个字典里
for name, data in df.items():
print(f'Sheet Name: {name}')
print(data.head())
```
通过这种方式可以获得高度灵活的数据访问权限,非常适合那些希望快速导入大量数据集的研究人员和开发者们。
阅读全文
相关推荐















