openpyxl读取Excel中公式计算后的值 读出全是none 如何使读出的值变为数值
时间: 2023-09-30 16:13:09 浏览: 171
您可以使用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文件时。
excel中多行数字多行汉字交叉pandas怎么实现读出数字,读出汉字
如果Excel表格中存在多行数字和多行汉字交叉的情况,可以使用Pandas库中的read_excel()函数进行读取。默认情况下,Pandas会将所有数字读取为浮点数,将所有文本读取为字符串。
例如,如果我们有以下的Excel表格:
| 列1 | 列2 | 列3 |
| --- | --- | --- |
| 1 | A | 2 |
| B | 2 | C |
| 3 | D | 4 |
我们可以使用如下代码读取:
```python
import pandas as pd
df = pd.read_excel('data.xlsx')
print(df)
```
输出结果为:
```
列1 列2 列3
0 1 A 2
1 B 2 C
2 3 D 4
```
可以看到,Pandas将所有数字读取为浮点数,将所有文本读取为字符串。
如果我们需要将数字和文本分别读取出来,可以使用Pandas库中的converters参数来自定义转换函数。例如,我们可以编写一个函数,将所有非数字字符替换为空字符串,然后将结果转换为浮点数:
```python
import pandas as pd
def clean_number(x):
if isinstance(x, str):
x = x.replace(',', '') # 去掉逗号分隔符
x = ''.join(filter(str.isdigit, x)) # 只保留数字
return float(x) if x else None
df = pd.read_excel('data.xlsx', converters={'列1': clean_number, '列3': clean_number})
print(df)
```
输出结果为:
```
列1 列2 列3
0 1.0 A 2.0
1 NaN 2 NaN
2 3.0 D 4.0
```
以上代码中,我们使用了isinstance()函数来判断单元格中的值是否为字符串类型,然后使用replace()函数和filter()函数来去掉逗号分隔符和非数字字符。最后,我们将结果转换为浮点数并返回。在read_excel()函数中,我们使用了converters参数来指定需要使用的转换函数,其中'列1'和'列3'是需要处理的列的名称。这样,就可以将数字和文本分别读取出来了。
阅读全文