Avkash Chauhan's Blog

Windows Azure, Windows 8, Cloud Computing, Big Data and Hadoop: All together at one place.. One problem, One solution at One time...

Downloading WORD and EXCEL files from Windows Azure Storage in a ASP.NET Web Role

Downloading WORD and EXCEL files from Windows Azure Storage in a ASP.NET Web Role

Rate This
  • Comments 2

While opening Microsoft Office WORD and EXCEL Files before saving from Windows Azure Storage in ASP.NET Web Role, a few partners reported the following Error:


The file <File name> cannot be opened because there are problem with the content.




Note: When downloading PDF and other image files the problem did not occurred and it occurred only with WORD & Excel files.


Following is the correct code to solve this problem:


C# Code:

using System.IO;

using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.StorageClient;

using Microsoft.WindowsAzure.ServiceRuntime;

 

namespace WebRole

{

    public partial class _Default : System.Web.UI.Page

    {

        private static CloudStorageAccount account;

        private static CloudBlobClient blobClient;

        private static CloudBlobContainer container;

        private static CloudBlob blob;

 

        protected void Page_Load(object sender, EventArgs e)

        {

            DownloadBlob("HelloWorld.docx");

        }

 

        public void DownloadBlob(string blobName)

        {

            account = CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("DataConnectionString"));

       blobClient = account.CreateCloudBlobClient();

       container = blobClient.GetContainerReference("<YOUR_CONTAINER_NAME>");

       blob = container.GetBlobReference(blobName);

       MemoryStream memStream = new MemoryStream();

       blob.DownloadToStream(memStream);

       Response.ContentType = blob.Properties.ContentType;

       Response.AddHeader("Content-Disposition", "Attachment; filename=" + blobName.ToString());

       Response.AddHeader("Content-Length", blob.Properties.Length.ToString());

       Response.BinaryWrite(memStream.ToArray());

        }

    }

}

 

VB.NET Code:

Imports System.IO

Imports Microsoft.WindowsAzure

Imports Microsoft.WindowsAzure.StorageClient

Imports Microsoft.WindowsAzure.ServiceRuntime

 

Public Class _Default

    Inherits System.Web.UI.Page

 

 

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

DownloadBlob("HelloWorld.docx");

    End Sub

 

    Private Sub DownloadBlob(ByVal blobName As String, ByVal containerName As String)

        Dim account As CloudStorageAccount

        Dim blobClient As CloudBlobClient

        Dim container As CloudBlobContainer

        account =

        CloudStorageAccount.Parse(RoleEnvironment.GetConfigurationSettingValue("DataConnectionString"))

        blobClient = account.CreateCloudBlobClient()

        container = blobClient.GetContainerReference("<Your_Container_Name>")

        Dim blob As CloudBlob

        blob = container.GetBlobReference(blobName)

        'Downloads a stream. Errors for xls and Word.

        Dim ms As New MemoryStream()

        Using ms

            blob.DownloadToStream(ms)

            Response.ContentType = blob.Properties.ContentType

            Response.AddHeader("Content-Disposition", "Attachment; filename=" & blobName)

            Response.AddHeader("Content-Length", blob.Properties.Length)

            Response.BinaryWrite(ms.ToArray())

        End Using

    End Sub

 

End Class

 

 

 

Leave a Comment
  • Please add 8 and 4 and type the answer here:
  • Post
  • is there any ways to write(store) microsoft azure translation data in word document.

    i mean i translate string from English Language -> Hindi and want to write it in word Document.

    Thanks

  • Hello Avkash Chauhan,

    Can you please tell us where the excel data will be once it's download from azure blob?

    Thanks in advance.

Page 1 of 1 (2 items)