如何添加excel表从blob,作为第二表到我生成的字节流表c#


  1. 我有一个blob存储表说:Instructions.xlsx
  2. 我已经生成了一个动态的。xlsx表与db值,我可以下载说:DbRecords.xlsx

我希望我的指令。xlsx作为第二个表添加到我的DbRecords.xlsx在c#

我期望一个excel表包含两个表,1我从db生成的文件,以及从blob表作为表2.

从我的端复制后,我可以通过首先使用CloudBlockBlob从存储帐户下载文件,然后使用Microsoft.Office.Interop.Excel合并所需的文件来实现您的要求。我参考了这两个线程Thread1和Thread2,下面是为我工作的完整代码。

using System.IO;
using Microsoft.Office.Interop.Excel;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string connectionString = "<YOUR_STORAGEACCOUNT_CONNECTION_STRING>";
CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
CloudBlobClient cloudBlobClient = cloudStorageAccount.CreateCloudBlobClient();
CloudBlobContainer cloudBlobContainer = cloudBlobClient.GetContainerReference("<CONTAINER_NAME>");
CloudBlockBlob cloudBlockBlob = cloudBlobContainer.GetBlockBlobReference("<BLOB_NAME>");

Stream file = File.OpenWrite(@"<PATH_IN_YOUR_LOCAL_STORAGE>" + "Instructions.xlsx");
cloudBlockBlob.DownloadToStreamAsync(file);
file.Close();
Application app = new Application();
app.Visible = true;
Workbook workbook1 = app.Workbooks.Add(@"<Path_to_Instructions.xlsx>");
Workbook workbook2 = app.Workbooks.Add(@"<Path_to_DbRecords.xlsx>");
for (int i = 2; i <= app.Workbooks.Count; i++)
{
for (int j = 1; j <= app.Workbooks[i].Worksheets.Count; j++)
{
Worksheet ws = (Worksheet)app.Workbooks[i].Worksheets[j];
ws.Copy(app.Workbooks[1].Worksheets[1]);
}
}
app.Workbooks[1].SaveCopyAs(@"final.xlsx");
workbook1.Close(0);
workbook2.Close(0);
app.Quit();
}
}
}

最新更新