Jak edytować plik Excel (xlsx) za pomocą powłoki Linux

11

Czy istnieje sposób (narzędzie) do edycji plików XLSX za pomocą powłoki Linux? Potrzebuję sposobu na usunięcie trzech ostatnich niepustych wierszy z pierwszego arkusza.

Wiem, że XLSX to tylko plik zip, wypełniony różnymi plikami XML, które mogłem indywidualnie edytować. Chciałbym jednak unikać analizowania i zmieniania plików XML, jeśli to możliwe.

Bojan Hrnkas
źródło

Odpowiedzi:

14

Mój pomysł to taki skrypt Pythona:

import pandas as pd
filename=argv[1]
df = pd.read_excel(filename,sheet_name="Sheet1").ix[:-3] ## read the xlsx without last 3 rows to a dataframe
df.write_excel("output_sheet.xlsx") #write dataframe to xlsx file

aby zaznaczyć „brak pustki”, którego możesz użyć df.notna()

DDS
źródło
Brzmi obiecująco - spróbuje. Dla pewności - df.ix [: - 3] - usunie ostatnie trzy niepuste wiersze? Ponieważ arkusz programu Excel ma wiele pustych wierszy, jeśli spojrzysz na plik xml w pliku xlsx.
Bojan Hrnkas,
2
usuwa 3 ostatnie wiersze. puste wiersze po ostatnim niepustym wierszu są ignorowane. Dla wygody tutaj: pandas.pydata.org/pandas-docs/version/0.22/generated/… jest odniesieniem do ramki danych pand
DDS
-3

Libreoffice (i prawdopodobnie także OpenOffice) może odczytywać pliki .xlsx utworzone przez program Excel. Jeśli nie masz dużo plików do przetworzenia w ten sposób, najprostszym sposobem jest zrobienie tego ręcznie w Libreoffice. Jeśli masz dużo plików i naprawdę potrzebujesz zautomatyzowanego rozwiązania, Libreoffice jest skryptowalny. Zobacz dokumentację interfejsu API lub zacznij od wprowadzenia do samouczka .

Nacięcie
źródło
2
To nie działa dla mnie, ponieważ chcę zautomatyzować coś na bezgłowym serwerze.
Bojan Hrnkas,
2
@rura. Możliwe jest uruchomienie LibreOffice w trybie bezgłowym, prawda?
TRiG,
3
@TRiG Jasne, że tak, a odpowiedź opisująca, jak to zrobić, byłaby świetną odpowiedzią. To nie jest ta odpowiedź.
rura
1
@pipe nazywa LibreOffice „jednorazowym narzędziem GUI”. Zasadniczo jest to przeciwieństwo tego, czym naprawdę jest.
grill
1
Otwieranie LibreOffice w trybie bezgłowym jest tak proste, jak użycie --headlessopcji.
Johnny