C#에서 확장자가 xlsb인 엑셀파일을 읽지 못하여 오류가 발생합니다. 일반적인 엑셀이 아닌 엑셀바이너리 파일인데요. 유료 유틸(Aspose.Cells)들이 있긴 하지만 유료를 사용하기는 어렵고 할 때 아래와 같이 사용하시면 되겠습니다. Interop.Excel을 사용하여 xlsb파일을 xlsx파일로 변환을 하여 엑셀을 읽으면 되는데요. 인터럽 엑셀이 로드해서 읽을 때에는 매우 느리다는 단점이 있긴 하지만, 파일변환(SaveAs)만 할 때에는 그렇게 느리지 않습니다.
var input = new FileInfo(inputFullPath);
var output = new FileInfo(outputExcelFullPath);
var excelApp = new Application();
Workbooks wbs = excelApp.Workbooks;
Workbook wb = wbs.Open(input.FullName);
// convert xlsb to xlsx
wb.SaveAs(output.FullName, XlFileFormat.xlWorkbookDefault);
try
{
wb.Close();
}`
finally
{
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
Marshal.ReleaseComObject(wb);
Marshal.ReleaseComObject(wbs);
Marshal.ReleaseComObject(excelApp);
}
그 외에 Nuget중에 LinqToExcel 라이브러리도 xlsb를 지원을 하니 사용해 보시면 좋겠네요.