前提・実現したいこと
pandasを使って、excelファイルを読み込みたいのですが、数式のセルが全てnanとして読み込まれてしまっているので
このセルに入っている値を読み込みたいです。
初歩的な質問だと思いますが、よろしくお願い致します。
hoge.xlxsについて
数式が入ったexcelファイル(画像)に、openplxyを用いて、特定の列に値を代入したもの(例えばA列に代入)を保存したファイルとなります。
#シートの確認 df = pd.read_excel('hoge_pre.xlsx', header=None) display(df) #シートへの書き込み wb = openpyxl.load_workbook('hoge_pre.xlsx') sheet = wb['Sheet1'] list_v = [5, 10] #シートへの書き込み for i in range(len(list_v)): sheet.cell(row=i+1, column=1, value=list_v[i]) #シートの保存 wb.save('hoge.xlsx') #シートの読み出し df_ex = pd.read_excel('hoge.xlsx', header=None) display(df_ex) #出力結果 df 1 2 3 2 3 5 df_ex 5 2 10 3
該当のソースコード
df = pd.read_excel('hoge.xlsx')
試したこと
openpyxlにて、data_only=Trueとして、読み込んでみましたが、数式しか読み込まれませんでした。
また、openpyxlにて開いた後に、以下のコードで、csvファイルにしてみましたが
式が入っているセルは式のまま(表示は計算値でセルを見ると数式)となっていました。
wb = openpyxl.load_workbook('hoge.xlsx') ws = wb.worksheets[0] with open('hoge.csv', 'w', newline="") as csvfile: writer = csv.writer(csvfile) for row in ws.rows: writer.writerow( [cell.value for cell in row] )
現象が再現しません。(数式も数値として読み込まれます)
hoge.xlsxについて詳細を記載するかgithubや公開アップローダーなりにアップすると回答得られやすいかと思います。
pandasのバージョンは何ですか?
can110様
コメント頂きありがとうございます。
hoge.xlsxについて、追記致しましたので、お手隙であれば、ご確認よろしくお願い致します。
meg_様
コメント頂きありがとうございます。
pandasのVer.につきましては、1.0.3となります。
ver1.1.1では問題は再現しませんでした。
meg_様
わざわざ検証まで頂きありがとうございました。
こちらでもVer1.1.1にアップデートして、実施したのですが
同様の現象が生じておりますので、pandasの問題ではなさそうですね。
最も単純なエクセルファイル(A1セルにA2+A3の数式を設定しただけのものなど)を作成して試しても駄目でしょうか?
meg_様
お返事ありがとうございます。
2行となっていますが、「hoge.xlxsについて」で示しましたexcelファイルそのものを読み込んだ場合は問題かったのですが
それをopenpyxlで値代入し、保存したexcelファイルでは、値の読み込みができませんでした。
コードにある「出力結果」は期待する出力でしょうか?
なお、displayとは何の関数でしょうか?printではダメですか?printに変えて試してみたところ、出力結果のように出力されます。
toast_uz様
コメントありがとうございます。
displayはpandasでの表を見やすくする関数となりますので、基本的にはprintと変わりないです。
この場合の出力ですが、C1, C2が何も表示されていないのが、困っている点となっております。
以上よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー