Cara mengedit file Excel (xlsx) menggunakan linux shell

11

Apakah ada cara (alat) untuk mengedit file XLSX menggunakan Linux shell? Yang saya butuhkan adalah cara untuk menghapus tiga baris terakhir yang tidak kosong dari lembar kerja pertama.

Saya tahu bahwa XLSX hanyalah file zip, dikemas dengan file XML yang berbeda, yang dapat saya edit secara individual. Namun, saya ingin menghindari menganalisis dan mengubah file XML sendiri, jika memungkinkan.

Bojan Hrnkas
sumber

Jawaban:

14

Ide saya adalah skrip python seperti ini:

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

untuk memeriksa "non-kekosongan" yang dapat Anda gunakan df.notna()

DDS
sumber
Kedengarannya menjanjikan - akan mencobanya. Hanya untuk memastikan - df.ix [: - 3] - akan menghapus tiga baris terakhir yang tidak kosong? Karena lembar excel memiliki banyak baris kosong, jika Anda melihat file xml di xlsx.
Bojan Hrnkas
2
menghapus 3 baris terakhir. baris kosong setelah baris terakhir yang tidak kosong diabaikan. Untuk kenyamanan di sini: pandas.pydata.org/pandas-docs/version/0.22/generated/… adalah referensi kerangka data panda
DDS
-3

Libreoffice (dan mungkin juga OpenOffice) dapat membaca file .xlsx yang dibuat oleh Excel. Jika Anda tidak memiliki banyak file untuk diproses dengan cara ini, melakukannya secara manual di Libreoffice adalah cara termudah untuk dilakukan. Jika Anda memiliki banyak file, dan benar-benar membutuhkan solusi otomatis, Libreoffice dapat skrip. Lihat dokumentasi API atau mulai dengan pengantar tutorial lebih lanjut .

Nick
sumber
2
Ini tidak berfungsi untuk saya, karena saya ingin mengotomatiskan sesuatu pada server tanpa kepala.
Bojan Hrnkas
2
@pipa. Dimungkinkan untuk menjalankan LibreOffice dalam mode tanpa kepala, bukan?
TRiG
3
@TRiG Tentu, dan jawaban yang merinci cara melakukannya akan menjadi jawaban yang bagus. Ini bukan jawaban itu.
pipa
1
@pipe menyebut LibreOffice "alat gui satu kali" cukup ekstrem. Ini pada dasarnya kebalikan dari apa itu sebenarnya.
barbekyu
1
Membuka LibreOffice dalam mode Headless semudah menggunakan --headlessopsi.
Johnny