我想从byte []打开Excel,因为我的文件已加密,我想在解密后打开但不写文件。
Office拥有“受限制的访问权限”,我想在此保护下打开文件,但不将解密后的内容保存在文件中。
myApp.Workbooks.Open
仅支持路径。
有可能吗?
答案 0 :(得分:1)
这是不可能的,因为互操作实际上是程序在计算机上运行和操作现有excel的接口。
我认为您需要使用Microsoft创建的openxml来处理excel word和powerpoint。
然后您可以使用:
ExcelPackage excelPackage = new ExcelPackage(stream)
或
var pck = new OfficeOpenXml.ExcelPackage();
pck.Load(File.OpenRead(path));
pck.Load(Stream)
不仅可以从文件中使用任何流作为输入。
取决于您的需求。
答案 1 :(得分:0)
作为OpenXml的替代品,还有ExcelDataReader,根据我的经验,与Interop.Excel相比,它在处理数据方面要快得多(大约3倍以上)。
它也可以直接打开加密的Excel文件(stackoverflow) ExcelDataReader的github页上有一些很好的示例,说明了如何使用它。您唯一要做的是:
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页面以获取更多信息!