使用批处理将xlsx文件转换为csv

如何使用批处理脚本将多个xlsx文件转换为csv文件?

试试in2csv !

用法:

in2csv file.xlsx > file.csv 

要跟进user183038的答案,这里是一个shell脚本,用于在保留文件名的同时将所有xlsx文件批量重命名为csv。 运行前需要安装xlsx2csv工具。

 for i in *.xlsx; do filename=$(basename "$i" .xlsx); outext=".csv" xlsx2csv $i $filename$outext done 

您需要一个外部工具,例如: SoftInterface.com – 将XLSX转换为CSV 。

安装完成后,可以在批处理中使用以下命令:

"c:\Program Files\Softinterface, Inc\Convert XLS\ConvertXLS.EXE" /S"C:\MyExcelFile.xlsx" /F51 /N"Sheet1" /T"C:\MyExcelFile.CSV" /C6 /M1 /V

获取所有文件项目并通过后缀过滤,然后使用PowerShell Excel VBA对象将excel文件保存为csv文件。

 $excelApp = New-Object -ComObject Excel.Application $excelApp.DisplayAlerts = $false $ExcelFiles | ForEach-Object { $workbook = $excelApp.Workbooks.Open($_.FullName) $csvFilePath = $_.FullName -replace "\.xlsx$", ".csv" $workbook.SaveAs($csvFilePath, [Microsoft.Office.Interop.Excel.XlFileFormat]::xlCSV) $workbook.Close() } 

您可以在这里find完整的示例如何通过PowerShell批量将Excel xlsx文件转换为csv文件

感谢@ chris-rudd

这是一个版本,将处理多个文件从窗口拖放。 基于以上的作品

 Christian Lemer plang ScottF 

https://stackoverflow.com/a/36804963

这使用VBS并需要安装Excel

添加到@ marbel的答案(这是一个很好的build议!),这是在Mac OS X El Captain的terminal上为我工作的脚本,用于批量转换(因为这是OP所要求的)。 我认为做一个for循环将是微不足道的for但事实并非如此! (不得不通过string操作改变扩展名,看起来Mac的bash也有点不同)

 for x in $(ls *.xlsx); do x1=${x%".xlsx"}; in2csv $x > $x1.csv; echo "$x1.csv done."; done 

注意:

  1. ${x%”.xlsx”}是bashstring操作,从string的末尾剪辑.xlsx
  2. in2csv创build单独的csv文件(不会覆盖xlsx的文件)。
  3. 如果文件名中有空格,上述操作将不起作用。 在运行脚本之前,很好的将空格转换为下划线。

需要安装Excel,因为它使用Excel.Application com对象。将其保存为.bat文件:

 @if (@X)==(@Y) @end /* JScript comment @echo off cscript //E:JScript //nologo "%~f0" %* exit /b %errorlevel% @if (@X)==(@Y) @end JScript comment */ var ARGS = WScript.Arguments; var xlCSV = 6; var objExcel = WScript.CreateObject("Excel.Application"); var objWorkbook = objExcel.Workbooks.Open(ARGS.Item(0)); objExcel.DisplayAlerts = false; objExcel.Visible = false; var objWorksheet = objWorkbook.Worksheets(ARGS.Item(1)) objWorksheet.SaveAs( ARGS.Item(2), xlCSV); objExcel.Quit(); 

它接受三个参数 – xlsx文件的绝对path,表格名称和目标csv文件的绝对path:

 call toCsv.bat "%cd%\Book1.xlsx" Sheet1 "%cd%\csv.csv"