Apakah ada cara, idealnya menggunakan baris perintah, untuk mengkonversi beberapa file .csv ke satu lembar kerja .xls multi-sheet?

14

Apakah ada cara, idealnya menggunakan baris perintah, untuk mengkonversi beberapa file .csv ke satu lembar kerja .xls multi-sheet?

Jika tidak ada solusi cli, akan lebih baik untuk mengetahui apakah ada API yang berfungsi, idealnya, awk atau pascal, tetapi, gagal dalam hal apa pun.

Peter Brooks
sumber
ssconvert, disebutkan oleh Maythux, adalah perintah pendamping untuk Gnumeric, yang akan diinstal secara default pada sistem Desktop Ubuntu, tetapi tidak pada versi server.
Arronical
Mengingat fakta Excel akan memuat CSV dalam .xlsfile yang bisa Anda lakukan:cat *.csv > file.xls
ash
coba ini
Lety
1
ssconvert berhasil, dengan sempurna. Yang saya butuhkan adalah memiliki masing-masing file .csv dalam lembar terpisah. Menggunakan kucing tidak mencapai itu. ssconvert melakukannya.
Peter Brooks
@ash csv dan xls adalah format yang berbeda, catting sekelompok csvs ke file dan menamai ulangnya xls tidak akan berfungsi sama sekali, karena csvs tidak mendukung banyak lembar sehingga hanya akan membuat satu csv panjang, dan juga karena csv adalah format plaintext sedangkan xls adalah format biner
chiliNUT

Jawaban:

16

Anda dapat menggunakan perintah ssconvert .

ssconvert example.csv example.xls

Untuk melakukannya untuk banyak file, Anda harus membuat bash loop di atas file csv dan melakukan pekerjaan itu. Di sini sebuah petunjuk:

for i in *.csv; do ssconvert "$i" "${i%.*}".xls; done

EDIT:

Untuk mengkonversi dan menggabungkan menjadi satu file xls tunggal juga Anda masih dapat menggunakan ssconvert.

ssconvert --merge-to=output.xls file1.csv file2.csv ....

atau mudah

ssconvert --merge-to=output.xls *.csv 
Maythux
sumber
1
Sangat penting untuk mengutip variabel, karena "$i" "${i%.*}".xlsjika tidak, setiap nama file yang mengandung spasi akan melanggar perintah (dan berpotensi menimpa file yang tidak terkait).
Paddy Landau