2016-08-12 5 views
1

fisrtでxlsxwriterを使用して1つのセルに簡単な数式を書き、* .xlsxファイルを閉じます。次に、私はセルの値を読み取ろうとしますが、同じプログラムでxlrdを使ってセルから「0」だけを読み込みます。xlsxwriterを閉じてからxlrdを使用してexcelファイルを読み取った後に、formularの値を読み込めません。

セル内に固定値(文字列や定数など)を読み込んだ場合、正常に動作します。 * .xlsxファイルに手動で式セルを作成すると、xlrdは数式の値も取得できます。

フォーラムセルラーを* .xlsxに書き込んだ後で同じプログラムで読むと、式セルの値を読み取ることができないようです。

のPython:3.4.3 xlrd:1.0.0 xlsxwriter:0.9.3

import xlrd 
import xlsxwriter 

name = 'abc.xlsx' 
sheet_name = 'sheet1' 
# write a formula in 'D1' as '=A1+C1' 
out_book = xlsxwriter.Workbook(name, {'im_memory': True}) 
out_sheet = out_book.add_worksheet(sheet_name) 
out_sheet.write('A1', 1) 
out_sheet.write('C1', 2) 
out_sheet.write_formula(0, 3, '=A1+C1') 
out_book.close() 

#After closing excel, read the cell 
tmp = xlrd.open_workbook(name) 
sheet = tmp.sheet_by_name(sheet_name) 
#show '2.0' 
print (sheet.cell_value(0, 2)) 
#show '0.0' 
print (sheet.cell_value(0, 3)) 

結果は次のとおりです。 2.0 0.0

しかし、私はそれがあることを期待: 2.0 3.0

どうすれば解決できますか?どうもありがとう!

+0

「xlwing」を使用すると、書き込みと読み取りの両方を行うことができます。http://docs.xlwings.org/en/stable/quickstart.html – Trimax

+0

Thanks Trimax。 xlwingが最初に数式を書いてから値を読み取ることができると確信していますか?私は後でxlwingしようとします – Finnson

答えて

0

XlsxWriterは、数式の値をExcelに書き出しません。ドキュメントのFormula Resultセクションを参照してください。

+0

こんにちはJmcnamara、私はそれを知っています。しかし、なぜ数式が手作業で書かれていれば、Excelの最終的な値を読むことができますか? – Finnson

+0

Excelは数式の値を計算し、それをファイルに書き込むためです。 – jmcnamara

+0

ありがとうございましたjmcnamara。あなたが正しいです!しかし、私は実際に最初にExcelに式を書いてから、その値をプログラミングで覚えるという機能が本当に必要です。私は後でxlwingsまたはopenpyxlを試みます。 – Finnson

関連する問題