从Azure blob读取excel数据,并使用Python Azure函数将其转换为csv

从Azure blob读取excel数据,并使用Python Azure函数将其转换为csv,python,azure,io,Python,Azure,Io,我想使用以下功能部署azure功能 将excel数据从Azure blob读取到流对象中,而不是下载到VM上 读入数据帧 我需要帮助才能将excel文件读入数据框。如何更新放置的持有者下载文件路径以读取excel数据 如果您想使用panda从Azure blob读取excel文件,您有两个选择 为blob生成SAS令牌,然后使用blob URL和SAS令牌访问它 下载blob 如果您想使用panda从Azure blob读取excel文件,您有两个选择 为blob生成SAS令牌,然后使用blo

我想使用以下功能部署azure功能

  • 将excel数据从Azure blob读取到流对象中,而不是下载到VM上
  • 读入数据帧 我需要帮助才能将excel文件读入数据框。如何更新放置的持有者下载文件路径以读取excel数据

  • 如果您想使用panda从Azure blob读取excel文件,您有两个选择

  • 为blob生成SAS令牌,然后使用blob URL和SAS令牌访问它
  • 下载blob

  • 如果您想使用panda从Azure blob读取excel文件,您有两个选择

  • 为blob生成SAS令牌,然后使用blob URL和SAS令牌访问它
  • 下载blob

  • 您能告诉我您尝试了什么吗?我编写了脚本将blob(Excel)下载到本地,并使用pandas将数据读取到dataframe中。从数据框中,数据被推送到csv文件中。此csv文件将上载到blob。当部署到Azure函数中时,它会失败。我不是下载,而是尝试从blob中流式传输数据,并将其推送到数据帧中。它在
    打开时失败(下载文件路径,“rb”)
    它找不到资源。你能告诉我你尝试了什么吗?我编写了脚本将blob(Excel)下载到本地,并使用pandas将数据读取到dataframe中。从数据框中,数据被推送到csv文件中。此csv文件将上载到blob。当部署到Azure函数中时,它会失败。我不是下载,而是尝试从blob中流式传输数据,并将其推送到数据帧中。它在
    打开时失败(下载文件路径,“rb”)
    它无法找到resource@VenkatSuryaSunilmodekurthy既然它对你有用,你能帮我吗?它可能会帮助更多有类似问题的人。这是非常有帮助的,并且起到了作用。Thanks@VenkatSuryaSunilmodekurthy既然它对你有用,你能接受它作为一个答案吗:?我们如何上传一个blob格式的excel文件?@mas你可以参考@VenkatSuryasUnileModeKurthy,因为它对你有用,你能吗?它可能会帮助更多有类似问题的人。这是非常有帮助的,并且起到了作用。Thanks@VenkatSuryaSunilmodekurthy既然它对您很有用,您能否接受它作为一个答案:?我们如何在blob中上载excel文件?@mas您可以参考
        import pandas as pd 
        import os 
        import io
        from azure.storage.blob import BlobClient,BlobServiceClient,ContentSettings
            
        connectionstring="XXXXXXXXXXXXXXXX" 
        excelcontainer = "excelcontainer"        
        excelblobname="Resource.xlsx" 
        sheet ="Resource" 
                
        blob_service_client =BlobServiceClient.from_connection_string(connectionstring)
        download_file_path =os.path.join(excelcontainer)
        blob_client = blob_service_client.get_blob_client(container=excelcontainer, blob=excelblobname)
        with open(download_file_path, "rb") as f:
           data_bytes = f.read()
        df =pd.read_excel(data_bytes, sheet_name=sheet, encoding = "utf-16")
    
    
    from datetime import datetime, timedelta
    import pandas as pd
    from azure.storage.blob import BlobSasPermissions, generate_blob_sas
    def main(req: func.HttpRequest) -> func.HttpResponse:
        account_name = 'andyprivate'
        account_key = 'h4pP1fe76*****A=='
        container_name = 'test'
        blob_name="sample.xlsx"
        sas=generate_blob_sas(
          account_name=account_name,
          container_name=container_name,
          blob_name=blob_name,
          account_key=account_key,
          permission=BlobSasPermissions(read=True),
          expiry=datetime.utcnow() + timedelta(hours=1)
        )
    
        blob_url = f'https://{account_name}.blob.core.windows.net/{container_name}/{blob_name}?{sas}'
        df=pd.read_excel(blob_url)
        print(df)
        ......
    
    from azure.storage.blob import  BlobServiceClient
    def main(req: func.HttpRequest) -> func.HttpResponse:
        account_name = 'andyprivate'
        account_key = 'h4pP1f****='
    
        blob_service_client = BlobServiceClient(account_url=f'https://{account_name }.blob.core.windows.net/', credential=account_key)
        blob_client = blob_service_client.get_blob_client(container='test', blob='sample.xlsx')
        downloader =blob_client.download_blob()
        df=pd.read_excel(downloader.readall())
        print(df)
        ....