programing

배치를 사용하여 xlsx 파일을 csv로 변환합니다.

fastcode 2023. 4. 25. 23:09
반응형

배치를 사용하여 xlsx 파일을 csv로 변환합니다.

배치 스크립트를 사용하여 여러 xlsx 파일을 csv 파일로 변환하려면 어떻게 해야 합니까?

2csv를 입력하세요!

용도는 다음과 같습니다.

in2csv file.xlsx > file.csv

CSV로 변환하는 다른 방법입니다.사용하다libreoffice:

libreoffice --headless --convert-to csv *

이렇게 하면 Excel 파일의 첫 번째 워크시트만 변환됩니다.

모든 파일 항목을 가져와 접미사로 필터링한 다음 PowerShell Excel VBA 개체를 사용하여 Excel 파일을 CSV 파일에 저장합니다.

$excelApp = New-Object -ComObject Excel.Application 
$excelApp.DisplayAlerts = $false 

Get-ChildItem -File -Filter '*.xlsx' | 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 파일로 변환하는 방법은 여기를 참조하십시오.

사용자 183038의 답변에 대한 후속 조치를 위해 파일 이름을 유지하면서 모든 xlsx 파일의 이름을 csv로 일괄 변경하는 셸 스크립트가 있습니다.실행하기 전에 xlsx2csv 도구를 설치해야 합니다.

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

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

다음을 사용하기 때문에 설치된 Excel이 필요합니다.Excel.Application com 개체입니다.이 파일을 파일로 저장합니다.

@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"

@marbel의 답변(좋은 제안입니다!)에 덧붙여, Mac OS X El Captain's Terminal에서 일괄 변환을 위해 작동한 스크립트가 있습니다(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. 파일 이름에 공백이 있으면 위의 항목이 작동하지 않습니다.스크립트를 실행하기 전에 공백을 밑줄 등으로 변환하는 것이 좋습니다.

gocsv는 Mac, Linux 및 Windows에서 작동하며 종속성이 없습니다(Microsoft Office, Libre Office 또는 Python 없음).다음과 같이 xlsx 명령을 실행합니다.

gocsv xlsx file.xlsx

이 PowerShell 솔루션은 제게 효과가 있었습니다.다른 옵션(예: csvkit)은 인코딩 문제로 인해 중단되었지만 다음과 같이 작동했습니다.

  • 관리자로 PowerShell을 실행합니다.
  • Install-Module ImportExcel
  • 려려를 실행합니다.Import-Module ImportExcel이겁니다.
    • "이 시스템에서 스크립트 실행이 사용되지 않도록 설정되었습니다."와 같은 오류가 표시되면 다음과 같은 작업을 실행해야 합니다.Set-ExecutionPolicy -ExecutionPolicy Unrestricted
  • cd .xlsx 파일이 들어 있는 디렉토리로 합니다.
  • 디렉터리의 모든 xlsx 파일을 CSV로 변환하려면 이 명령을 실행합니다.Get-ChildItem -Filter *.xlsx | ForEach-Object { Import-Excel $_.FullName | Export-Csv ($_.FullName -replace '\.xlsx$','.csv') -NoTypeInformation }

완료되면 실행 권한을 다시 넣을 수 있습니다.로서는 달리기를 의미했습니다Set-ExecutionPolicy -ExecutionPolicy Restricted요.

언급URL : https://stackoverflow.com/questions/5256733/convert-xlsx-file-to-csv-using-batch 입니다.

반응형