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

时间:2011-03-10 07:34:46

标签: excel csv batch-file xlsx

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

7 个答案:

答案 0 :(得分:21)

试试in2csv

用法:

in2csv file.xlsx > file.csv

答案 1 :(得分:8)

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

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

答案 2 :(得分:7)

获取所有文件项并按后缀过滤它们,然后使用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() 
} 

您可以在How to convert Excel xlsx file to csv file in batch by PowerShell

找到完整的示例

答案 3 :(得分:5)

您需要一个外部工具,例如:SoftInterface.com - Convert XLSX to CSV

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

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

答案 4 :(得分:3)

转换为CSV的替代方法。使用libreoffice

libreoffice --headless --convert-to csv *

答案 5 :(得分:1)

添加到@marbel's answer(这是一个很好的建议!),这是在Mac OS X El Captain的终端上为我工作的脚本,用于批量转换(因为这就是OP问)。我认为做一个for循环是微不足道的,但事实并非如此! (必须通过字符串操作来改变扩展名,看起来Mac的bash也有点不同)

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

注意:

  1. ${x%”.xlsx”}是bash字符串操作,它从字符串的末尾剪切.xlsx
  2. in2csv创建单独的csv文件(不会覆盖xlsx)。
  3. 如果文件名中包含空格,则上述操作无效。在运行脚本之前,可以将空格转换为下划线或其他内容。

答案 6 :(得分:1)

需要安装excel,因为它使用Excel.Application com object。将其保存为 .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"