Come modificare il file Excel (xlsx) usando la shell di Linux


11

C'è un modo (strumento) per modificare i file XLSX usando la shell Linux? Quello di cui ho bisogno è un modo per rimuovere le ultime tre righe non vuote dal primo foglio di lavoro.

So che XLSX è solo un file zip, compresso con diversi file XML, che potrei modificare individualmente. Tuttavia, vorrei evitare di analizzare e modificare personalmente i file XML, se possibile.

Risposte:


14

La mia idea è una sceneggiatura di Python come questa:

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

per controllare "non vuoto" è possibile utilizzare df.notna()


Sembra promettente - ci proverò. Solo per essere sicuri - df.ix [: - 3] - cancellerà le ultime tre righe non vuote? Poiché un foglio Excel ha molte righe vuote, se si osserva il file xml in xlsx.
Bojan Hrnkas,

2
cancella le ultime 3 righe. le righe vuote dopo l'ultima riga non vuota vengono ignorate. Per comodità qui: pandas.pydata.org/pandas-docs/version/0.22/generated/… è un riferimento al dataframe di panda
DDS

-3

Libreoffice (e probabilmente anche OpenOffice) può leggere file .xlsx creati da Excel. Se non hai molti file da elaborare in questo modo, farlo manualmente in Libreoffice è il modo più semplice di procedere. Se hai molti file e hai davvero bisogno di una soluzione automatizzata, Libreoffice è gestibile da script. Consulta i documenti API o inizia con un'introduzione più tutorial .


2
Questo non funziona per me, perché voglio automatizzare qualcosa su un server senza testa.
Bojan Hrnkas,

2
@tubo. È possibile eseguire LibreOffice in modalità senza testa, non è vero?
TRiG

3
@TRiG Certo che lo è, e una risposta che spiega come fare sarebbe un'ottima risposta. Questa non è quella risposta.
pipe

1
@pipe chiamando LibreOffice uno "strumento gui unico" è piuttosto estremo. È sostanzialmente l'opposto di quello che è veramente.
barbecue

1
Aprire LibreOffice in modalità senza testa è semplice come usare l' --headlessopzione.
Johnny,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.