需要通过oledb连接从azure存储blob容器读取excel文件
本文关键字:blob 读取 文件 excel 存储 azure oledb 连接 | 更新日期: 2023-09-27 18:00:49
我已将我的网站托管到azure中。。。我已经通过中间服务器将Excel文件上传到azure存储blob容器中,因为我无法直接从网站访问azure。。所以我需要的是,我需要使用"oledb连接"从azure存储blob容器(或(中间服务器本地路径读取excel文件,并将其存储到数据表中以验证excel。。有人能帮我继续吗。
您从未将问题编辑为显示代码,并且您错误发布的作为答案的代码已被删除,所以我在这里进行猜测,但是。。。我可以肯定的是,问题是您试图通过OleDbConnection
将blob作为文件打开。
Azure存储Blob无法作为文件打开。如果你要像文件一样使用blob的内容,你首先需要下载它并将其保存为文件(或者使用内存流,但在你的情况下,你需要一个文件(。然后,您可以像往常一样打开文件。
由于您在基于Azure的Web应用程序中运行代码,因此理想情况下,您希望Web应用程序与存储帐户位于同一区域。你将下载到网络应用程序的本地磁盘(网络应用程序为你提供了本地存储空间(。
操作完文件后,您需要将其上传回blob。
public string[] GetExcelSheets(string filename)
{
String[] excelSheets = null;
StorageCredentials creds = new StorageCredentials("<accountname>", "<key>");
CloudStorageAccount account = new CloudStorageAccount(creds, useHttps: true);
CloudBlobClient blobClient = account.CreateCloudBlobClient();
CloudBlobContainer blobContainer = blobClient.GetContainerReference("documents");
blobContainer.CreateIfNotExists();
blobContainer.SetPermissions(new BlobContainerPermissions
{ PublicAccess = BlobContainerPublicAccessType.Blob
});
CloudBlockBlob blob1 = blobContainer.GetBlockBlobReference(filename);
try
{
using (var stream = blob1.OpenRead())
{
OleDbConnection connection = new OleDbConnection();
var localPath = @"https://xxyyyyyyyyyyy.blob.core.windows.net/";
var fileName = @"C:'xxx" + @"'" + "9370.XLS";
var fullPathToFile = System.IO.Path.Combine(localPath, fileName);
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + fileName + "';Extended Properties=Excel 8.0";
OleDbConnection oledbConn = new OleDbConnection(connString);
DataTable dt = new DataTable();
if (oledbConn.State == ConnectionState.Closed) oledbConn.Open();
// Get the data table containg the schema guid.
dt = oledbConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
oledbConn.Close();
if (dt == null) return null;
excelSheets = new String[dt.Rows.Count];
int i = 0;
// Add the sheet name to the string array.
foreach (DataRow row in dt.Rows)
{
excel Sheets[i] = row["TABLE_NAME"].ToString();
i++;
}
}
}
catch (Exception ex)
{
HTTP Context.Current.Res`enter code here`ponse.Write(ex.Message);
}
return excel Sheets; }
this is the code i used to read the excel file but oledb data-source path is incorrect...can u suggest what path i should use to read the excel file in azure blob container