界面控件DevExpress中文教程:如何使用AI扩展Excel计算?

news2024/11/15 17:28:59

DevExpress WinForms拥有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

获取DevExpress v24.1正式版下载

概述

标准Excel公式处理各种业务需求,当然有时您的企业可能也会需要额外的功能来处理特定的用例。

当涉及到电子表格计算时,用户自定义公式为那些希望在Excel文档中引入定制的、特定于任务计算的最终用户提供了各种选项。用户自定义公式允许您自动执行重复任务,更有效地分析数据,并执行内置函数无法执行的高级计算。

通过集成AI服务,DevExpress可以将Excel公式计算提升到一个全新的水平,能更有效地分析大型数据集、结合模式识别、做出预测等。

在本文中我们将使用DevExpress WinForms Spreadsheet控件合并一个用户定义的公式,并说明如何利用AI进行高级计算。

在DevExpress WinForms Spreadsheet控件中实现用户自定义公式

在下面的部分中,我将创建一个用户定义的公式,该公式使用AI服务进行电子表格计算。

注意在下面的示例中使用OpenAI服务,在您将此解决方案纳入应用程序之前,请务必阅读并理解OpenAI的许可协议和使用条款。

Step 1:设置DevExpress WinForms Spreadsheet控件

首先,我需要将DevExpress WinForms Spreadsheet控件添加到项目中。

Step 2:设置OpenAI客户端

一旦将Spreadsheet控件添加到项目中后,就可以安装Azure.AI.OpenAI NuGet包并创建一个类来注册OpenAIClient,该客户端将在自定义公式类中使用(向AI服务发送请求)。

public static class AIFormulaClient
{
public static OpenAIClient Client;
static AIFormulaClient() => Client = new OpenAIClient("your OpenAI key");
}
Step 3:创建用户自定义函数

接下来,我将在示例WinForms应用程序中创建一个用户定义函数(UDF)。出于本例的目的,我将定义一个名为AISummary的函数,此函数使用AI服务为选定的单元格范围生成摘要。

AISummaryFunction类实现了自定义函数并提供了两个参数:

  • 第一个是必需的参数(为摘要指定源单元格范围)
  • 第二个参数是可选参数,用于设置以单词为单位的摘要长度。

IFunction.Evaluate方法检索参数值,并将单元格数据(CSV格式)和单词计数发送给GetSummary方法,该方法使用OpenAIClient生成请求并返回响应,返回值(AI生成的摘要)用作公式计算的结果。

public class AISummaryFunction : ICustomFunction
{
const string functionName = "AISummary";
readonly ParameterInfo[] functionParameters;

public AISummaryFunction()
{
this.functionParameters = new ParameterInfo[] {
new ParameterInfo(ParameterType.Reference, ParameterAttributes.Required),
new ParameterInfo(ParameterType.Value, ParameterAttributes.Optional) };
}

public string Name { get { return functionName; } }
ParameterInfo[] IFunction.Parameters { get { return functionParameters; } }
ParameterType IFunction.ReturnType { get { return ParameterType.Value; } }
bool IFunction.Volatile { get { return false; } }

ParameterValue IFunction.Evaluate(IList<ParameterValue> parameters, EvaluationContext context)
{
int wordCount = 40;
if (parameters.Count > 1)
wordCount = (int)parameters[1].NumericValue;
IWorkbook workbook = context.Sheet.Workbook;
workbook.Options.Export.Csv.Range = parameters[0].RangeValue.GetReferenceA1();
byte[] cellDataBytes = workbook.SaveDocument(DocumentFormat.Csv);
string value = GetSummary(Encoding.UTF8.GetString(cellDataBytes), wordCount);
return value;
}
string GetSummary(string cellRangeData, int wordCount)
{
ChatCompletionsOptions chatCompletionsOptions = new ChatCompletionsOptions()
{
DeploymentName = "gpt-4-vision-preview",
Messages =
{
new ChatRequestSystemMessage("You are a helpful assistant."),
new ChatRequestUserMessage(
new ChatMessageTextContentItem(string.Format("Please create summary in {0} words for the following excel data", wordCount)),
new ChatMessageTextContentItem(cellRangeData))
},
MaxTokens = 300
};

Response<ChatCompletions> chatResponse = AIFormulaClient.Client.GetChatCompletions(chatCompletionsOptions);
ChatChoice choice = chatResponse.Value.Choices[0];
return choice.Message.Content;

}
string IFunction.GetName(CultureInfo culture)
{
return functionName;
}
}
Step 4:注册自定义函数

在这一步中,将注册自定义函数。

public Form1()
{
InitializeComponent();

AISummaryFunction aiSummaryFunction = new AISummaryFunction();
var globalFunctions = spreadsheetControl.Document.Functions.GlobalCustomFunctions;
if (!globalFunctions.Contains(aiSummaryFunction.Name))
globalFunctions.Add(aiSummaryFunction);
}
Step 5:在电子表格中使用自定义函数

现在可以在电子表格中使用AISummary函数(就像任何其他公式一样),将在WinForms Spreadsheet 控件中加载Excel文件,或者可以将汇总数据输入到单元格范围中,然后应用AISummary函数来获得AI生成的汇总。

Worksheet worksheet = spreadsheetControl.ActiveWorksheet;
worksheet["E2"].Formula = "AISummary(A2:D10, 50)";
Step 6:测试

接下来将测试新用户定义公式,并确保我的AI集成/自定义公式按预期工作。

界面控件DevExpress中文教程:如何使用AI扩展Excel计算?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2102849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

人工智能 | Mistral 大语言模型

Mistral AI Mistral AI team Mistral AI 是一家销售人工智能产品的法国公司。它由 Meta Platforms 和 Google DeepMind 的前员工于 2023 年 4 月创立。该公司于 2023 年 10 月筹集了 3.85 亿欧元&#xff0c;2023 年 12 月估值超过 20 亿美元 Mistral.AI 愿景与使命 我们是一…

Linux动态链接库

一、背景 我们使用Linux的过程中&#xff0c;例如安装程序或者部署一些如Python等&#xff0c;可能会遇到过如下动态链接库(共享库)报错: ImportError: libcrypto.so.10: cannot open shared object file: No such file or directory $"./lib/python3.8/lib/python3.8/ss…

同三维TM6-6 有线6级联会议麦克风详情介绍

同三维TM6-6 有线6级联会议麦克风 信息通讯类智能阵列麦克风 有线传输&#xff0c;强抗干扰、可级联、长续航、低延时 6个麦克风级联&#xff0c;通过3.5音频线级联, 可以同时使用3.5mm LINE IN/OUT、USB有线连接PC端&#xff0c;每条音频线是3米&#xff0c;可应用在视频会…

使用vscode编辑matlab完美解决方法

vscode里面的matlab插件都不好用&#xff0c;需要搭配互补一下 1先安装MATLAB 这个插件可以进行代码高亮、格式化、跳转&#xff0c;F5运行所有代码&#xff0c;或者选中要运行的代码&#xff0c;右键单独运行&#xff0c; 优点&#xff1a;运行速度很快&#xff0c;和matlab里…

idea新建父工程和添加导入新模块的步骤

如何在idea中新建一个父工程&#xff0c;然后在父工程下新建多个微服务模块&#xff1f; 一、新建父工程 1.1 新建New Project 1.2 删掉多余文件 创建好后&#xff0c;把多余的文件删掉&#xff0c;变成这样 1.3 修改pom文件 添加<packaging>pom</packaging>…

【Webpack】基本使用方法

参考视频&#xff1a; 30 分钟掌握 Webpack_哔哩哔哩_bilibili 什么是webpack 简单来说就是一个 打包工具&#xff0c; 可以将互相依赖的html、css、js以及图片字体等资源文件&#xff0c;经过处理打包成一个可执行的项目文件 &#x1f330;看例子 环境初始化 在需要使用…

ai智能写作助手批量生成文章,提升工作效率!

在当今快节奏的工作环境中&#xff0c;时间就是金钱&#xff0c;效率就是生命。对于需要大量产出文章的工作者来说&#xff0c;如何在有限的时间内创作出高质量的内容&#xff0c;成为了一个亟待解决的问题。而AI智能写作助手的出现&#xff0c;为这一问题提供了解决方案。本文…

godot开发初体验

点击加号可以创建一个新的场景 点击其它节点可以添加节点 想对某个节点添加子节点可以右键这个节点,然后点击添加子节点 在左下角的文件系统中,可以右键某个场景,并将其设置为主场景,主场景作为程序的入口 点击项目->项目设置-> 输入映射,可以添加一个新的动作,在添加新动…

游戏应用|空地模型实景融合,还原《黑神话:悟空》游戏场景

古色斑驳&#xff0c;巍峨险峻&#xff0c;是历史的低语&#xff0c;诉说着千百年的沧桑与辉煌&#xff1b;飞檐翘角&#xff0c;雕梁画栋&#xff0c;凝聚着时代的文明与智慧。在数字化浪潮下&#xff0c;我们利用实景三维技术&#xff0c;翻开了中华古建筑这本伟大的史诗。 P…

快速入门Go:Go + gin + MongoDB

Go 进阶:Go + gin + MongDB 极速搭建EcommerceSys电商系统 前言 本章节适合有一定基础的 Golang 初学者,通过简单的项目实践来加深对 Golang 的基本语法和 Web 开发的理解。 本文章持续更新中,请关注… 项目结构 项目流程图 技术栈(待补充)项目结构项目路由 (待补充) …

合宙LuatOS开发板Core_Air780EP使用说明

Core-Air780EP 开发板是合宙通信推出的基于 Air780EP 模组所开发的&#xff0c; 包含电源&#xff0c;SIM卡&#xff0c;USB&#xff0c;天线&#xff0c;音频等必要功能的最小硬件系统。 以方便用户在设计前期对 Air780EP模块进行性能评估&#xff0c;功能调试&#xff0c;软…

zeus病毒应急响应

目录 介绍步骤 介绍 Zeus病毒&#xff0c;也叫Zbot病毒&#xff0c;是一种具有高潜伏性的木马病毒&#xff0c;受影响系统为微软Windows&#xff0c;主要被用来盗窃用户银行信息。 Zeus最早于2007年被发现&#xff0c;当时它被用来盗取美国某公司的资料信息。到2009年&#x…

科技赋能,览尽千年:高科技解锁博物馆沉浸式探索!

近日&#xff0c;第十届中国博物馆及相关产品与技术博览会&#xff08;简称“博博会”&#xff09;在呼和浩特市敕勒川国际会展中心圆满落幕。 “博博会”上&#xff0c;智能化、数字化技术成为了展览的一大亮点。虚拟现实&#xff08;VR&#xff09;、增强现实&#xff08;AR…

计算机电脑共享文件和打印机共享问题:“计算机无法访问!您可能没有权限使用网络资源。请与这台服务器的管理员联系以查明您是否有访问权限。”解决办法

在Win10系统中&#xff0c;我们在访问局域网共享文件或计算机共享打印机的时候会出现“你可能没有权限使用网络资源 ”。请与这台服务器的管理员联系以查明你是的提示&#xff0c;很多用户不知道如何解决&#xff0c;下面就把正确的解决方法分享给大家&#xff0c;你可能没有权…

【数据结构篇】~链表算法题2

链表算法题2 1.返回倒数第k个节点思路解析 2.链表的回文结构​思路解析1&#xff08;空间复杂度不符合&#xff09;解析2 3.相交链表​思路解析 1.返回倒数第k个节点 OJ链接 思路 有点像高中学的相对位移 利用快慢指针&#xff0c;开始时都指向头节点&#xff0c;然后让快指…

redis之地理空间geo实战以及选项详解

redis之地理空间geo实战以及选项详解 Redis GEO Redis GEO 主要用于存储地理位置信息&#xff0c;并对存储的信息进行操作&#xff0c;该功能在 Redis 3.2 版本新增。 Redis GEO 操作方法有&#xff1a; geoadd&#xff1a;添加地理位置的坐标。 geopos&#xff1a;获取地理…

【时时三省】(C语言基础)指针进阶6

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 例题1&#xff1a; sizeof(数组名)&#xff0d;数组名表示整个数组的&#xff0d;计算的是整个数组的大小 &数组名&#xff0d;数组名表示整个数组&#xff0c;取出的是整个数组的地址 …

SprinBoot+Vue宠物领养救助微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平…

Windows如何恢复已删除文件?电脑数据恢复完整指南!

无论你是要释放磁盘空间还是因为其他原因删除或误删重要文件或文件夹后&#xff0c;现在一定想知道怎么还原。其实不用担心&#xff0c;在你删除文件时&#xff0c;你的电脑并没有完全删除它们&#xff0c;只是将它们标记为已删除&#xff0c;等待新数据覆盖。所以你还有很多方…

论文速读|BiGym:一款基于演示的移动双手操作机器人基准

项目地址&#xff1a;BiGym: A Demo-Driven Mobile Bi-Manual Manipulation Benchmark BiGym 是一个针对移动双手操作的机器人学习基准&#xff0c;包含 40 个在家庭环境中进行的任务&#xff0c;如简单的目标接近到复杂的厨房清洁。这些任务涵盖了从固定的目标接近到需要与各种…