Excel 使用批处理将xlsx文件转换为csv
如何使用批处理脚本将多个xlsx文件转换为csv文件?您需要一个外部工具,例如: 安装后,可以在批处理中使用以下命令:Excel 使用批处理将xlsx文件转换为csv,excel,csv,batch-file,xlsx,Excel,Csv,Batch File,Xlsx,如何使用批处理脚本将多个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要跟进用户183038的回答,这里有一个shell脚本,可以将所有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
要跟进用户183038的回答,这里有一个shell脚本,可以将所有xlsx文件批量重命名为CSV,同时保留文件名。运行前需要安装xlsx2csv工具
for i in *.xlsx;
do
filename=$(basename "$i" .xlsx);
outext=".csv"
xlsx2csv $i $filename$outext
done
试试看
用法:
in2csv file.xlsx > file.csv
再加上(这是一个很好的建议!),下面是在MacOSX El Captain's终端上为我工作的脚本,用于批量转换(因为这是OP要求的)。我原以为为循环执行很简单,但事实并非如此!(不得不通过字符串操作更改扩展名,看起来Mac的bash也有点不同)
注:
${x%.”.xlsx“}
是一种bash字符串操作,它从字符串末尾剪辑.xlsx
李>
创建单独的csv文件(不会覆盖xlsx文件)
如果文件名中有空格,上述操作将不起作用。在运行脚本之前,最好将空格转换为下划线或其他内容
获取所有文件项并按后缀进行筛选,然后使用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,因为它使用的是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"
转换为csv的替代方法。使用libreoffice
:
libreoffice --headless --convert-to csv *
请注意,这只会转换Excel文件的第一个工作表。@ocasoprotal,接受答案。这管用@布莱恩,嗯?我不是原来的海报,因此我不能接受答案。我只是重新回答了这个问题@Ankur必须接受这个答案。试试这个:来自@沼泽猿的答案很有效。如果OP能给出答案就好了。toolStatement“命令行功能不足以将xlsx转换为csv”应该被删除(不正确),并且“您需要一些外部工具”应该被替换为“您可以使用”等。例如,请参阅@marbel的答案(但还有其他解决方案)。请参阅伟大的解决方案!FWIW,通过仔细引用(包括x1=“${x%”“.xlsx”}”
)和设置,您可以非常有效地处理空格。但是,甚至还有,因为文件名也可以有换行符。答案很好。许多.xlsx
我在顶部包含了两个空白行。修改命令以删除前2行(需要在重定向之前):对于x,单位为$(ls*.xlsx);dox1=${x%.”.xlsx“};in2cvs$x | sed 1,2d>$x1.csv;回显“$x1.csv完成。”;完成
感谢您提供了一个很棒的选项,包括删除bash中的.xlsx
避免了使用bashbase
选项!在mac电脑上:/Applications/LibreOffice.app/Contents/MacOS/soffice--headless--convert to csv*
libreoffice --headless --convert-to csv *