0
votes

I'm trying to create a Blob trigger Azure Function in Python that automatically split all sheets in a specific Excel file into separate .csv files onto the same Azure Blob container. My init.py and function.json files look something like this: function.json file:

        {
        "scriptFile": "__init__.py",
        "bindings": [
            {
                "name": "blobin",
                "type": "blobTrigger",
                "direction": "in",
                "path": "folder/ExcelFile.xlsx",
                "connection": "blobSTORAGE"
            },
            {
                "name": "blobout",
                "type": "blob",
                "direction": "out",
                "path": "folder/{name}",
                "connection": "blobSTORAGE"
            }
        ]
    }

init.py file:

import logging
from xlrd import open_workbook
import csv
import azure.functions as func

def main(blobin: func.InputStream, blobout: func.Out[bytes]):
    logging.info(f"Python blob trigger function processed blob \n")
    try:
        wb = open_workbook('ExcelFile.xlsx')
        for i in range(0, wb.nsheets):
            sheet = wb.sheet_by_index(i)
            print(sheet.name)
            with open("Sheet_%s.csv" %(sheet.name.replace(" ","")), "w") as file:
                writer = csv.writer(file, delimiter = ",")
                print(sheet, sheet.name, sheet.ncols, sheet.nrows)
                header = [cell.value for cell in sheet.row(0)]
                writer.writerow(header)
                for row_idx in range(1, sheet.nrows):
                    row = [int(cell.value) if isinstance(cell.value, float) else cell.value
                           for cell in sheet.row(row_idx)]
                    writer.writerow(row)

            blobout.set(file.read)
            logging.info(f"Split sheet %s into CSV successfully.\n" %(sheet.name))
    except:
        print("Error")

I tried to run the pure Python code on my PC without the Azure function implementing and succeeded. However, when I deployed the function onto Azure Apps it does not "trigger" when I tried to upload the Excel file. I am thinking that the config I put is wrong but don't know how to confirm or fix it. Any suggestion?

1

1 Answers

0
votes

Since you don't have problem on local, I think the problems comes from the blobSTORAGE that doesn't have setted in the environment variable.

On local, environment variable is setted in the values section in local.settings.json. But when you deploy the function app, it will get environment variable from this place:

enter image description here