无需打开文件即可在Excel工作簿中获取工作表

时间:2010-09-15 21:10:43

标签: c# asp.net-mvc excel

我正在构建一个ASP.NET MVC 2内部网应用程序,用户将在其中上传数据文件。如果文件是Excel电子表格,则应为用户提供选择要导入的工作表的选项。其中一些文件可能非常大,因此将异步导入。但是在不保存/打开文件的情况下获取工作表列表会很棒。

这可能吗?或者任何人都可以建议一个体面的解决方法(不用在文本框中接受工作表名称)?

3 个答案:

答案 0 :(得分:2)

我能想到的唯一解决方法,虽然我不愿意称之为体面,但涉及使用Silverlight并依赖于2007年格式的Excel文件(Open XML或其他任何名称)。然后,您可以使用Silverlight在本地打开该文件,并(hackishly)获取工作表的列表。您还可以使用Silverlight进行实际上传。或者您可以提取相关的工作表并仅上传这些工作表。

答案 1 :(得分:1)

您可以使用System.IO.Packaging库访问该信息,这样您就可以访问构成Excel文档的XML,从而可以查看构成Excel文档的工作表。

另一种选择是使用Open XML SDK 2.0并通过强类型对象访问工作表,即WorkSheetPart。既不会快速或干净,因为这将是一项很好的工作,但除了Alex的建议之外,还有另外两种选择。

答案 2 :(得分:1)

如果您只是将数据导入数据库,则可以使用OLE JET 4.0驱动程序并使用System.Data.SqlConnection.GetSchema访问模式(我认为这是函数名称)。