使用批处理将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
注意:
-
${x%”.xlsx”}
是bashstring操作,从string的末尾剪辑.xlsx
。 - in2csv创build单独的csv文件(不会覆盖xlsx的文件)。
- 如果文件名中有空格,上述操作将不起作用。 在运行脚本之前,很好的将空格转换为下划线。
需要安装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"