PR(記事内にアフィリエイト広告が含まれています)
スポンサーリンク
C#

C#でxlsをxlsxへ変換

C#でClosedXMLを使う場合、拡張子がxlsxである必要があります。
xlsxは中身がxmlなので、単純に拡張子をxlsから変更しただけでは使えないので、通常はExcel操作でxlsxへ別名保存することになります。ファイルが一個くらいなら手動でもいいですが、大量にあった場合はC#で簡単なツールを作って、一括で処理したほうが圧倒的に楽ですね。


そのためには設定が事前に必要です。
参照マネージャー
>COM
>Microsoft Excel 15.0 Object Library
にチェックを付けて、使えるようにする
上記の設定をしてから、以下のようなソースで実現できます。

// 元ファイルパス
String oldFilePath = @"ファイルのフルパス";
// 新ファイルパス
String oldFilePath = @"ファイルのフルパス";
// Excelブック
Microsoft.Office.Interop.Excel.Workbook eWorkbook = excelApp.Workbooks.Open(oldFilePath);
// VBA無しでファイルを保存
eWorkbook.SaveAs(newFilePath,
Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);
// VBAありとしてファイルを保存
eWorkbook.SaveAs(newFilePath,
Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbookMacroEnabled, Type.Missing,
Type.Missing, Type.Missing, Type.Missing,
Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing);

VBAありのときは拡張子を「.xlsm」(マクロありなのでmになる)にする必要があるので、そこを意識してコーディングしてみてください。

コメント

タイトルとURLをコピーしました