web-dev-qa-db-ja.com

コマンドラインを使用して.CSVを.XLSXに変換する

コマンドラインを使用して、一連の.csvファイルを.xlsxにバッチ変換する方法を探しています。

私は見つけたさまざまなVBScriptをいくつか試しましたが、それらはすべて.xlsx.csvに変換しているようであり、その逆ではありません。

これが私が見つけた最も近いものですが、ここでも.xlsxから.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"

何か案は?

7
crackruckles

唯一の前提条件は、「。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!"
8
Sam

免責事項:私は https://gitlab.com/DerLinkshaender/csv2xlsx でオープンソースとして利用可能なCSV2XLSXを作成しました

上記のような外部ツールを試してみてください。どうして?

利点:

  • windows Script Hostがブロックされている場合でも使用できます。
  • オペレーティングシステムに依存しないため、すべてのOSで同じオプションセットを備えた使い慣れたツールを使用できます(脳のメモリを節約する:-))。
  • excelやLibreOfficeなどをインストールする必要がないため、追加のモジュールや言語をインストールする必要はありません。
  • 複数のCSVパラメータをコマンドラインパラメータとして指定すると、ソースコードを掘り下げる必要がないため、ツールが「SysAdminフレンドリー」になります。
  • csvデータの行または列の範囲を指定することもできます。
  • xlsxファイル形式は非常に複雑なので、Officeパッケージのインストールに頼らずに書き込むことは、気弱な人には向いていません。
  • ツールはOS固有のループロジックに統合できるため、バッチ処理により適しています。
  • DevOps/SysAdminを念頭に置いて、有用なコマンドラインフラグのセットを提供しようとしました。既存のスクリプトの多くは、コマンドラインオプションによる適切な制御が不足しています。
11
Arminius

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>
1
James Moberg

WindowsまたはLinux/Macを使用していますか?

どちらにせよあなたのための解決策があるかもしれません。

以下は、プログラムにコメントを付けずに問題を解決する方法です。

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

[〜#〜] edit [〜#〜]これが基本的な解決策です:

基本的に、ファイルが配置されているディレクトリからフィルター(この場合はxlsxフィルター)を適用します。

Nvmこれは、Windowsで見たところです./directory --headless --convert-to xlsx: "Calc MS Excel 2007 XML" file.csv

この場合、「Calc MS Excel 2007 XML」がフィルターです。

これは単一のファイルで機能します。バッチを追加します。

0
Robert Melikyan

これは、NPOIライブラリを使用して作成したWindowsマシン用のオープンソースツールで、Excelをマシンにインストールする必要なく、XLD/XLSX変換でファイルをシンプルに区切ります。バイナリを自分で作成したくない場合は、Bin/Debugにあります。必要なライブラリはすべて実行可能ファイルに含まれているため、スタンドアロンで動作できます。

https://github.com/nmolinos/csv2Excel

0
Nico M