在教育与教务场景中,每次考试后的成绩处理是最频繁也最耗时的工作。同一次考试成绩,往往需要从两个维度进行处理:面向班级学生与班主任,需要呈现本班的成绩明细、排名与学科强弱;面向教师与教务处,则需要进行全年级横向对比,判断哪些班级、哪些学科需要重点关注。
传统做法通常需要人工在 Excel 中编写公式、手动排序、逐项绘图,再撰写分析总结。面向不同对象还要重复整理两套数据,整套流程往往耗费半天到一天时间,且公式易错、图表样式不统一、分析口径难以保持一致。
对比传统SDK API处理
| 传统 Spire.Office for .NET API | Spire.Agent.Office 处理 | |
|---|---|---|
| 驱动方式 | 编写 Excel 公式 + 拆分文件 + 排序 + 图表 + 条件格式代码,控制每一步处理 | 用自然语言描述目标,AI 理解后自动编排执行路径 |
| 代码量 | 成绩分析场景通常需要 500-1000 行 C# 代码(含按班拆分文件、公式计算、排名逻辑、图表配置等) | 约 10 行调用代码 + 一条自然语言指令 |
| 统计口径 | 需硬编码平均分/及格率/优秀率的计算公式和判定逻辑,口径调整需改代码 | AI 理解教育统计语义,自动按"≥60 及格、≥90 优秀"等口径计算 |
| 图表生成 | 需手动创建 Chart 对象、配置数据区域、设定图表类型和样式 | AI 根据数据语义自动选择雷达图、柱状图等最合适的图表类型 |
| 需求变更 | 新增统计维度需改代码 → 编译 → 部署 | 修改指令中的描述,即刻生效 |
本文介绍如何使用 Spire.Agent.Office 的 Excel AI 能力,分别面向班级学生与教师/教务处两类对象,实现成绩统计、排名与可视化分析的自动化,仅需几条自然语言指令即可完成。
有关产品安装和 SpireToken 配置,请参考 在 .NET 项目中集成 Spire.Agent.Office。以下示例默认已安装 Spire.Agent.Office 并完成 SpireToken 配置。
班级成绩统计与展示
面向班级学生与班主任的成绩分析,重点在于本班:成绩明细、班级内排名、学科强弱。不同班级之间无需横向比较,因此每个班级单独生成一个 Excel 文件,可直接打印张贴、发送至班级群或用于家长会展示。
以下示例使用 Spire.Agent.Office 智能体,通过自然语言指令自动按班级拆分数据,为每个班级生成独立的成绩分析 Excel 文件:
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Xls;
// 原始成绩表(含班级、姓名、各科成绩列)
string inputPath = @"C:\ScoreAnalysis\学生成绩.xlsx";
// 结果文档路径(null 时使用输出文件夹路径)
string savePath = null;
// 输出目录(每个班级一个文件)
string OutDir = @"C:\ScoreAnalysis\ClassAnalysis";
// SpireToken Key
string key = "sk-TF***************************r";
// 自然语言指令
string instruction =
"请对输入文件进行以下处理:\r\n" +
"1. 读取文件,每个班级独立生成一个 Excel 成绩分析文件,文件名为'XX班成绩分析.xlsx'\r\n" +
"2. 每个班级文件包含:该班成绩明细、按总分的班级内排名、各科平均分/最高分/最低分/及格率(≥60 分)/优秀率(≥90 分)、分数段分布\r\n" +
"3. 选择合适的图表类型为班级成绩进行可视化展示\r\n" +
"4. 表格样式美观统一,总分排名前 10 名标绿、不及格科目标红";
// AI 生成
AIResult result = AnalyzeClassScores(instruction, inputPath, savePath, key, OutDir);
// AI 辅助成绩分析
static AIResult AnalyzeClassScores(string instruction, string inputpath, string savePath, string key, string output)
{
// 设置 AI 处理选项
AIOptions options = new AIOptions();
options.SpireToken = key;
options.WorkDir = output;
using (Workbook wb = new Workbook())
{
if (!string.IsNullOrEmpty(inputpath) && File.Exists(inputpath))
wb.LoadFromFile(inputpath);
AIDocumentProcessor processor = wb.AI(options);
return processor.ExecuteInstruction(wb, instruction, savePath);
}
}
原成绩数据和按班级生成的成绩分析文件

全年级成绩汇总与分析
面向教师与教务处的成绩分析,重点在于整体:班级之间的差距、哪些学科整体薄弱、全年级排名分布。所有班级的数据需汇总到同一个工作表上,才能横向对比、统一口径、辅助决策。
以下示例使用 Spire.Agent.Office 智能体,通过自然语言指令将全年级所有班级的数据汇总到同一个工作表,完成班级对比与可视化分析:
using Spire.Agent.Office.AI;
using Spire.Agent.Office.Extensions;
using Spire.Xls;
// 原始成绩表(含班级、姓名、各科成绩列)
string inputPath = @"C:\ScoreAnalysis\学生成绩.xlsx";
// 全年级成绩分析文件保存路径
string savePath = @"C:\ScoreAnalysis\年级成绩分析.xlsx";
// SpireToken Key
string key = "sk-TF***************************r";
// 自然语言指令
string instruction =
"请对输入文件进行以下处理:\r\n" +
"1. 读取文件,按班级分别计算各科目的平均分、及格率(≥60 分)、优秀率(≥90 分),并生成汇总所有班级指标的'班级对比'工作表\r\n" +
"2. 根据总分生成全年级排名\r\n" +
"3. 为各科平均分生成雷达图:每个班级各生成一张雷达图展示本班学科强弱,并额外生成一张叠加所有班级的对比雷达图(每个班级作为一个系列),以便班级间直接对比\r\n" +
"4. 根据统计数据,分析全年级整体表现,指出各班级的优势与薄弱学科,并提出针对性提升建议";
// AI 生成
AIResult result = AnalyzeGradeScores(instruction, inputPath, savePath, key);
// AI 辅助成绩分析
static AIResult AnalyzeGradeScores(string instruction, string inputpath, string savePath, string key)
{
// 设置 AI 处理选项
AIOptions options = new AIOptions();
options.SpireToken = key;
using (Workbook wb = new Workbook())
{
if (!string.IsNullOrEmpty(inputpath) && File.Exists(inputpath))
wb.LoadFromFile(inputpath);
AIDocumentProcessor processor = wb.AI(options);
return processor.ExecuteInstruction(wb, instruction, savePath);
}
}
原成绩数据和全年级成绩分析结果

两种方式对比
| 班级成绩统计与展示 | 全年级成绩汇总与分析 | |
|---|---|---|
| 面向对象 | 班级学生、班主任 | 教师、教务处 |
| 输出形态 | 每个班级一个独立 Excel 文件 | 所有班级汇总到一个 Excel 文件 |
| 核心内容 | 本班成绩明细、班级内排名、各科统计、学科强弱可视化图表 | 班级横向对比、全年级排名、雷达图、成绩分析结论 |
| 典型用途 | 打印张贴、家长会展示 | 教研汇报、教学决策、教务统计 |
常见问题
图表类型不符合预期
原因:AI 选择的图表类型可能与用户的表达习惯不一致。
解决:在指令中明确指定图表类型偏好,如"班级优势学科使用雷达图,分数段分布使用柱状图,历次考试成绩趋势使用折线图"。
排名并列时如何处理
原因:多名学生总分相同属于正常情况,AI 默认的并列名次处理方式可能不符合要求。
解决:在指令中明确并列规则,如"总分相同时按语文成绩优先排序"。
获取SpireToken Key
- 联系 该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。或访问 https://www.e-iceblue.com/TemLicense.html获得试用/商业 API 密钥
在代码中配置:
AIOptions options = new AIOptions();options.SpireToken = key;









