0

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

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

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

建议或解决方案将不胜感激。


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

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

我没有尝试过SpreadsheetGear,但如果文件系统上没有足迹,那么我会确定一下,但这不是这个项目的一个选项。我会用我的发现更新这个线程......

我只能使用 PIA。脏,脏,脏。

4

3 回答 3

1

SpreadsheetGear for .NET可以使用 SpreadsheetGear.Factory.GetWorkbookSet().Workbooks.OpenFromStream(System.IO.Stream) 从内存流中打开 xls 和 xlsx 工作簿,还可以使用 OpenFromMemory(byte [])。一经打开,SpreadheetGear 拥有完善的 API、计算引擎、渲染引擎等。

您可以在此处查看实时样本并此处下载免费试用版。

免责声明:我拥有 SpreadsheetGear LLC

于 2009-11-09T20:58:17.653 回答
0

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

于 2009-11-07T08:01:55.183 回答
0

当您说阅读时,您到底是什么意思?关于该术语的定义,开发人员之间似乎存在一些激烈的争论。无论哪种方式,Excel 是否在他们的系统上都无关紧要,因为我很确定如果该人想以任何方式查看文件,他们至少需要一个阅读器。话虽如此,我相信你的恐惧是一个有争议的问题,使用 MemoryStream 就足够了。

于 2009-11-09T14:12:56.857 回答