以下是我要做的事情
这是我的代码
import pandas as pd
import numpy as np
from openpyxl import load_workbook
wb = load_workbook(filename = 'initial.xlsx')
sheet_names = wb.get_sheet_names()
name = sheet_names[0]
sheet_ranges = wb[name]
df = pd.DataFrame(sheet_ranges.values)
df['x']['C'] = 10
df.to_excel("processing.xlsx", header=False, index=False)
df1 = pd.read_excel("processing.xlsx", sheetname=0, header=0)
df1.to_html('output.html')
使用此代码,我可以完全正常运行 processing.xlsx ,但如果我尝试将其转换为html,则数据框会将所有公式读为 NaN 。
问题:如何强制pandas评估xlsx的公式而不是将它们读作NaN?
PS:如果我尝试将initial.xlsx转换为html,它可以正常工作,因此 to_excel 输出中的内容必定是错误的。
答案 0 :(得分:-1)
我发现了这个问题并且弄乱了。 问题:openpyxl在保存时不保持类型完整。 processing.xlsx 的大小减少了10kb。因此,大熊猫将其读作 NaN 。因此,我不得不使用xlwings来正确解密单元格的类型。 PS:这不是最好的解决方案,因此欢迎其他答案
def df_from_excel(path):
app = xw.App(visible=False)
book = app.books.open(path)
book.save()
app.kill()
return pd.read_excel(path,header=0)
df1 = df_from_excel("1.xlsx")
print(df1.head())
df1.to_html('public\output.html')