xlxsファイル内で「1.2250000000000001」として格納されているデータを、OpenPyXLを使って読み込んでも途中にfloat関数があるため「1.225」になってしまうことを確認しました。
こうなると、xlsxファイルに含まれるxl/worksheets/sheet1.xmlファイルから、直接生データを抜き出したくなります。
xlsxファイルのデータを直接取得するスクリプト
標準ライブラリのzipfileと、外部ライブラリのlxmlを使った以下のようなスクリプトで、xlsxファイルの生データをそのまま取得できます。
from lxml import etree
XLSX_PATH = r'c:\temp\samp_1333_1225.xlsx'
with zipfile.ZipFile(XLSX_PATH) as xlsx:
sheet = xlsx.read('xl/worksheets/sheet1.xml')
root = etree.XML(sheet)
for v in root.findall('./{*}sheetData/{*}row/{*}c/{*}v'):print(v.text)
xlsxファイルのデータを読み込むと
1枚目のワークシートの、A1:A4セルに以下のデータを、
1.333 1.225 -1.333 -1.225
A5:A6セルには以下の計算式を入力して、
=A1+A2+A3+A4 =(A1+A2+A3+A4)
Cドライブtempフォルダーに、samp_1333_1225.xlsxとして保存しておいてから先ほどのスクリプトを実行すると、以下のように出力されます。
1.333
1.2250000000000001
-1.333
-1.2250000000000001
0
-2.2204460492503131E-16
「1.225」や「-1.225」を入力したセルや、式「=(A1+A2+A3+A4)」を入力したセルの以下のようなデータが、
xlsxファイルの実体内の「xl/worksheets/sheet1.xml」ファイルから取得できている様子を確認できます。
最終更新日時:2024-01-16 16:28