Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Excel工作簿中获取工作表而不打开文件_C#_Asp.net Mvc_Excel - Fatal编程技术网

C# 在Excel工作簿中获取工作表而不打开文件

C# 在Excel工作簿中获取工作表而不打开文件,c#,asp.net-mvc,excel,C#,Asp.net Mvc,Excel,我正在构建一个ASP.NETMVC2intranet应用程序,用户将在其中上载数据文件。如果文件是excel电子表格,则应为用户提供选择要导入的工作表的选项。其中一些文件可能非常大,因此将异步导入。但是,在不保存/打开文件的情况下抓取工作表列表将是一件好事 这可能吗?或者有人能提出一个合适的解决方案(不必在文本框中接受工作表名称)我能想到的唯一解决方案,尽管我不太愿意称之为合适,但涉及到使用Silverlight,并且依赖于2007格式的Excel文件(开放XML或其他任何名称)。然后,您可以使

我正在构建一个ASP.NETMVC2intranet应用程序,用户将在其中上载数据文件。如果文件是excel电子表格,则应为用户提供选择要导入的工作表的选项。其中一些文件可能非常大,因此将异步导入。但是,在不保存/打开文件的情况下抓取工作表列表将是一件好事


这可能吗?或者有人能提出一个合适的解决方案(不必在文本框中接受工作表名称)

我能想到的唯一解决方案,尽管我不太愿意称之为合适,但涉及到使用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路线,但可能不得不走!这听起来很有希望,如果线程正常工作,我会研究并更新它。谢谢这听起来很有希望,如果我让它工作起来,我会研究并更新这个线程。谢谢