从存储在Sharepoint中的Excel文档中读取数据?

问题描述:

如何读取存储为共享点spfile的excel 2003文档?使用SPFile.OpenBinary()可以毫无问题地从库中检索文档,然后将其放入MemoryStream中。从存储在Sharepoint中的Excel文档中读取数据?

最初的想法是使用OpenXML来询问文档(它将把这个对象类型作为构造函数),但Excel版本(2003)禁止这样做。

为了进一步解决问题,我不能保证在主机上有任何Excel版本,因此可能无法使用互操作程序集。

感谢您的建议或解决方案。


,当我说阅读,我的意思是从指定范围中提取数据,单元格引用等。所有我发现(Exceldatareader,NOPI,OpenXML的)的开源库有一定的限制或其他禁止其使用。例如无法加载启用宏的工作表

将excel文档加载到SharePoint文件夹中,该文件夹将该列表作为SPFile的集合公开。这些文件可以简单地读入到MemoryStream中,但是我尝试过的大多数库都需要一个文件流构造函数,这意味着要写入应用程序服务器上的文件系统

我还没试过SpreadsheetGear,但如果没有足迹在文件系统上,然后我会看一看,但这不是这个项目的一个选项。我会更新这个线索与我的发现...

我沦落到使用PIA的。脏,脏,脏。

我在codeplex上找到了这个[library](http://exceldatareader.codeplex.com/),它似乎能够读取任何Excel版本。网络上可能有更多

+0

我使用目前这个库没有任何成功,我不知道我是否就可以写入到文件系统上的位置。构造函数只接收文件流而不是内存流对象。 – OldBoy 2009-11-07 08:08:00

当你说你读的是什么意思?开发者似乎在讨论这个术语的定义是什么。无论哪种方式,Excel是否在他们的系统上都不重要,因为我只能确信,如果这个人想以任何方式查看文件,他们至少需要读者。所以说,我相信你的恐惧是一个有争议的问题,使用MemoryStream就足够了。

可以打开一个XLS和从与SpreadsheetGear.Factory.GetWorkbookSet()的存储器流XLSX工作簿。Workbooks.OpenFromStream(System.IO.Stream),并且还具有从字节数组OpenFromMemory直接打开的能力(字节[])。一旦打开,SpreadheetGear有一个全面的API,计算引擎,渲染引擎等等。

您可以看到现场示例here并下载免费试用here

声明:我自己的SpreadsheetGear LLC