Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从字节数组在Interop.Excel中打开工作簿_C#_Office Interop - Fatal编程技术网

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