如何使用批处理脚本将多个xlsx文件转换为csv文件?
0x6upsns1#
试试in2csv!用法:
in2csv file.xlsx > file.csv
jdzmm42g2#
转换为csv的替代方法。使用libreoffice:
libreoffice
libreoffice --headless --convert-to csv *
请注意,这将只转换Excel文件的第一个工作表。
bbuxkriu3#
获取所有文件项并按后缀过滤,然后使用PowerShell Excel VBA对象将Excel文件保存为csv文件。
$excelApp = New-Object -ComObject Excel.Application $excelApp.DisplayAlerts = $false Get-ChildItem -File -Filter '*.xlsx' | ForEach-Object { $workbook = $excelApp.Workbooks.Open($_.FullName) $csvFilePath = $_.FullName -replace "\.xlsx$", ".csv" $workbook.SaveAs($csvFilePath, [Microsoft.Office.Interop.Excel.XlFileFormat]::xlCSV) $workbook.Close() }
您可以在此处找到完整的示例How to convert Excel xlsx file to csv file in batch by PowerShell
gt0wga4j4#
为了跟进user183038给出的答案,下面是一个shell脚本,用于批量将所有xlsx文件重命名为csv,同时保留文件名。xlsx2csv工具需要在运行之前安装。
for i in *.xlsx; do filename=$(basename "$i" .xlsx); outext=".csv" xlsx2csv $i $filename$outext done
wko9yo5t5#
您需要一个外部工具,例如:SoftInterface.com - Convert XLSX to CSV.安装后,您可以在批处理中使用以下命令:第一个月
8fq7wneg6#
需要安装excel,因为它使用Excel.Applicationcom object。将其另存为***.bat***文件:
Excel.Application
.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文件的绝对路径、工作表名称和目标csv文件的绝对路径:
call toCsv.bat "%cd%\Book1.xlsx" Sheet1 "%cd%\csv.csv"
tjrkku2a7#
除了@marbel的回答(这是一个很好的建议!),下面是我在Mac OS X El Captain's Terminal上工作的脚本,用于 * batch * 转换(因为这是OP要求的)。我认为做一个for循环是微不足道的,但它不是!(必须通过字符串操作更改扩展名,看起来Mac的bash也有点不同)
for
for x in $(ls *.xlsx); do x1=${x%".xlsx"}; in2csv $x > $x1.csv; echo "$x1.csv done."; done
注:
${x%”.xlsx”}
.xlsx
7条答案
按热度按时间0x6upsns1#
试试in2csv!
用法:
jdzmm42g2#
转换为csv的替代方法。使用
libreoffice
:请注意,这将只转换Excel文件的第一个工作表。
bbuxkriu3#
获取所有文件项并按后缀过滤,然后使用PowerShell Excel VBA对象将Excel文件保存为csv文件。
您可以在此处找到完整的示例How to convert Excel xlsx file to csv file in batch by PowerShell
gt0wga4j4#
为了跟进user183038给出的答案,下面是一个shell脚本,用于批量将所有xlsx文件重命名为csv,同时保留文件名。xlsx2csv工具需要在运行之前安装。
wko9yo5t5#
您需要一个外部工具,例如:SoftInterface.com - Convert XLSX to CSV.
安装后,您可以在批处理中使用以下命令:
第一个月
8fq7wneg6#
需要安装excel,因为它使用
Excel.Application
com object。将其另存为***.bat
***文件:它接受三个参数-xlsx文件的绝对路径、工作表名称和目标csv文件的绝对路径:
tjrkku2a7#
除了@marbel的回答(这是一个很好的建议!),下面是我在Mac OS X El Captain's Terminal上工作的脚本,用于 * batch * 转换(因为这是OP要求的)。我认为做一个
for
循环是微不足道的,但它不是!(必须通过字符串操作更改扩展名,看起来Mac的bash也有点不同)注:
${x%”.xlsx”}
是bash字符串操作,它从字符串末尾剪切.xlsx
。1.如果文件名中有空格,上面的方法将不起作用。在运行脚本之前,最好将空格转换为下划线或其他形式。