Conversion
在命令行上使用分號分隔欄位將 .xlsx (MS Excel) 文件轉換為 .csv
我意識到這不是一個完全與 unix/linux 相關的問題。但由於這是我將在 linux 上做的事情,我希望有人能回答。
我有一個線上 excel 文件 (
.xlsx
),它會定期(由其他人)更新。我想編寫一個腳本並將其作為 cronjob 放入,以便處理該 excel 表。但要做到這一點,我需要將其轉換為.csv
帶有分號分隔列的文本文件(so a )。不幸的是,它不能用逗號分隔,因為有些列中有逗號。是否有可能從 shell 進行這種轉換?我已經安裝了 Open office,我可以通過使用它的 GUI 來執行此操作,但想知道是否可以從命令行執行此操作。謝謝!PS:我也有一台Mac機器,所以如果有一些解決方案可以在那里工作,那也很好。:)
OpenOffice 帶有unoconv程序,用於在命令行上執行格式轉換。
unoconv -f csv filename.xlsx
對於更複雜的要求,您可以使用
Spreadsheet::XLSX
Perl 或openpyxl
Python 解析 XLSX 文件。例如,這是一個快速腳本,用於將工作表列印為分號分隔的 CSV 文件(警告:未經測試,直接在瀏覽器中輸入):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