Home » Python » xlsxファイルから生データをPythonで抜き出す-zipfile・lxml

xlsxファイルから生データをPythonで抜き出す-zipfile・lxml

動作検証バージョン:Windows 11 Home + Python 3.10.11 + Jupyter Notebook 6.5.3 + lxml 4.9.2

xlxsファイル内で「1.2250000000000001」として格納されているデータを、OpenPyXLを使って読み込んでも途中にfloat関数があるため「1.225」になってしまうことを確認しました。

こうなると、xlsxファイルに含まれるxl/worksheets/sheet1.xmlファイルから、直接生データを抜き出したくなります。

[スポンサードリンク]

xlsxファイルのデータを直接取得するスクリプト

標準ライブラリのzipfileと、外部ライブラリのlxmlを使った以下のようなスクリプトで、xlsxファイルの生データをそのまま取得できます。

import zipfile
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

[スポンサードリンク]

Home » Python » xlsxファイルから生データをPythonで抜き出す-zipfile・lxml

「Python」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.