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
どうすれば解決できますか?どうもありがとう!
「xlwing」を使用すると、書き込みと読み取りの両方を行うことができます。http://docs.xlwings.org/en/stable/quickstart.html – Trimax
Thanks Trimax。 xlwingが最初に数式を書いてから値を読み取ることができると確信していますか?私は後でxlwingしようとします – Finnson