C# 从字节数组在Interop.Excel中打开工作簿
我想从C# 从字节数组在Interop.Excel中打开工作簿,c#,office-interop,C#,Office Interop,我想从byte[]打开Excel,因为我的文件是加密的,我想在解密后打开,但不写入文件 办公室有“限制访问”功能,我想用这种保护打开我的文件,但不将解密的内容保存在文件中 myApp.Workbooks.Open仅支持路径 有可能吗?这是不可能的,因为interop实际上是程序在计算机上运行和操作现有excel的接口 我认为您需要使用Microsoft创建的openxml来处理excel word和PowerPoint 然后您可以使用: ExcelPackage excelPackage =
byte[]
打开Excel,因为我的文件是加密的,我想在解密后打开,但不写入文件
办公室有“限制访问”功能,我想用这种保护打开我的文件,但不将解密的内容保存在文件中
myApp.Workbooks.Open
仅支持路径
有可能吗?这是不可能的,因为
interop
实际上是程序在计算机上运行和操作现有excel的接口
我认为您需要使用Microsoft创建的openxml
来处理excel word和PowerPoint
然后您可以使用:
ExcelPackage excelPackage = new ExcelPackage(stream)
或
pck.Load(Stream)
不仅可以从文件中使用任何流作为输入
它取决于您的需要。作为OpenXml的替代方案,根据我的经验,它在处理数据方面比Interop.Excel快得多(大约3倍以上) 它还可以直接打开加密的Excel文件() ExcelDataReader的github页面有一些关于如何使用它的好例子。你唯一要做的就是: 这: 变成这样: 如果您只想打开受密码保护的excel文件,请执行以下操作:
var conf = new ExcelReaderConfiguration { Password = "yourPassword" }; //Add this
excelReader = ExcelReaderFactory.CreateReader(stream, conf); //change the excel Reader to this
确保查看Github页面以了解更多信息 在以前的一个项目中,我不得不将Interop.Excel缩短到更快的速度,因为它对于不断增长的报告来说非常缓慢。OpenXml在创建工作表和文档时确实缺乏光泽和样式,但是有点包装和头部创伤,样式可以重新使用。但是我想打开Excel窗口,我需要用户查看文档我不知道你想让他在Excel上看到它。用户只需在excel中查看文档,或者他需要在excel中编辑和保存?@jooota-Oh您想在excel中显示所有内容。。。我不认为这是可能的,你最好的选择是保存你明确表示不想做的文件,或者如果文档在excel中加密,你可以这样打开受密码保护的excel文件:如果你只想让用户查看数据,而不想与它过多交互,你也可以将数据加载到Windows窗体表。我没有其他想法。很抱歉
using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
using (var stream = new MemoryStream(yourByte[])
var conf = new ExcelReaderConfiguration { Password = "yourPassword" }; //Add this
excelReader = ExcelReaderFactory.CreateReader(stream, conf); //change the excel Reader to this