63
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Làm thế nào để bạn chuyển đổi nhiều tệp XLSX thành các tệp CSV bằng tập lệnh hàng loạt?
Phoebe
2.7543 huy hiệu vàng22 Huy hiệu bạc27 Huy hiệu đồng3 gold badges22 silver badges27 bronze badges
Đã hỏi ngày 10 tháng 3 năm 2011 lúc 7:34Mar 10, 2011 at 7:34
6
Hãy thử In2CSV!
Usage:
in2csv file.xlsx > file.csvĐã trả lời ngày 23 tháng 4 năm 2015 lúc 18:31Apr 23, 2015 at 18:31
Marbelmarbelmarbel
7.4615 Huy hiệu vàng48 Huy hiệu bạc67 Huy hiệu đồng5 gold badges48 silver badges67 bronze badges
1
Nhận tất cả các mục tệp và lọc chúng bằng hậu tố và sau đó sử dụng đối tượng PowerShell Excel VBA để lưu các tệp Excel vào các tệp 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() }Bạn có thể tìm thấy mẫu hoàn chỉnh ở đây cách chuyển đổi tệp excel xlsx thành tệp CSV theo đợt của PowerShell
Đã trả lời ngày 30 tháng 3 năm 2017 lúc 5:49Mar 30, 2017 at 5:49
EricericEric
8698 Huy hiệu bạc7 Huy hiệu đồng8 silver badges7 bronze badges
1
Cách thay thế để chuyển đổi thành CSV. Sử dụng libreoffice:
libreoffice --headless --convert-to csv *Xin lưu ý rằng điều này sẽ chỉ chuyển đổi bảng tính đầu tiên của tệp Excel của bạn.
Đã trả lời ngày 7 tháng 10 năm 2019 lúc 18:09Oct 7, 2019 at 18:09
1
Để theo dõi câu trả lời của User183038, đây là tập lệnh shell thành Batch đổi tên tất cả các tệp XLSX thành CSV trong khi bảo tồn tên tệp. Công cụ XLSX2CSV cần được cài đặt trước khi chạy.
for i in *.xlsx; do filename=$(basename "$i" .xlsx); outext=".csv" xlsx2csv $i $filename$outext doneĐã trả lời ngày 5 tháng 12 năm 2014 lúc 12:02Dec 5, 2014 at 12:02
Jstajstajsta
2.96725 huy hiệu bạc33 huy hiệu đồng25 silver badges33 bronze badges
Bạn cần một công cụ bên ngoài, ví dụ: SoftInterface.com - Chuyển đổi XLSX thành CSV.
Sau khi cài đặt nó, bạn có thể sử dụng lệnh sau trong lô của mình:
"c:\Program Files\Softinterface, Inc\Convert XLS\ConvertXLS.EXE" /S"C:\MyExcelFile.xlsx" /F51 /N"Sheet1" /T"C:\MyExcelFile.CSV" /C6 /M1 /V
Đã trả lời ngày 14 tháng 3 năm 2011 lúc 6:39Mar 14, 2011 at 6:39
jingjingjing
1.8572 huy hiệu vàng19 Huy hiệu bạc35 Huy hiệu đồng2 gold badges19 silver badges35 bronze badges
2
Nhu cầu cài đặt Excel vì nó sử dụng đối tượng $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() } 0 COM.Ve$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() } 1 file:
@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();Nó chấp nhận ba đối số - đường dẫn tuyệt đối đến tệp XLSX, tên trang tính và đường dẫn tuyệt đối đến tệp CSV đích:
call toCsv.bat "%cd%\Book1.xlsx" Sheet1 "%cd%\csv.csv"Đã trả lời ngày 30 tháng 3 năm 2017 lúc 7:28Mar 30, 2017 at 7:28
Npocmakanpocmakanpocmaka
53.9K18 Huy hiệu vàng141 Huy hiệu bạc179 Huy hiệu đồng18 gold badges141 silver badges179 bronze badges
1
Thêm vào câu trả lời của @Marbel (đó là một gợi ý tuyệt vời!), Đây là kịch bản làm việc cho tôi trên thiết bị đầu cuối của Mac OS X El Captain, để chuyển đổi hàng loạt (vì đó là những gì OP đã hỏi). Tôi nghĩ rằng sẽ là tầm thường khi thực hiện một vòng lặp $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() } 2 nhưng không phải vậy! (Phải thay đổi phần mở rộng bằng thao tác chuỗi và có vẻ như Bash của Mac cũng hơi khác một chút)
for x in $(ls *.xlsx); do x1=${x%".xlsx"}; in2csv $x > $x1.csv; echo "$x1.csv done."; doneNote:
- $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() } 3 là thao tác chuỗi bash mà clip $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() } 4 từ cuối chuỗi.
- IN2CSV tạo các tệp CSV riêng biệt (không ghi đè lên XLSX).
- Những điều trên sẽ không hoạt động nếu tên tệp có không gian trắng trong đó. Tốt để chuyển đổi không gian trắng thành dấu gạch dưới hoặc một cái gì đó, trước khi chạy tập lệnh.
jpaugh
6.2774 Huy hiệu vàng36 Huy hiệu bạc90 Huy hiệu Đồng4 gold badges36 silver badges90 bronze badges
Đã trả lời ngày 22 tháng 3 năm 2017 lúc 11:06Mar 22, 2017 at 11:06
AnupamanupamAnupam
14.3K18 Huy hiệu vàng63 Huy hiệu bạc92 Huy hiệu Đồng18 gold badges63 silver badges92 bronze badges
2
Đây là những gì đã làm việc cho tôi để chuyển đổi tất cả các tệp $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() } 5 thành $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() } 6 trong thư mục hiện tại từ PowerShell với Excel được cài đặt:
$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() }Đã trả lời ngày 5 tháng 7 lúc 21:11Jul 5 at 21:11
JonjonJon
8,5966 Huy hiệu vàng54 Huy hiệu bạc72 Huy hiệu đồng6 gold badges54 silver badges72 bronze badges