it-swarm.com.de

Konvertieren Sie die xlsx-Datei mit Batch in csv

Wie konvertiert man mehrere xlsx-Dateien mit einem Batch-Skript in csv-Dateien?

38
Ankur

Versuchen Sie in2csv !

Verwendungszweck:

in2csv file.xlsx > file.csv
19
marbel

Um der Antwort von user183038 nachzugehen, haben Sie hier ein Shell-Skript zum Umbenennen aller xlsx-Dateien in csv unter Beibehaltung der Dateinamen. Das xlsx2csv-Tool muss vor dem Ausführen installiert werden.

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

Rufen Sie alle Dateielemente ab und filtern Sie sie nach Suffix. Verwenden Sie dann das PowerShell Excel VBA-Objekt, um die Excel-Dateien in CSV-Dateien zu speichern.

$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() 
} 

Das vollständige Beispiel finden Sie hier Konvertieren von Excel-Xlsx-Dateien in Batchdateien in eine CSV-Datei von PowerShell

6
Eric

Sie benötigen ein externes Werkzeug, zum Beispiel: SoftInterface.com - Konvertieren Sie XLSX in CSV .

Nach der Installation können Sie den folgenden Befehl in Ihrem Stapel verwenden: 

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

5
jing

Installiert Excel, da es Excel.Applicationcom object verwendet. Speichern Sie dies als .bat Datei:

@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();

Es akzeptiert drei Argumente - den absoluten Pfad zur xlsx-Datei, den Blattnamen und den absoluten Pfad zur csv-Zieldatei:

call toCsv.bat "%cd%\Book1.xlsx" Sheet1 "%cd%\csv.csv"
1
npocmaka

Hinzufügen von @ marbel's Antwort (was ein großartiger Vorschlag ist!), Hier ist das Skript, das bei Mac OS X El Captain's Terminal für die batch -Konvertierung funktionierte (da hat das OP gefragt). Ich dachte, es wäre trivial, eine for-Schleife zu machen, aber das war es nicht! (musste die Erweiterung durch String-Manipulation ändern und es sieht so aus, als ob die bash von Mac auch ein bisschen anders ist)

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

Hinweis:

  1. ${x%”.xlsx”} ist eine Bash-String-Manipulation, die .xlsx vom Ende der Zeichenfolge entfernt. 
  2. in2csv erstellt separate CSV-Dateien (überschreibt nicht die Xlsx-Dateien).
  3. Das obige funktioniert nicht, wenn die Dateinamen Leerzeichen enthalten. Es ist gut, Leerzeichen in Unterstriche oder etwas zu konvertieren, bevor das Skript ausgeführt wird.
1
Anupam

Dank an @ chris-rudd

Hier ist eine Version, die mehrere Dateien mit Drag & Drop von Windows ..__ behandeln kann

Christian Lemer
plang
ScottF

https://stackoverflow.com/a/36804963

Dies verwendet VBS und erfordert die Installation von Excel 

0
Yakov Kantor