In [1]:
from openpyxl import load_workbook
import numpy as np
from six.moves import cPickle as pickle

In [2]:
# Otwórz XLSX z incydentami
wb2 = load_workbook("Atmosfera-Incidents-2017.xlsx")
print wb2.get_sheet_names()


[u'Sheet2', u'Sheet3', u'Sheet5', u'Sheet6']

In [3]:
# wybierz zakładkę
p = wb2.get_sheet_by_name(name = 'Sheet2')

In [4]:
# Wczytaj dane ciurkiem do listy
a=[]
for row in p.iter_rows():
    for k in row:
#        if k.internal_value is not None:
        if isinstance(k.internal_value,unicode):
            # Replace xa0 (non-breaking space) and _x000D_ (newline in excel XML)
            repls = (u'\xa0',u' '), (u'_x000D_',u'\n')
            a.append(reduce(lambda a, kv: a.replace(*kv), repls, k.internal_value))
        else:
            a.append(k.internal_value)

In [5]:
# skonwertuj do np.array
aa=np.asarray(a)

In [6]:
# Ten export ma 82 kolumny chociaż dane sa tylko w 21 pierwszych
# Zmień więc kształt na kwadratowa tablicę o 82 kolumnach i 22451 wierszach
aa=aa.reshape((22451,82))

In [7]:
# Weź tylko pierwsze 21 kolumn
aa=aa[:,:21]

In [8]:
# Zapekluj do pliku na później
with open("Atmosfera-Incidents-2017.pickle", 'wb') as f:
    pickle.dump(aa, f, pickle.HIGHEST_PROTOCOL)

In [ ]:
# Print ładnie wyświetla polskie literki
print aa[1,7] # Nie potrzeba .decode('unicode_escape'), stringi wyświetla dobrze
print aa[1] # tabele gorzej ale dane są OK.

In [ ]:


In [ ]: