2

I'm trying to convert the CSV file which is there in the azure storage container to EXCEL and place it in the same container.

I'm able to read the data from a CSV file with the below code and am not able to convert it into excel and upload it into the container.

from io import StringIO
from azure.storage.blob import BlobServiceClient, ContainerClient, BlobClient
from typing import Container
import pandas as pd

conn_str = "DefaultEndpointsProtocol=https;AccountName="";AccountKey="";EndpointSuffix="""
container = "testing"
blob_name = "Test.csv"
filename = "test.xlsx"

container_client = ContainerClient.from_connection_string(
conn_str=conn_str, 
container_name=container
)   

downloaded_blob = container_client.download_blob(blob_name)

read_file = pd.read_csv(StringIO(downloaded_blob.content_as_text()) )

print(read_file)

Any suggestions on how can I achieve this?

1 Answer 1

2

You can convert the pandas Data Frame(read_file) to excel file using to_excel API. Since you want to upload it into the blob storage you can write it to the memory buffer first.

import pandas as pd
from io import BytesIO

buffer = BytesIO()

# By setting the 'engine' in the ExcelWriter constructor.
writer = pd.ExcelWriter(buffer, engine="xlsxwriter")
# 'read_file' is your pandas DataFrame
read_file.to_excel(writer, sheet_name="Sheet1") 

# Save the workbook
writer.save()

# Seek to the beginning 
buffer.seek(0)

buffer now has the data that is ready to be uploaded to the blob storage. So you can create a blob client instance first and use the upload_blob method to upload the excel file. Also set overwrite=True if you want to overwrite the file in Azure.

excel_blob_client = BlobClient.from_connection_string(
conn_str=conn_str, 
container_name=container,
blob_name = "test.xlsx"
)  
excel_blob_client.upload_blob(buffer, overwrite=True)

References

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.