在 Linux 中使用命令列將 XLSX 轉換為 CSV


XLSX 檔案是現代 Microsoft Excel 電子表格的標準副檔名。我們使用這些檔案來分析和組織資料,它們通常包含以單元格內行和列分隔的數值資料。

另一方面,CSV 檔案基本上是一個分隔文字檔案,它使用逗號分隔值,並且此檔案的每一行通常都是一條資料記錄。

雖然 xlsx 和 csv 資料儲存格式大不相同,一種使用帶行和列的表格,另一種使用逗號分隔值,但這並不意味著我們不能將一種轉換為另一種。

可以使用多種線上工具,但是當涉及到使用 Linux 終端將 xlsx 轉換為 csv 時,它比將檔案上傳到某個地方並獲取 csv 輸出要複雜一些。

有不同的命令列應用程式可以用來完成相同的功能,我將展示兩個最常用的應用程式,它們可以幫助我們使用 Linux 命令列將 xlsx 轉換為 csv。

第一個是 gnumeric 電子表格應用程式。gnumeric 電子表格應用程式帶有一個名為 ssconvert 的命令列實用程式,我們將使用它將 xlsx 轉換為 csv。

為了使用 ssconvert,我們首先需要在本地機器上安裝 gnumeric 電子表格應用程式。

對於 Ubuntu

apt-get install gnumeric

對於 Mac

brew install gnumeric

現在我們在本地機器上安裝了 gnumeric,下一步是使用 ssconvert 實用程式,我們就完成了。

將下面顯示的命令寫入終端以將 a.xlsx 檔案轉換為 b.csv

ssconvert Sample_XLSX.xlsx Sample_CSVFile.csv

需要注意的是,這兩個檔案都存在於我的本地環境中,您可以簡單地將它們替換為您本地機器上的任何檔案。

輸出

$ssconvert Sample_XLSX.xlsx Sample_CSVFile.csv
Using exporter Gnumeric_stf:stf_csv

現在,如果我檢查使用上述命令建立的 Sample_CSVFile 的內容,我將得到以下輸出:

immukul@192 Downloads % cat SampleCSVFile_11kb.csv
1,"Eldon Base for stackable storage shelf, platinum",Muhammed MacIntyre,3,-213.25,38.94,35,Nunavut,Storage & Organization,0.8
2,"1.7 Cubic Foot Compact ""Cube"" Office Refrigerators",BarryFrench,293,457.81,208.16,68.02,Nunavut,Appliances,0.58
3,"Cardinal Slant-D? Ring Binder, Heavy Gauge Vinyl",Barry French,293,46.71,8.69,2.99,Nunavut,Binders and Binder Accessories,0.39
4,R380,Clay Rozendal,483,1198.97,195.99,3.99,Nunavut,Telephones and Communication,0.58

您可以清楚地看到記錄是用逗號分隔的,因此該檔案是有效的。

實現上述目標的另一種方法是使用 **libreoffice**,在這種情況下,我們只需要將以下命令寫入終端以將 xlsx 檔案轉換為 csv。

for i in *.xlsx; do libreoffice --headless --convert-to csv "$i" ; done

以上命令將把當前目錄中存在的所有檔案轉換為其同名的 csv 檔案。

輸出

命令之前

immukul@192 cc % ls -ltr
total 40
-rw-r--r--@ 1 immukul staff 5425 Jul 3 11:48 Sample_XLSX.xlsx

命令之後

immukul@192 cc % ls -ltr
total 16
-rw-r--r--@ 1 immukul staff 5425 Jul 3 11:48 Sample_XLSX.csv

更新於: 2021-07-29

1K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告