Azure Logic应用程序能否从存储帐户读取excel文件?

Azure Logic应用程序能否从存储帐户读取excel文件?,excel,azure,azure-logic-apps,Excel,Azure,Azure Logic Apps,我有一个excel电子表格驻留在azure存储帐户的容器中 我可以使用带有“获取Blob内容”的Azure Logic应用程序访问该文件。但我找不到任何讨论从blob存储中实际读取Azure Logic应用程序中的文件的文档。请注意,OneDrive或Office365中有用于访问Excel文件的连接器,但不能从存储帐户容器访问 尽管进行了激烈的搜索,但我在Microsoft文档或其他文件中没有找到任何关于此用例的讨论。任何链接将不胜感激 从Blob存储中读取/搜索Azure Logic App

我有一个excel电子表格驻留在azure存储帐户的容器中

我可以使用带有“获取Blob内容”的Azure Logic应用程序访问该文件。但我找不到任何讨论从blob存储中实际读取Azure Logic应用程序中的文件的文档。请注意,OneDrive或Office365中有用于访问Excel文件的连接器,但不能从存储帐户容器访问

尽管进行了激烈的搜索,但我在Microsoft文档或其他文件中没有找到任何关于此用例的讨论。任何链接将不胜感激


从Blob存储中读取/搜索Azure Logic Apps中excel文件的最佳方法是什么?

您可以向工作流中添加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"])
        };
    }
}
公共类ExcelFileContentExtractorService:IExcelFileContentExtractorService
{
公共ExcelFileRawDataModel GetFileContent(流文件流)
{
IDictionary cellValues=新字典();
IWorkbook工作簿=WorkbookFactory.Create(文件流);
ISHET reportSheet=工作簿.GetSheetAt(0);
如果(报告表!=null)
{
int rowCount=reportSheet.LastRowNum+1;
对于(int i=0;i

资料来源:

我试图用CSV做同样的事情,但没有取得很大进展。根据我的经验,尝试解析文件内容是很笨拙的。有一些用于逻辑应用程序的第三方插件(连接器),但我不愿意使用它们,因为我认为数据是作为处理的一部分发送到第三方站点的。如果您的数据不是特别敏感,您可以尝试这些连接器。

这里我将补充我学到的知识

尽管在撰写本文时本机支持从OneDrive和Sharepoint读取excel文件,但Microsoft产品经理不知何故忽略了Azure客户可能希望使用Azure工具(如Logic Apps)从Azure(存储帐户blob)中读取其内容

撰写本文时唯一的解决方案是创建一个Azure函数,该函数生成SAS令牌并读取blob


因此,我已将Thiago的回答标记为正确。

谢谢您的推荐。Azure函数是从存储帐户使用excel文件的唯一方法吗?如果它是唯一的选项,我不是100%,但它肯定会让您在阅读内容时有更好的灵活性您说的
阅读excel文件是什么意思?在logic app中获取excel文件的内容?正确。理想情况下,我希望能够在excel文件中搜索一个值,并返回与我的搜索条件匹配的行。然后使用logic应用程序中该行的数据来表示发送电子邮件。这可能意味着在行中循环并检查特定列中的内容。在logic app中实现此要求似乎不存在一个好的解决方案。使用azure函数并自己编写代码,因为Thiago提到的是一个解决方案。您介意将excel上传到OneDrive,然后使用OneDrive connector.com的操作吗。此外,你必须考虑成本,因为这是第三方许可证。