Cómo editar un archivo Excel (xlsx) usando linux shell

11

¿Hay alguna forma (herramienta) para editar archivos XLSX usando el shell de Linux? Lo que necesito es una forma de eliminar las últimas tres filas no vacías de la primera hoja de trabajo.

Sé que XLSX es solo un archivo zip, repleto de diferentes archivos XML, que podría editar individualmente. Sin embargo, me gustaría evitar analizar y cambiar los archivos XML yo mismo, si es posible.

Bojan Hrnkas
fuente

Respuestas:

14

Mi idea es un script de Python como este:

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

para marcar "no vacío" puede usar df.notna()

DDS
fuente
Suena prometedor, lo intentaré. Solo para estar seguro - df.ix [: - 3] - ¿eliminará las últimas tres filas no vacías? Debido a que una hoja de Excel tiene muchas filas vacías, si observa el archivo xml en xlsx.
Bojan Hrnkas
2
elimina las últimas 3 filas. las filas vacías después de la última fila no vacía se ignoran. Para mayor comodidad aquí: pandas.pydata.org/pandas-docs/version/0.22/generated/… es una referencia del marco de datos de pandas
DDS
-3

Libreoffice (y probablemente también OpenOffice) puede leer archivos .xlsx creados por Excel. Si no tiene muchos archivos para procesar de esta manera, hacerlo de forma manual en Libreoffice es la forma más sencilla de hacerlo. Si tiene muchos archivos y realmente necesita una solución automatizada, Libreoffice es programable. Vea los documentos de la API o comience con una introducción más tutorial .

Mella
fuente
2
Esto no funciona para mí, porque quiero automatizar algo en un servidor sin cabeza.
Bojan Hrnkas
2
@tubo. Es posible ejecutar LibreOffice en modo sin cabeza, ¿no es así?
TRiG
3
@TRiG Claro que sí, y una respuesta que detalle cómo hacerlo sería una gran respuesta. Esta no es esa respuesta.
tubería
1
@pipe llamando a LibreOffice una "herramienta de interfaz gráfica de usuario única" es bastante extremo. Es básicamente lo contrario de lo que realmente es.
barbacoa
1
Abrir LibreOffice en modo sin cabeza es tan simple como usar la --headlessopción.
Johnny