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になる)にする必要があるので、そこを意識してコーディングしてみてください。
コメント