В качестве альтернативы OpenXml есть также ExcelDataReader , который, по моему опыту, намного быстрее обрабатывает данные по сравнению с Interop.Excel (примерно в 3 раза +).
Он также может открывать зашифрованные файлы Excel напрямую ( stackoverflow )
Страница github для ExcelDataReader содержит несколько замечательных примеров того, как ее использовать. Единственное, что вам нужно сделать, это:
Это:
using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
Получается так:
using (var stream = new MemoryStream(yourByte[])
И если вы просто хотите открыть защищенный паролем файл Excel, вы должны сделать это:
var conf = new ExcelReaderConfiguration { Password = "yourPassword" }; //Add this
excelReader = ExcelReaderFactory.CreateReader(stream, conf); //change the excel Reader to this
Обязательно проверьте страницу Github для получения дополнительной информации!