Как преобразовать несколько файлов xlsx в файлы csv с пакетом script?
Преобразование xlsx файла в csv с использованием пакета
Ответ 1
Попробуйте in2csv!
Использование:
in2csv file.xlsx > file.csv
Ответ 2
Получить все элементы файла и отфильтровать их по суффиксу, а затем использовать объект 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 xlsx в файл CSV в пакетном режиме с помощью PowerShell
Ответ 3
Чтобы получить ответ от пользователя183038, вот оболочка script для переименования всех xlsx файлов в csv при сохранении имен файлов. Инструмент xlsx2csv необходимо установить перед запуском.
for i in *.xlsx;
do
filename=$(basename "$i" .xlsx);
outext=".csv"
xlsx2csv $i $filename$outext
done
Ответ 4
Вам нужен внешний инструмент, например: 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
Ответ 5
В дополнение к @marbel answer (что является отличным предложением!), Вот сценарий, который работал для меня на Mac OS X El Captain Terminal, для пакетного преобразования (с тех пор, как запросил ОП). Я думал, что было бы тривиально сделать цикл for
, но это не так! (пришлось изменить расширение с помощью манипуляции со строками, и похоже, что Mac bash тоже немного отличается)
for x in $(ls *.xlsx); do x1=${x%".xlsx"}; in2csv $x > $x1.csv; echo "$x1.csv done."; done
Примечание:
${x%'.xlsx'}
- это манипуляция строкой bash, которая обрезает.xlsx
с конца строки.- in2csv создает отдельные файлы csv (не перезаписывает файлы xlsx).
- Выше не будет работать, если имена файлов содержат пробелы. Хорошо преобразовывать пробелы в подчеркивания или что-то еще, прежде чем запускать скрипт.
Ответ 6
Требуется установить excel, поскольку он использует Excel.Application
com object. Сохраните это как файл .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"
Ответ 7
Кредит @chris-rudd
Вот версия, которая будет обрабатывать несколько файлов, перетаскиваемых из окон. Основываясь на приведенных выше работах
Christian Lemer
plang
ScottF
fooobar.com/questions/27712/...
Это использует VBS и нуждается в установке Excel
Ответ 8
Альтернативный способ конвертации в CSV. Используйте libreoffice
:
libreoffice --headless --convert-to csv *