我正在构建一个ASP.NET MVC 2内部网应用程序,用户将在其中上传数据文件。如果文件是Excel电子表格,则应为用户提供选择要导入的工作表的选项。其中一些文件可能非常大,因此将异步导入。但是在不保存/打开文件的情况下获取工作表列表会很棒。
这可能吗?或者任何人都可以建议一个体面的解决方法(不用在文本框中接受工作表名称)?
答案 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访问模式(我认为这是函数名称)。