2017-05-20 1 views
0

私はAzure SQLでいくつかのSQLクエリを起動し、データがExcelファイルに転送されるコンソールアプリケーションを持っています。これは私のローカルコンピュータで正常に動作しています。 Issue しかし、私はスケジューラとしてazureサービスでこの.exeをホストします。私が実現したその時、私の生成されたファイルを紺碧の上に維持する方法。上記のコードでC#コンソールアプリケーションを使用して、奇跡的なストレージにファイルを作成するには?

public static bool CreateExcelDocument(DataSet ds, string excelFilename) 
 
     { 
 
      try 
 
      { 
 
       using (SpreadsheetDocument document = SpreadsheetDocument.Create(excelFilename, SpreadsheetDocumentType.Workbook)) 
 
       { 
 
        WriteExcelFile(ds, document); 
 
       } 
 
       Trace.WriteLine("Successfully created: " + excelFilename); 
 
       return true; 
 
      } 
 
      catch (Exception ex) 
 
      { 
 
       Trace.WriteLine("Failed, exception thrown: " + ex.Message); 
 
       return false; 
 
      } 
 
     }

、私は "excelFilename" を渡すためには何が必要?

答えて

1

上記のコードでは、「excelFilename」を渡す必要がありますか?

Azureでは、ExcelファイルをAzure Blob Storageに保存することをお勧めします。あなたのコードに基づいて、あなたはメモリストリームでホストされた新しいエクセルを作成することができます。このエクセルファイルにデータを書き込んだ後、Blobストレージにメモリストリームをアップロードできます。下記のコードは参照用です。

public static bool CreateExcelDocument(DataSet ds, string fileName) 
{ 
    try 
    { 
     MemoryStream ms = new MemoryStream(); 
     using (SpreadsheetDocument document = SpreadsheetDocument.Create(ms, SpreadsheetDocumentType.Workbook)) 
     { 
      WriteExcelFile(ds, document); 
     } 
     //You need to create a storage account and put your azure storage connection string in following place 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse("put your azure storage connection string here");   
     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
     CloudBlobContainer container = blobClient.GetContainerReference("excelfilecontainer"); 
     container.CreateIfNotExists(); 
     CloudBlockBlob blockBlob = container.GetBlockBlobReference(fileName); 
     ms.Position = 0; 
     blockBlob.UploadFromStream(ms); 
     return true; 
    } 
    catch (Exception ex) 
    { 
     return false; 
    } 
} 

upperメソッドを使用するには、ファイル名を2番目のパラメータに配置するだけです。

CreateExcelDocument(ds, "abc.xlsx"); 

その後、abc.xlsxという名前のファイルがBlobストレージのexcelfilecontainerに作成されます。 Azure Storage ExplorerまたはAzure Storage Client Libraryから表示またはダウンロードできます。

enter image description here

やExcelシートまたはデータセットが複数ある場合。次に、新しいシートを追加する方法は?

また、BLOBデータをメモリストリームに読み込むこともできます。次に、このストリームに基づいてSpreadsheetDocumentを開くことができます。新しいシートを追加した後。このストリームをBLOBストレージに保存する必要があります。ここにサンプルコードがあります。

CloudStorageAccount storageAccount = CloudStorageAccount.Parse("storage connection string"); 
// Create the blob client. 
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 
// Retrieve reference to a previously created container. 
CloudBlobContainer container = blobClient.GetContainerReference("excelfilecontainer"); 
// Retrieve reference to a blob named "myblob.txt" 
CloudBlockBlob blockBlob = container.GetBlockBlobReference("abc.xlsx"); 

using (var memoryStream = new MemoryStream()) 
{ 
    blockBlob.DownloadToStream(memoryStream); 
    memoryStream.Position = 0; 
    using (SpreadsheetDocument doc = SpreadsheetDocument.Open(memoryStream, false)) 
    { 

    } 
} 
+0

ありがとうございました。また、Excelシートまたはデータセットに複数のシートがある場合。次に、新しいシートを追加する方法は? – Abhi

+0

あなたのコメントに基づいて返信を変更しました。 SpreadsheetDocumentの使い方の助けが必要な場合は、[openxml-sdk]タグを付けて新しい質問を投稿することをお勧めします。あなたはもっと専門的な助けを得るでしょう。問題が解決した場合は、回答として役に立つ返信をマークすることをお勧めします。マークされたスレッドは簡単に検索されます。それは、同様の問題に遭遇した他のコミュニティメンバーを助けるでしょう。 – Amor

関連する問題