Подтвердить что ты не робот

Преобразование xlsx файла в csv с использованием пакета

Как преобразовать несколько файлов xlsx в файлы csv с пакетом script?

4b9b3361

Ответ 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

Примечание:

  1. ${x%'.xlsx'} - это манипуляция строкой bash, которая обрезает .xlsx с конца строки.
  2. in2csv создает отдельные файлы csv (не перезаписывает файлы xlsx).
  3. Выше не будет работать, если имена файлов содержат пробелы. Хорошо преобразовывать пробелы в подчеркивания или что-то еще, прежде чем запускать скрипт.

Ответ 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 *