Saya menyadari bahwa ini tidak pertanyaan yang sepenuhnya terkait dengan unix/linux. Tetapi karena ini adalah sesuatu yang akan saya lakukan di linux, saya harap seseorang memiliki jawaban.
Saya memiliki file excel online (.xlsx
) yang diperbarui secara berkala (oleh orang lain). Saya ingin menulis skrip dan memasukkannya sebagai cronjob untuk memproses lembar excel itu. Tetapi untuk melakukan itu, saya perlu mengubahnya menjadi file teks (jadi .csv
) dengan kolom yang dipisahkan titik koma. Sayangnya, tidak dapat dipisahkan koma karena beberapa kolom memiliki koma di dalamnya. Apakah mungkin untuk melakukan konversi ini dari shell? Saya telah menginstal Open office dan saya dapat melakukan ini dengan menggunakan GUI-nya, tetapi ingin tahu apakah mungkin melakukan ini dari baris perintah. Terima kasih!
PS:Saya punya mesin Mac juga, jadi jika ada solusi yang bisa bekerja di sana, itu bagus juga.
Jawaban yang Diterima:
OpenOffice hadir dengan program unoconv untuk melakukan konversi format pada baris perintah.
unoconv -f csv filename.xlsx
Untuk persyaratan yang lebih kompleks, Anda dapat mengurai file XLSX dengan Spreadsheet::XLSX
di Perl atau openpyxl
di Python. Misalnya, berikut ini skrip quickie untuk mencetak lembar kerja sebagai file CSV yang dipisahkan titik koma (peringatan:belum diuji, diketik langsung di browser):
perl -MSpreadsheet::XLSX -e '
$ = "n"; $, = ";";
my $workbook = Spreadsheet::XLSX->new()->parse($ARGV[0]);
my $worksheet = ($workbook->worksheets())[0];
my ($row_min, $row_max) = $worksheet->row_range();
my ($col_min, $col_max) = $worksheet->col_range();
for my $row ($row_min..$row_max) {
print map {$worksheet->get_cell($row,$_)->value()} ($col_min..$col_max);
}
' filename.xlsx >filename.csv