Azure 逻辑应用可以从存储帐户中读取 excel 文件吗?
Posted
技术标签:
【中文标题】Azure 逻辑应用可以从存储帐户中读取 excel 文件吗?【英文标题】:Can an Azure Logic App read an excel file from a storage account? 【发布时间】:2021-04-19 18:49:35 【问题描述】:我有一个 excel 电子表格驻留在 Azure 存储帐户的容器中。
我可以使用带有“获取 Blob 内容”的 Azure 逻辑应用程序来访问该文件。但我找不到任何文档讨论从 blob 存储中实际读取 Azure 逻辑应用程序中的文件。请注意,OneDrive 或 Office365 中有用于访问 Excel 文件的连接器,但不是从存储帐户容器访问的。
尽管进行了激烈的搜索,但我没有在 Microsoft 文档或其他文档中找到有关此用例的任何讨论。任何链接将不胜感激。
从 Blob 存储读取/搜索 Azure 逻辑应用中的 excel 文件的最佳方法是什么?
【问题讨论】:
read an excel file
是什么意思?在逻辑应用中获取excel文件的内容?
正确。理想情况下,我希望能够在 excel 文件中搜索一个值并返回与我的搜索条件匹配的行。然后使用逻辑应用中该行的数据说,发送电子邮件。这可能意味着遍历行并检查特定列中的内容。
似乎不存在在逻辑应用程序中实现此要求的好解决方案。正如蒂亚戈提到的那样,使用 azure 函数并自己编写代码是一种解决方案。你介意将excel上传到OneDrive,然后你可以使用OneDrive连接器的操作。
【参考方案1】:
您可以将 Azure 函数添加到您的工作流程并轻松读取电子表格的内容:
public class ExcelFileContentExtractorService : IExcelFileContentExtractorService
public ExcelFileRawDataModel GetFileContent(Stream fileStream)
IDictionary<string, string> cellValues = new Dictionary<string, string>();
IWorkbook workbook = WorkbookFactory.Create(fileStream);
ISheet reportSheet = workbook.GetSheetAt(0);
if (reportSheet != null)
int rowCount = reportSheet.LastRowNum + 1;
for (int i = 0; i < rowCount; i++)
IRow row = reportSheet.GetRow(i);
if (row != null)
foreach (var cell in row.Cells)
var cellValue = cell.GetFormattedCellValue();
if (!string.IsNullOrEmpty(cellValue))
cellValues.Add(cell.Address.FormatAsString(), cellValue);
return new ExcelFileRawDataModel()
Id = cellValues["A6"],
CarBrand = cellValues["B6"],
CarModel = cellValues["C6"],
CarPrice = decimal.Parse(cellValues["D6"]),
CarAvailability = int.Parse(cellValues["E6"])
;
来源:https://daniel-krzyczkowski.github.io/Extract-Excel-file-content-with-Azure-Logic-Apps-and-Azure-Functions/
【讨论】:
感谢您的参考。 Azure 函数是使用存储帐户中的 excel 文件的唯一方法吗? 如果它是唯一的选择,我不是 100%,但它肯定会在阅读内容时为您提供更好的灵活性【参考方案2】:我尝试对 CSV 做同样的事情,但没有取得很大进展。根据我的经验,尝试解析文件内容很笨拙。有一些逻辑应用程序的 3rd 方插件(连接器),但我不愿意使用它们,因为我相信数据作为处理的一部分发送到 3rd 方站点。如果您的数据不是特别敏感,您可以试试这些连接器。
【讨论】:
同意。此外,您必须考虑成本,因为这些是第 3 方许可。【参考方案3】:在这里我将补充我所学到的。
尽管在撰写本文时本机支持从 OneDrive 和 Sharepoint 读取 excel 文件,但 Microsoft 产品经理不知何故错过了 Azure 客户可能希望使用 Azure 工具(例如逻辑应用程序)从 Azure(存储帐户 blob)中读取他们的内容。
撰写本文时唯一的解决方案是创建一个生成 SAS 令牌并读取 blob 的 Azure 函数。
因此,我将蒂亚戈的回答标记为正确。
【讨论】:
以上是关于Azure 逻辑应用可以从存储帐户中读取 excel 文件吗?的主要内容,如果未能解决你的问题,请参考以下文章
从 ASP.NET 应用程序访问 Azure 存储帐户文件共享