Я смог сделать это с помощью документа Excel, используя ClosedXML как таковой (после сохранения файла на диске в качестве пути excelFileName):
byte[] byteArray = null;
using (var fs = new FileStream(excelFileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) {
int numBytesToRead = Convert.ToInt32(fs.Length);
byteArray = new byte[numBytesToRead];
fs.Read(byteArray, 0, numBytesToRead);
}
using (MemoryStream mem = new MemoryStream()) {
mem.Write(byteArray, 0, byteArray.Length);
XLWorkbook wb = new XLWorkbook(mem);
...
}
В моем случае я только читаю документ и не буду его сохранять, но вы можете записать измененный поток в другой файл, если это необходимо.