Comment modifier un fichier Excel (xlsx) à l'aide du shell Linux

11

Existe-t-il un moyen (outil) de modifier des fichiers XLSX à l'aide du shell Linux? J'ai besoin d'un moyen de supprimer les trois dernières lignes non vides de la première feuille de calcul.

Je sais que XLSX est juste un fichier zip, emballé avec différents fichiers XML, que je pourrais modifier individuellement. Cependant, je voudrais éviter d'analyser et de modifier les fichiers XML moi-même, si possible.

Bojan Hrnkas
la source

Réponses:

14

Mon idée est un script python comme celui-ci:

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

pour vérifier le "non-vide", vous pouvez utiliser df.notna()

DDS
la source
Cela semble prometteur - va essayer. Juste pour être sûr - df.ix [: - 3] - supprimera les trois dernières lignes non vides? Parce qu'une feuille Excel a beaucoup de lignes vides, si vous regardez le fichier xml dans le xlsx.
Bojan Hrnkas
2
il supprime les 3 dernières lignes. les lignes vides après la dernière ligne non vide sont ignorées. Pour plus de commodité ici: pandas.pydata.org/pandas-docs/version/0.22/generated/… est une référence de la base de données pandas
DDS
-3

Libreoffice (et probablement aussi OpenOffice) peut lire les fichiers .xlsx créés par Excel. Si vous n'avez pas beaucoup de fichiers à traiter de cette manière, le faire manuellement dans Libreoffice est le moyen le plus simple. Si vous avez beaucoup de fichiers et avez vraiment besoin d'une solution automatisée, Libreoffice est scriptable. Consultez la documentation de l'API ou commencez par une introduction plus didacticielle .

pseudo
la source
2
Cela ne fonctionne pas pour moi, car je veux automatiser quelque chose sur un serveur sans tête.
Bojan Hrnkas
2
@tuyau. Il est possible d'exécuter LibreOffice en mode sans tête, n'est-ce pas?
TRiG
3
@TRiG Bien sûr que oui, et une réponse détaillant comment procéder serait une excellente réponse. Ce n'est pas cette réponse.
pipe
1
@pipe appelant LibreOffice un "outil gui unique" est assez extrême. C'est fondamentalement l'opposé de ce que c'est vraiment.
barbecue du
1
Ouvrir LibreOffice en mode sans tête est aussi simple que d'utiliser l' --headlessoption.
Johnny