C# 在Excel工作簿中获取工作表而不打开文件
我正在构建一个ASP.NETMVC2intranet应用程序,用户将在其中上载数据文件。如果文件是excel电子表格,则应为用户提供选择要导入的工作表的选项。其中一些文件可能非常大,因此将异步导入。但是,在不保存/打开文件的情况下抓取工作表列表将是一件好事C# 在Excel工作簿中获取工作表而不打开文件,c#,asp.net-mvc,excel,C#,Asp.net Mvc,Excel,我正在构建一个ASP.NETMVC2intranet应用程序,用户将在其中上载数据文件。如果文件是excel电子表格,则应为用户提供选择要导入的工作表的选项。其中一些文件可能非常大,因此将异步导入。但是,在不保存/打开文件的情况下抓取工作表列表将是一件好事 这可能吗?或者有人能提出一个合适的解决方案(不必在文本框中接受工作表名称)我能想到的唯一解决方案,尽管我不太愿意称之为合适,但涉及到使用Silverlight,并且依赖于2007格式的Excel文件(开放XML或其他任何名称)。然后,您可以使
这可能吗?或者有人能提出一个合适的解决方案(不必在文本框中接受工作表名称)我能想到的唯一解决方案,尽管我不太愿意称之为合适,但涉及到使用Silverlight,并且依赖于2007格式的Excel文件(开放XML或其他任何名称)。然后,您可以使用Silverlight在本地打开该文件,并(恶意地)获取工作表列表。您还可以使用Silverlight进行实际上传。或者你可以提取相关的工作表,然后只上传这些工作表。我能想到的唯一解决办法,虽然我不太愿意称之为体面,但涉及到使用Silverlight,并且依赖于2007格式的Excel文件(Open XML或其他任何名称)。然后,您可以使用Silverlight在本地打开该文件,并(恶意地)获取工作表列表。您还可以使用Silverlight进行实际上传。或者,您可以提取相关工作表并仅上载这些工作表。您可以通过使用
System.IO.Packaging
库访问这些信息,这将允许您访问构成Excel文档的XML,从而允许您查看构成Excel文档的工作表
另一个选项是使用OpenXMLSDK2.0,并通过强类型对象访问工作表,即
WorkSheetPart
。这两种方法都不会很快或很干净,因为这将是一个很好的工作量,但除了Alex的建议之外,还有两种方法。您可以使用System.IO.Packaging
库,这将允许您访问构成Excel文档的XML,从而允许您查看构成Excel文档的工作表
另一个选项是使用OpenXMLSDK2.0,并通过强类型对象访问工作表,即
WorkSheetPart
。这两种方法都不是很快,也不是很干净,因为这将是一个很好的工作量,但是除了Alex的建议之外还有两个其他的选择。如果您只是将数据导入数据库,您可以使用OLE JET 4.0驱动程序,并使用System.data.SqlConnection.GetSchema访问模式(我认为这是函数名).如果只是将数据导入数据库,则可以使用OLE JET 4.0驱动程序并使用System.data.SqlConnection.GetSchema访问模式(我认为这是函数名).可以使用ADOX.Catalog列出工作表和命名范围。可以使用ADOX.Catalog列出工作表和命名范围。谢谢Alex,我不想走silverlight路线,但可能不得不这样做!谢谢Alex,我不想走silverlight路线,但可能不得不走!这听起来很有希望,如果线程正常工作,我会研究并更新它。谢谢这听起来很有希望,如果我让它工作起来,我会研究并更新这个线程。谢谢