Scalanie komórek arkusza kalkulacyjnego w CSV?


(pain3hp) #1

Czy jest możliwe aby zapisać plik csv tak aby arkusz czy to excel czy calc scalił komórki pionowo/poziomo ?


(somekind) #2

Nie.

CSV to plik tekstowy przechowujący wartości oddzielone jakimiś separatorami, nie przechowuje żadnych informacji o formatowaniu komórek.


(pain3hp) #3

Tak myślałem, dzięki,

a jakieś rozwiązanie aby generować plik który otworzy się w arkuszu ze scaloną komórką ?


(somekind) #4

No to generuj plik w formacie arkusza, który obsługuje scalanie komórek.


([alex]) #5

Można generować w XML i otwierać wg zapisanego szablonu.


(Krystian Rosinski) #6

Można skorzystać z biblioteki openpyxl dla Pythona (wersja dla Pythona 3 tutaj).

Scalanie komórek pliku xlsx wygląda tak:

from openpyxl import load_workbook


wb = load_workbook('test.xlsx')

ws = wb.worksheets[0]

ws.merge_cells('A1:A5')

wb.save('test_out.xlsx')

Prościej chyba się nie da. Skrypt wczytuje zawartość pierwszego arkusza pliku test.xlsx, scala komórki A1:A5 i zapisuje w pliku test_out.xlsx. Podobnie wygląda sytuacja z wierszami. Nic nie stoi na przeszkodzie, żeby tego typu operację wykonać w wielu plikach, które składają się z wielu arkuszy itd. Arkusze można też wczytywać po nazwach:

ws = wb.get_sheet_by_name(name = 'Arkusz1')

Po więcej odsyłam do dokumentacji.

Ps Openpyxl to port biblioteki PHPExcel.


(pain3hp) #7

mój plik csv jest generowany codziennie, i codziennie następnego dnia jest rozszerzany i zmienną ilość komórek w dół. I ta zmienna ilość musi być scalona, itak codziennie musi pamiętać te scalone komórki. Kolejne utrudnienie to konieczność nie xls a ods (open/libre office)


(Krystian Rosinski) #8

Zgodnie z opisem PHPExcel wspiera ods:

Reszta nie powinna być problemem.


(pain3hp) #9

no to nic, pozostaje wygospodarować trochę czasu i poznać PHPExcel :slight_smile: nie wspominałem ale najbardziej mi zależało pod PHP właśnie

Dziękuję za pomoc