【发布时间】:2015-10-15 12:02:12
【问题描述】:
我有一个 MVC Web 应用程序,它允许用户将 Excel 文件上传到 Azure 云存储,然后该应用程序使用该 Azure 存储的 Excel blob 文件将数据导入 SQL Server。
我关注网站 http://www.codeproject.com/Tips/752981/Import-Data-from-Excel-File-to-Database-Table-in-A
和
Upload Excel File and Extract Data from it and put that data in database using MVC asp.net
做我的申请。但是,来自站点 http://www.codeproject.com/Tips/752981/Import-Data-from-Excel-File-to-Database-Table-in-A 的示例允许用户将文件上传到 部署应用程序而不是 Azure 存储的 Web 服务器,并且“fileLocation”变量的内容(请参见下面的代码)看起来像(相对于网络服务器托管的应用程序路径 C 或任何驱动器)"C:\MyWebApplicationFolder\MyApplicatioName\Content\Excel_blob.xlsx"
我的问题:对于 Azure 存储 Excel blob 文件,如何指定“fileLocation”和“excelConnectionString”变量的值?请查看我的以短语“// *** 如何使用 Azure 存储代码执行此操作?”开头的代码 cmets?下面。
来自http://www.codeproject.com/Tips/752981/Import-Data-from-Excel-File-to-Database-Table-in-A的代码
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
DataSet ds = new DataSet();
if (Request.Files["file"].ContentLength > 0)
{
string fileExtension = System.IO.Path.GetExtension(Request.Files["file"].FileName);
if (fileExtension == ".xls" || fileExtension == ".xlsx")
{
string fileLocation = Server.MapPath("~/Content/") + Request.Files["file"].FileName; // *** How can I can do this with Azure storage codes?
if (System.IO.File.Exists(fileLocation))
{
System.IO.File.Delete(fileLocation);
}
Request.Files["file"].SaveAs(fileLocation);
string excelConnectionString = string.Empty;
excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; // *** How can I can do this with Azure storage codes?
//connection String for xls file format.
if (fileExtension == ".xls")
{
excelConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=2\""; // *** How can I can do this with Azure storage codes?
}
//connection String for xlsx file format.
else if (fileExtension == ".xlsx")
{
excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileLocation + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=2\""; // *** How can I can do this with Azure storage codes?
}
...
【问题讨论】:
-
我和你在同一个球场,问题领域。我认为这里更大的问题是上面连接字符串中引用的 OLEDB 驱动程序在 Azure 网站环境中不存在 - 没有安装 Office 应用程序/驱动程序。
-
因此,即使您的文件位置正确(在 Azure 上,您对应用程序文件夹的根目录及以下('~/' 及以下)具有写访问权限),那么更大的问题是实际司机自己。
标签: c# azure azure-storage azure-blob-storage