读取天蓝色的excelsheet作为blob上传

时间:2012-04-18 12:14:28

标签: c# azure

我正在使用asp.net的FileUpload控件并使用一些数据上传excel。我无法将其保存在某个文件夹中。我可以有excel表文件流,或者我可以在将excel作为blob上传后使用Blobstream。现在我想将excel sheet 1st sheet转换为datatable,那么我该怎么办呢?我正在使用C#.NET。我不想使用Interop库。我可以使用外部库。 Oledb连接失败,因为我没有任何物理路径的Excel作为数据源。我尝试了以下链接:

1)http://www.codeproject.com/Articles/14639/Fast-Excel-file-reader-with-basic-functionality

2)http://exceldatareader.codeplex.com/

请帮忙。

4 个答案:

答案 0 :(得分:2)

根据Excel文件的类型,您可以使用您发布的示例或使用OpenXML备选方案(对于xlsx文件):http://openexcel.codeplex.com/

现在,物理路径的问题很容易解决。将文件保存到blob存储非常棒。但是如果您愿意,您可以 将其保存在本地资源中以便在本地使用它。这将允许您使用简单的OleDb连接处理文件。完成文件后,您可以从本地资源中删除它(它仍然可以在blob存储中使用,因为您也在那里上传了它。)

不要忘记在处理失败的情况下使用某种清理机制。您不希望最终得到一个充满临时文件的磁盘(即使这可能需要一段时间才能发生这种情况)。

在此处详细了解本地资源:http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

答案 1 :(得分:0)

您应该使用OpenXML SDK,这是官方建议的使用MS Office文档的方式 - http://www.microsoft.com/download/en/details.aspx?id=5124

答案 2 :(得分:0)

我首先根据链接创建了本地存储:

http://msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

Sandrino上面建议

。感谢Sandrino。然后我使用了oledb连接,它给了我一个错误“Microsoft.Jet.Oledb.4.0 dll未注册”。然后我登录到azure服务器并在IIS中更改了32位的应用程序池配置。要将应用程序池更改为32位,请参阅以下链接:

http://blog.nkadesign.com/2008/windows-2008-the-microsoftjetoledb40-provider-is-not-registered-on-the-local-machine/

答案 3 :(得分:0)

您所遵循的方法并不正确,因为您说您登录到azure并进行了更改,在azure上运行的VM不是您的永久性VM。对于任何更新,您将获得新的VM计算机。你可能不得不为此找到转身,而不是手动修改。您可以在azure应用程序中使用启动任务。请参阅下面的链接,它可能会对您有所帮助。

http://msdn.microsoft.com/en-us/library/gg456327.aspx