web-dev-qa-db-ja.com

バッチを使用してxlsxファイルをcsvに変換する

複数のxlsxファイルをバッチスクリプトでcsvファイルに変換するにはどうすればよいですか?

42
Ankur

in2csv

使用法:

in2csv file.xlsx > file.csv
23
marbel

User183038による回答をフォローアップするために、ファイル名を保持しながらすべてのxlsxファイルの名前をcsvに一括して変更するシェルスクリプトを次に示します。 xlsx2csvツールは、実行する前にインストールする必要があります。

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

すべてのファイルアイテムを取得し、サフィックスでフィルターし、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() 
} 

ここで完全なサンプルを見つけることができます PowerShellでバッチでExcel xlsxファイルをcsvファイルに変換する方法

8
Eric

外部ツールが必要です。例: SoftInterface.com-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

6
jing

Excel.Applicationを使用するため、Excelをインストールする必要があります comオブジェクト.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();

3つの引数-xlsxファイルへの絶対パス、シート名、およびターゲットcsvファイルへの絶対パスを受け入れます。

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

@ marbel's answer (これは素晴らしい提案です!)に追加して、Mac OS X El Captain's Terminalでbatch変換(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”}は、クリップする.xlsxは文字列の末尾から。
  2. in2csv は、個別のcsvファイルを作成します(xlsxを上書きしません)。
  3. ファイル名に空白が含まれている場合、上記は機能しません。スクリプトを実行する前に、空白をアンダースコアなどに変換すると便利です。
1
Anupam

@ chris-ruddの功績

これは、ウィンドウからドラッグアンドドロップされる複数のファイルを処理するバージョンです。上記の作品に基づく

Christian Lemer
plang
ScottF

https://stackoverflow.com/a/3680496

これはVBSを使用し、Excelのインストールが必要です

0
Yakov Kantor