【问题标题】:Reading data from an Excel document stored in Sharepoint?从存储在 Sharepoint 中的 Excel 文档中读取数据?
【发布时间】:2009-11-07 07:39:27
【问题描述】:

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

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

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

我们将不胜感激地收到建议或解决方案。


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

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

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

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

【问题讨论】:

    标签: c# sharepoint excel openxml


    【解决方案1】:

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

    您可以查看实时示例here 并下载免费试用版here

    免责声明:我拥有 SpreadsheetGear LLC

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我目前正在使用这个库但没有成功,我不确定我是否能够写入文件系统上的某个位置。构造函数只接受文件流而不是内存流对象。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2018-09-16
        • 2021-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多