0

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

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

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

请帮忙。

4

4 回答 4

2

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

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

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

在此处阅读有关本地资源的更多信息:http: //msdn.microsoft.com/en-us/library/windowsazure/ee758708.aspx

于 2012-04-18T12:19:39.670 回答
0

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

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

于 2012-04-20T11:44:37.783 回答
0

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

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

上面的 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/

于 2012-04-20T07:23:58.180 回答
0

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

于 2012-04-18T12:16:44.317 回答