PydPiper / pylightxl

A light weight, zero dependency, minimal functionality excel read/writer python library
https://pylightxl.readthedocs.io
MIT License
300 stars 47 forks source link

Formulas in a csv file are parsed incorrectly #89

Open nebolax opened 1 year ago

nebolax commented 1 year ago

Pylightxl Version: 1.61 Python Version: 3.9.16

Summary of Bug/Feature:

Formulas in a csv file are parsed incorrectly. See the attached example file. all_events_fifo_3.csv

Traceback:

I saw that values in cells are incorrect when I tried to access them by .address, so I ran this:

import pylightxl as xl
from pylightxl import Database

path = '/home/nebolax/p/rotki/export/all_events_fifo_3.csv'

db: Database = xl.readcsv(fn=path)

sheet = db.ws('Sheet1')
for k, v in sheet._data.items():
    print(k, v)

and got this output, which seems completely off from what should be stored in the cells. (See cells I2, J2, K2, I3, J3, K3, etc.)

A1 {'v': 'type', 'f': None, 's': None}
B1 {'v': 'notes', 'f': None, 's': None}
C1 {'v': 'location', 'f': None, 's': None}
D1 {'v': 'timestamp', 'f': None, 's': None}
E1 {'v': 'asset', 'f': None, 's': None}
F1 {'v': 'free_amount', 'f': None, 's': None}
G1 {'v': 'taxable_amount', 'f': None, 's': None}
H1 {'v': 'price', 'f': None, 's': None}
I1 {'v': 'pnl_taxable', 'f': None, 's': None}
J1 {'v': 'pnl_free', 'f': None, 's': None}
K1 {'v': 'cost_basis_taxable', 'f': None, 's': None}
L1 {'v': 'cost_basis_free', 'f': None, 's': None}
A2 {'v': 'ledger action', 'f': None, 's': None}
B2 {'v': 'income ledger action', 'f': None, 's': None}
C2 {'v': 'external', 'f': None, 's': None}
D2 {'v': '28/02/2023 19:20:30 +03', 'f': None, 's': None}
E2 {'v': 'BTC', 'f': None, 's': None}
F2 {'v': 0, 'f': None, 's': None}
G2 {'v': 1, 'f': None, 's': None}
H2 {'v': 10000, 'f': None, 's': None}
I2 {'v': '"=IF(K2=""""', 'f': None, 's': None}
J2 {'v': 'G2*H2', 'f': None, 's': None}
K2 {'v': 'G2*H2-K2)"', 'f': None, 's': None}
L2 {'v': 0, 'f': None, 's': None}
M2 {'v': '', 'f': None, 's': None}
N2 {'v': '', 'f': None, 's': None}
A3 {'v': 'ledger action', 'f': None, 's': None}
B3 {'v': 'income ledger action', 'f': None, 's': None}
C3 {'v': 'external', 'f': None, 's': None}
D3 {'v': '28/02/2023 19:21:37 +03', 'f': None, 's': None}
E3 {'v': 'BTC', 'f': None, 's': None}
F3 {'v': 0, 'f': None, 's': None}
G3 {'v': 1, 'f': None, 's': None}
H3 {'v': 20000, 'f': None, 's': None}
I3 {'v': '"=IF(K3=""""', 'f': None, 's': None}
J3 {'v': 'G3*H3', 'f': None, 's': None}
K3 {'v': 'G3*H3-K3)"', 'f': None, 's': None}
L3 {'v': 0, 'f': None, 's': None}
M3 {'v': '', 'f': None, 's': None}
N3 {'v': '', 'f': None, 's': None}
A4 {'v': 'ledger action', 'f': None, 's': None}
B4 {'v': 'loss ledger action', 'f': None, 's': None}
C4 {'v': 'external', 'f': None, 's': None}
D4 {'v': '28/02/2023 19:22:00 +03', 'f': None, 's': None}
E4 {'v': 'BTC', 'f': None, 's': None}
F4 {'v': 0, 'f': None, 's': None}
G4 {'v': 1, 'f': None, 's': None}
H4 {'v': 5000, 'f': None, 's': None}
I4 {'v': '"=IF(K4=""""', 'f': None, 's': None}
J4 {'v': '-(F4*H4+G4*H4)', 'f': None, 's': None}
K4 {'v': '-(F4*H4+G4*H4)+G4*H4-K4)"', 'f': None, 's': None}
L4 {'v': 0, 'f': None, 's': None}
M4 {'v': '=1*H2+0*H3', 'f': None, 's': None}
N4 {'v': '', 'f': None, 's': None}

Suggestion for fix:

...