如何在 Azure 逻辑应用中解析 Excel 电子表格

2024-05-16

我需要使用 Azure 逻辑应用从 Excel 电子表格中解析和提取列信息

我已经为我的逻辑应用程序设置了从 Outlook 检索最新未读电子邮件的功能。此外,我的逻辑应用程序执行 FOR EACH 来读取所有附件(来自未读电子邮件)并确保它们是 Excel 文件(基于文件扩展名)。

我有一个基本的 Excel 文件,其中包含 3 列“产品、描述、价格”,我需要解析每一行(仅产品和价格)列。

我将添加将解析的数据存储到 Azure 上托管的 SQL 表中的功能。


在这里,您也可以使用 HTTP 请求。

using ExcelDataReader;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
using Microsoft.WindowsAzure.Storage;
using Microsoft.WindowsAzure.Storage.Blob;
using Nancy.Json;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Threading.Tasks;

namespace ConvertExcelToJSon
{
    public static class Function1
    {
        [FunctionName("ConvertToJson")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
            ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");


            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);
            string blobName = data?.blobName;

            string[] splitBlob = blobName.Split('/');

            Stream blob = await GetBlobStreamAsync(splitBlob[1], splitBlob[2] + "/" + splitBlob[3]);
            DataSet ds = CreateDataSet(blob);
            List<Simple> simpleList = new List<Simple>();
            foreach (DataTable table in ds.Tables)
            {

                return (ActionResult)new OkObjectResult(DataTableToJSON(table));

            }


            return blobName != null
            ? (ActionResult)new OkObjectResult($"Hello, {blobName}")
            : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
        }



        public static string DataTableToJSON(DataTable table)
        {
            List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();

            foreach (DataRow row in table.Rows)
            {
                Dictionary<string, object> dict = new Dictionary<string, object>();

                foreach (DataColumn col in table.Columns)
                {
                    dict[col.ColumnName] = (Convert.ToString(row[col]));
                }
                list.Add(dict);
            }
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            return serializer.Serialize(list);
        }

        public static string AppSetting(this string Key)
        {
            string ret = string.Empty;
            if (Environment.GetEnvironmentVariable(Key) != null)
            {
                ret = Environment.GetEnvironmentVariable(Key);
            }
            return ret;
        }

        public static async Task<Stream> GetBlobStreamAsync(string containerName, string blobName)
        {
            Stream myBlob = new MemoryStream();
            if (CloudStorageAccount.TryParse("AzureWebJobsStorage".AppSetting(), out CloudStorageAccount storageAccount))
            {
                CloudBlobClient cloudBlobClient = storageAccount.CreateCloudBlobClient();
                CloudBlobContainer container = cloudBlobClient.GetContainerReference(containerName);
                CloudBlob myBloab = container.GetBlobReference(blobName);
                await myBloab.DownloadToStreamAsync(myBlob);
                myBlob.Seek(0, SeekOrigin.Begin);
            }
            return myBlob;
        }
        public static DataSet CreateDataSet(Stream stream)
        {
            DataSet ds;
            System.Text.Encoding.RegisterProvider(System.Text.CodePagesEncodingProvider.Instance);
            IExcelDataReader reader = null;
            reader = ExcelReaderFactory.CreateOpenXmlReader(stream);
            ds = reader.AsDataSet(new ExcelDataSetConfiguration()
            {
                ConfigureDataTable = (tableReader) => new ExcelDataTableConfiguration()
                {
                    UseHeaderRow = true,
                }
            });
            return ds;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Azure 逻辑应用中解析 Excel 电子表格 的相关文章

  • Azure 表存储分区键

    两个有些相关的问题 1 是否有办法获取表实体所在服务器的ID 2 使用 GUID 能否为我提供最佳的分区键分布 如果没有 那又会怎样呢 几周来我们一直在为表存储性能而苦苦挣扎 简而言之 这确实很糟糕 但我们很早就意识到使用随机分区键会将实体
  • 使用访问密钥的 REST Api 到 Azure Blob 存储

    我们正在尝试在不使用 Azure SDK 的情况下访问 azure blob 存储中的 blob 我们正在尝试通过 Azure REST API 通过共享密钥进行访问 为此我们需要生成授权标头 但是当我尝试从访问密钥创建签名时 出现以下错误
  • 连续工作表切换循环

    我有一个 Excel 电子表格来显示 SQL 数据图表 这些图表将显示在我们机加工车间的显示器上 该电子表格有 45 个选项卡 我需要在选项卡之间切换 每个选项卡间隔 10 秒 然后返回到第一个选项卡并重复循环 I found 如何使用 V
  • 在 Excel 工作簿中找不到链接

    我编写了一个宏来打开多个受密码保护的工作簿 这些工作簿彼此之间都有链接 因此为了方便起见 我设置了UpdateLinks 0这样在其他书籍打开之前 我就不会收到所有链接更新的密码提示 所有工作簿打开后 我尝试使用以下命令更新链接 Workb
  • Excel 的查找和查找下一个 VBA

    我一直在试图弄清楚如何处理这个问题 但基本上我想要一种方法来打印 B 列中的值 给定与 A 列匹配的特定值 例如 Column A Column B 1 ABC 2 DEF 3 GHI 1 JKL 我想在使用 find findnext 或
  • 如何从 Azure Graph API 获取基于用户的令牌

    我有一个 Azure Active Directory 在我的 Web Api 中我有一段代码 我可以使用我在 Azure 中注册的应用程序和客户端证书从 Azure Graph Api 获取令牌 这是我现在使用的代码 public sta
  • 如何使用 pandas.to_excel() 创建 Excel **表格**?

    Need the achieve this programmatically from a dataframe https learn microsoft com en us power bi service admin troublesh
  • 从命令行发布 Azure 项目

    我有一个 Azure Web 角色项目 我可以使用 Visual Studio 的内置向导成功发布它 但我们希望自动化该过程 如何使用 MSbuild 或任何其他命令行工具发布 Azure WebRole 您可能还想创建一个控制台应用程序
  • 是否可以从同一网络上的另一台计算机访问 Azure 模拟器?

    我正在运行带有 VS 2010 SP1 和 Windows Azure SDK 1 5 的 Windows 7 x64 我希望能够在连接到同一网络的 iPhone 上调试 Web 应用程序 以缩短调试周期 IIS 正在这台计算机上运行 并且
  • 求除某些列之外的 SUM

    以下是我所拥有的 A B C D E F G H I J K 1 2 3 4 5 6 7 8 9 10 50 为了找到SUM
  • WebAPI 和 Angular JS Excel 文件下载 - 文件损坏

    我正在 WebAPI 中生成 Excel 文件 我将其 存储 在内存流中 然后放入响应 如下所示 var result new HttpResponseMessage HttpStatusCode OK Content new Stream
  • 没有 MediaTypeFormatter 可用于从媒体类型为“multipart/form-data”的内容中读取类型为“HttpRequestMessage”的对象

    我正在调整最近在 NET Standard 中启动的项目以使用 Azure Functions 我有一个 HTTP 触发器 我直接从表单发布到该触发器 只有两个字段 数字输入和文件上传 当使用该函数而不引用任何其他库时 我无法在 HttpR
  • Excel:包括过滤器中的第一行

    我正在特别考虑 Excel VBA 的 AutoFilter 方法 但我认为我的问题也适用于 GUI 当我将筛选器应用于 Excel 工作表时 未选择任何内容 筛选器将应用于所有行从第二次开始 有什么方法可以包含第一行 以便它也可以被过滤掉
  • 将 Azure Blob 与 Azure 网站结合使用

    我正在制作一个MVC Windows Azure涉及用户上传图像的网站 我想将图像存储在 blob 中 我搜索了教程 但大多数都涉及Webapps而不是 MVC 网站 我发现的唯一有用的教程是 http www codeproject co
  • Excel VBA:排序,然后复制和粘贴

    所有 我需要编写一个执行以下操作的宏 将数据输入到 E 列的最后一个空白单元格后 按 E 列对整个工作表进行降序排序 工作表排序后 2a 将单元格复制到紧邻首次输入数据的单元格左侧的相邻单元格 2b 将复制的数据粘贴到最初输入数据的同一行的
  • ruby CSV重复行解析

    我有一些需要处理的 CSV 数据 但无法找到匹配重复项的方法 数据看起来有点像这样 line id name item 1 item 2 item 3 item 4 1 251 john foo foo foo foo 2 251 john
  • 从服务帐户使用 Graph API 发送电子邮件

    我正在 ASP NET Core 5 C 中执行任务 需要使用 Graph API 发送电子邮件 我参考了以下文章并在 Azure 试用帐户上进行了配置 并且能够发送电子邮件 使用 NET 通过 Microsoft Graph 发送电子邮件
  • 在 Postman 中请求受 Azure AD B2C 保护的 Azure 函数应用程序的访问令牌

    我有一个由 Azure Active Directory B2C 租户保护的 AspNetCore 2 0 MVC Web API 我已经能够通过以下 SO 发布使用 Postman 来测试 API 端点 在 Postman 中请求 Azu
  • Excel 中使用通配符 {*} 进行 Vlookup

    我有下表 现在 我想检查主题是否具有数据中存在的任何文本 col F I used VLOOKUP A2 F F 1 0 但它正在给予 N A Try 公式为B2 SUM COUNTIF A2 F 2 F 3 gt 0 Edit SUM C
  • 如何从 CSS 选择器中提取类名?

    故事 我目前正在构建一个 ESLint 规则 以警告在 CSS 选择器定位器中使用引导布局导向和角度技术类 目前我在字符串方法中使用简单的子字符串 for var i 0 i lt prohibitedClasses length i if

随机推荐

  • 如何在正则表达式中输入“:”(“冒号”)?

    冒号 在正则表达式中具有特殊含义 但我需要按原样使用它 例如 A Za z0 9 我试图逃避它 但这不起作用 A Za z0 9 在大多数正则表达式实现 包括 Java 的 中 无论在字符类内部还是外部 都没有特殊含义 您的问题很可能是由于
  • 在 github 上的 fork 中跟踪上游的最佳实践

    摘要 对于要维护一组本地更改的上游存储库 处理长期运行跟踪的最佳实践是什么 我想让 github 上的 fork 与上游保持同步 但仍然允许清晰跟踪 fork 特有的更改 对于本次讨论 假设upstream指向主项目存储库并且origin指
  • 根据 pyspark 中的条件从数据框中删除行

    我有一个包含两列的数据框 col1 col2 22 12 2 1 2 1 5 52 1 2 62 9 77 33 3 我想创建一个新的数据框 它只需要行 col1 的值 gt col2 的值 就像注释一样col1 很长类型和col2 有双
  • Boost + Visual Studio 2010 + Windows 平台 SDK 7.1

    有人可以告诉我 bjam 的命令行开关或其他可以使用新的 Windows Platform SDK 7 1 工具链使用 VS2010 进行 boost 编译的东西吗 您可以在普通的视觉工作室项目中设置该选项 默认值是 v100 是平台 7
  • 如果函数声明时没有使用“const”关键字,函数调用签名会出错

    我是 TypeScript 新手 正在学习中呼叫签名 https www typescriptlang org docs handbook 2 functions html call signatures 如果我将函数存储为let or c
  • 以编程方式更改 DataGridView 行上的只读模式

    在不解释整个上下文的情况下 我的问题基本上是这样的 我在 Windows 窗体上有一个 datagridview 它绑定到实体框架 DbSet dbSet
  • 匹配括号内任何字符的正则表达式

    尝试创建一个与括号内的任何字符匹配的正则表达式 我的正则表达式模式是这样的 preg match listanswer answer 括号内的所有字符串都是匹配模式 但问题是 当我尝试匹配例如 this word sample data 它
  • 外部 css 文件在 Flask 框架中不起作用

    我正在尝试在我的 html 文件中使用外部 css 文件 起初我使用 bootstrap 框架 效果很好 然而 当我尝试通过添加自定义的css文件来自定义网页时 它根本不起作用 这是我的代码
  • 使用 bouncycastle 库为 Tomcat7 上运行的 JDK1.6 启用 TLSv1.2 时出现问题

    我正在尝试从运行 jdk1 6 在 aws ec2 上 的 apache tomcat7 服务器向我的 vpc 内的 aws api 网关专用端点进行 api 调用 此类专用端点仅允许 TLSv1 2 我使用的是jdk1 6 45 不支持T
  • Flutter Google 登录 - 电子邮件信息未发送至 Firebase(返回空白)

    当我在 Flutter 上制作的应用程序中使用 google 登录时 电子邮件以空值返回到 firebase 我在运行时或登录时没有收到任何错误 我对 pubspec yaml 文件上的 google sign in 版本进行了更改 但结果
  • c中的整数大小取决于什么?

    整数的大小取决于什么 C 中 int 变量的大小取决于机器或编译器吗 它依赖于实现 C标准仅要求 char至少有 8 位 short至少有 16 位 int至少有 16 位 long至少有 32 位 long long至少有 64 位 19
  • 一个类应该验证自身还是创建另一个类来验证它?

    假设我有一堂课 class NavigationData float roll float pitch double latitude double longitude 如果我想创建一个方法 const bool validate cons
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • SceneKit unproject Z 文档解释?

    我正在经历一些 SceneKit 概念 而我试图在脑海中巩固的一个概念是 unprojectPoint 我知道该函数将获取 2D 中的一个点并返回 3D 中的一个点 因此具有正确的 Z 值 当我阅读文档时 我读到了以下内容 method u
  • 如何使用autoconf重新生成配置文件?

    我使用 autoconf 重新生成配置文件 它有效 但是当我执行生成的配置文件时 configure 有一些错误消息 例如 configure line 3713 syntax error near unexpected token bla
  • 来自另一个类的 Typescript 函数

    我对打字稿还很陌生 但现在我遇到了问题 我在每个类中都用 Typescript 编写了一个函数 function someFunction 现在我想从另一个 TS 文件调用该函数 我将其声明如下 declare function someF
  • 在 Python 中打印守护线程异常

    Python 不会打印守护线程中引发的异常的回溯消息 例如 以下代码创建一个守护线程并在新线程中引发异常 def error raiser raise Exception import threading thread threading
  • 禁用 Bintray 上传的 javadoc 检查

    我正在尝试将我的库的新版本上传到 Bintray 但是出现错误 我所做的更改之一是向我的 Javadoc 添加自定义属性 例如 The method does something param myParameter This is my p
  • 材质滑块和范围滑块工具提示并不总是可见

    我希望保持工具提示值始终可见 并且工具提示的文本应该背景透明 我试过https github com material components material components android blob master docs comp
  • 如何在 Azure 逻辑应用中解析 Excel 电子表格

    我需要使用 Azure 逻辑应用从 Excel 电子表格中解析和提取列信息 我已经为我的逻辑应用程序设置了从 Outlook 检索最新未读电子邮件的功能 此外 我的逻辑应用程序执行 FOR EACH 来读取所有附件 来自未读电子邮件 并确保