我有一个excel电子表格驻留在azure存储帐户的容器中。
我可以使用Azure逻辑应用程序的"获取Blob内容";访问文件。但我找不到任何文档讨论从blob存储中实际读取Azure逻辑应用程序中的文件。请注意,有用于访问OneDrive或Office365中的Excel文件的连接器,但不能从存储帐户容器访问。
尽管我进行了激烈的搜索,但我没有在微软文档或其他地方找到任何关于这个用例的讨论。如有任何连结,不胜感激。
从Blob存储读取/搜索Azure逻辑应用程序中的excel文件的最佳方法是什么?
您可以将Azure Function添加到工作流中,并轻松读取电子表格的内容:
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/
我将在这里添加我所学到的。
尽管在撰写本文时本机支持从OneDrive和Sharepoint读取excel文件,但微软产品经理不知怎的忽略了Azure客户可能希望使用Azure工具(如Logic Apps)从Azure(存储帐户blob)中读取其内容。
在编写本文时,唯一的解决方案是创建一个Azure函数来生成SAS令牌并读取blob。
因此,我将Thiago的回答标记为正确。
我试着用CSV做同样的事情,没有取得很大进展。在我的经验中,尝试解析文件内容是很笨拙的。有一些用于逻辑应用程序的第三方插件(连接器),但我不愿意使用它们,因为我相信数据是作为处理的一部分发送到第三方站点的。如果您的数据不是特别敏感,您可以尝试使用这些连接器。