2011-03-10 387 views
34

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

+0

@ ocasoprotal,接受答案。这工作! – 2011-03-28 19:40:16

+0

@Brian Huh?我不是原始的海报,因此我不能接受答案。我刚刚解决了这个问题。 @Ankur必须接受答案。 – 2011-03-29 05:30:18

+0

@Swampape的答案效果很好。如果OP可以标记答案,那将会很好。 – Zach 2015-01-15 17:42:42

回答

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

+0

@thanks for the发布!这正是我所寻找的:) – 2011-03-28 19:39:32

+1

声明“命令行不足以将xlsx转换为csv。”应该被删除(不真实),并且“您需要一些外部工具”应该替换为“您可以使用”等。例如,请参阅@marbel的答案(但还有其他解决方案)。 – 2016-03-15 10:05:44

+0

请参阅http://stackoverflow.com/questions/10557360/convert-xlsx-to-csv-in-linux-command-line?rq=1 – 2016-03-15 10:07:14

5

要通过user183038跟进答案,这里是一个shell脚本,批处理所有XLSX文件重命名为CSV同时保留文件名称。运行前需要安装xlsx2csv工具。

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

尝试in2csv

用法:

in2csv file.xlsx > file.csv 
0

感谢@克里斯 - 陆克文

这里是将处理多个文件拖放,从窗户扔下版本。通过

Christian Lemer 
plang 
ScottF 

https://stackoverflow.com/a/36804963

本品采用VBS,需要Excel的安装

0

添加到@马贝尔的回答(这是一个伟大的建议!)基于上述作品 ,这里是对于工作的脚本我在Mac OS X上尉的终端,为转换(因为这是什么OP问)。我认为做一个for循环会很简单,但事实并非如此! (必须通过字符串操作来更改扩展名,它看起来像Mac的庆典有点也不同)

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. 如果文件名中有空格,则上述操作将不起作用。在运行脚本之前,请将空格转换为下划线或其他内容。
1

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

你可以在这里找到完整的示例安装Excel How to convert Excel xlsx file to csv file in batch by PowerShell

1

需求,因为它使用的Excel.Applicationcom 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"