You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell或Python编写Azure Runbook读写追加Azure Blob存储的Excel文件

前置准备
  • 确保Azure Automation账户已启用系统分配托管身份,且给该托管身份分配目标存储账户的存储Blob数据参与者权限
  • PowerShell版Runbook需提前导入Automation模块:Az.Storage、ImportExcel
  • Python版Runbook需提前在Automation Python包中安装依赖:azure-storage-blob、openpyxl(注意匹配Runbook的Python版本)

PowerShell 版实现

核心逻辑分为身份认证、下载Excel到临时空间、编辑Excel、回传存储账户四个步骤,代码示例如下:

# 1. 用托管身份登录Azure
Connect-AzAccount -Identity | Out-Null

# 2. 配置参数
$storageAccountName = "你的存储账户名"
$containerName = "你的容器名"
$blobName = "目标Excel文件名.xlsx"
$tempPath = Join-Path $env:TEMP $blobName

# 3. 从存储账户下载Excel到临时路径
$storageContext = New-AzStorageContext -StorageAccountName $storageAccountName -UseConnectedAccount
Get-AzStorageBlobContent -Container $containerName -Blob $blobName -Destination $tempPath -Context $storageContext -Force

# 4. 编辑Excel内容
# 4.1 读取Excel
$excelData = Import-Excel -Path $tempPath
# 4.2 示例:修改第一行的Name列值
$excelData[0].Name = "修改后的内容"
# 4.3 示例:追加新行
$newRow = [PSCustomObject]@{
    Name = "新用户"
    Age = 28
    Department = "研发部"
}
$excelData += $newRow
# 4.4 保存修改后的Excel
$excelData | Export-Excel -Path $tempPath -ClearSheet

# 5. 回传到存储账户覆盖原文件
Set-AzStorageBlobContent -File $tempPath -Container $containerName -Blob $blobName -Context $storageContext -Force

# 清理临时文件
Remove-Item $tempPath -Force

Python 版实现

核心逻辑和PowerShell版一致,依赖openpyxl处理Excel、azure-storage-blob操作存储,代码示例如下:

import os
import tempfile
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
from openpyxl import load_workbook

# 1. 配置参数
STORAGE_ACCOUNT_NAME = "你的存储账户名"
CONTAINER_NAME = "你的容器名"
BLOB_NAME = "目标Excel文件名.xlsx"
# 国内云用core.chinacloudapi.cn,国际公有云换为core.windows.net
STORAGE_ACCOUNT_URL = f"https://{STORAGE_ACCOUNT_NAME}.blob.core.chinacloudapi.cn"

# 2. 初始化Blob客户端,用托管身份认证
credential = DefaultAzureCredential()
blob_service_client = BlobServiceClient(account_url=STORAGE_ACCOUNT_URL, credential=credential)
blob_client = blob_service_client.get_blob_client(container=CONTAINER_NAME, blob=BLOB_NAME)

# 3. 下载Excel到临时文件
with tempfile.NamedTemporaryFile(suffix=".xlsx", delete=False) as temp_file:
    temp_path = temp_file.name
    blob_data = blob_client.download_blob()
    blob_data.readinto(temp_file)

# 4. 编辑Excel内容
wb = load_workbook(temp_path)
ws = wb.active # 操作默认工作表,也可以用wb["工作表名"]指定
# 4.1 示例:修改A1单元格内容
ws["A1"] = "修改后的表头"
# 4.2 示例:追加新行
new_row = ["新用户", 28, "研发部"]
ws.append(new_row)
# 4.3 保存修改
wb.save(temp_path)
wb.close()

# 5. 回传到存储账户覆盖原文件
with open(temp_path, "rb") as data:
    blob_client.upload_blob(data, overwrite=True)

# 清理临时文件
os.unlink(temp_path)

注意事项
  • Azure Runbook的临时存储空间最大为1GB,处理超过该大小的Excel文件需拆分操作
  • 如果需要避免误覆盖原文件,可以开启存储账户的Blob版本控制/快照功能,上传前先创建快照
  • 上述代码仅支持xlsx格式的Excel文件,若处理xls格式需要更换为对应适配的处理库

内容的提问来源于stack exchange,提问作者Samuel Mamootil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 09:30:04