Конвертировать.CSV для.XLSX с помощью командной строки

Я ищу способ, чтобы конвертировать серии .csv файлы .xlsx С помощью командной строки.

Я пробовал кучу разных VBScripts, которые я нашел, но все они, похоже, преобразуют .xlsx to .csv, а не наоборот.

вот ближайший, который я мог найти, но снова это .xlsx to .csv:

if WScript.Arguments.Count < 2 Then
    WScript.Echo "Error! Please specify the source path and the destination. Usage: XlsToCsv SourcePath.xls Destination.csv"
    Wscript.Quit
End If
Dim oExcel
Set oExcel = CreateObject("Excel.Application")
Dim oBook
Set oBook = oExcel.Workbooks.Open(Wscript.Arguments.Item(0))
oBook.SaveAs WScript.Arguments.Item(1), 6
oBook.Close False
oExcel.Quit
WScript.Echo "Done"

какие идеи?

5 ответов


только при условии, что ".csv " должен быть строчным в имени файла:

Dim file, WB

With CreateObject("Excel.Application")
    On Error Resume Next
    For Each file In WScript.Arguments
        Set WB = .Workbooks.Open(file)
        WB.SaveAs Replace(WB.FullName, ".csv", ".xlsx"), 51
        WB.Close False
    Next    
    .Quit
End With

WScript.Echo "Done!"

отказ от ответственности: я написал CSV2XLSX доступен как с открытым исходным кодом вhttps://gitlab.com/DerLinkshaender/csv2xlsx

вы можете попробовать внешний инструмент, подобный приведенному выше. Почему?

плюсы:

  • может использоваться даже там, где блокируется хост скрипта Windows.
  • независимо от операционной системы, поэтому вы можете использовать знакомый инструмент с тем же набором опций на каждой ОС (сохранить память мозга :-) ).
  • нет установка Excel или LibreOffice и т. д. необходимо, поэтому вам не нужно заботиться об установке дополнительных модулей или языков.
  • указание нескольких параметров CSV в качестве параметров командной строки делает инструмент" sysadmin-friendly", поскольку им не нужно копать исходный код.
  • вы даже можете указать диапазоны строк или столбцов для данных csv.
  • формат файла xlsx очень сложный, писать его без обращения к установке пакета office не для слабонервные.
  • улучшайте одетый для пакетной обработки по мере того как инструмент можно интегрировать в ОС-специфической логике петли.
  • Я попытался предоставить полезный набор флагов командной строки с DevOps / SysAdmin в виду, многие существующие скрипты не имеют хорошего контроля через параметры командной строки.

для Windows я недавно ответил на аналогичный вопрос о SuperUser.com.

https://superuser.com/a/1011154/326177

Я думаю всего CSV конвертер является наименее дорогостоящим вариантом с большинством функций. Он даже не требует установки Excel и может выводить данные CSV в JSON, Access, DBF, XML или SQL.

http://www.coolutils.com/TotalCSVConverter

CSVConverter.exe <source> <destination> <options>

вы на Windows или Linux / Mac?

У меня может быть решение для вас в любом случае.

вот решение ваших проблем без программах прокомментировал ниже:

https://social.msdn.microsoft.com/Forums/en-US/74df1378-7c0c-4c0f-b174-fa97a5c2969b/convert-csv-to-xlsx?forum=Vsexpressvb

редактировать Итак, вот основное решение:

в основном вы применяете фильтр (который в этом случае будет фильтр xlsx) из каталога, в котором находится ваш файл.

Nvm это я только что видел, что вы находитесь на Windows ./ каталог --headless --convert-to xlsx: файл" Calc MS Excel 2007 XML".csv

в этом случае "Calc MS Excel 2007 XML" является фильтром.

Это работает для отдельных файлов, позвольте мне добавить пакет в секунду.


вот инструмент с открытым исходным кодом для машин Windows, которые я создал с помощью библиотек NPOI, который выполняет простые преобразования с разделителями в XLS/XLSX без необходимости установки Excel на машине. Двоичный файл находится в Bin / Debug, если вы не хотите создавать его самостоятельно. Все необходимые библиотеки включены в исполняемый файл, чтобы он мог работать автономно.

https://github.com/nmolinos/csv2excel