You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C# Microsoft Bot Framework SDK开发的机器人中读取本地Excel数据

C# Bot Framework 项目读取本地Excel数据实现方案

Bot Framework SDK本身仅提供机器人会话相关能力,没有内置Excel处理相关功能,你可以直接复用.NET生态下的通用Excel处理库实现该需求,和普通C#控制台/WEB项目的Excel读取逻辑完全一致,以下是两种成熟的落地方案:

方案1:EPPlus(仅支持.xlsx格式,无Office依赖)

注意:EPPlus 5.x及以上版本采用Polyform Noncommercial授权,商业用途需购买官方授权,非商业场景可免费使用

  • 第一步:通过NuGet安装稳定版包,推荐用4.5.3.3版本(MIT协议,可免费商用),NuGet安装命令:Install-Package EPPlus -Version 4.5.3.3
  • 第二步:配置授权上下文,在项目启动入口(Program.cs/Startup.cs)添加配置:
// 非商业使用设置
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// 商业使用且已购买授权设置
// ExcelPackage.LicenseContext = LicenseContext.Commercial;
  • 第三步:封装Excel读取方法,示例如下:
/// <summary>
/// 读取Excel数据返回结构化列表
/// </summary>
/// <param name="localExcelPath">本地Excel文件绝对路径</param>
/// <returns>每行数据为字典,key为表头,value为单元格内容</returns>
public List<Dictionary<string, string>> ReadExcelToDict(string localExcelPath)
{
    var resultList = new List<Dictionary<string, string>>();
    var excelFile = new FileInfo(localExcelPath);
    if (!excelFile.Exists) return resultList;

    using (var excelPackage = new ExcelPackage(excelFile))
    {
        // 读取第一个工作表,可按需修改为指定工作表名
        var workSheet = excelPackage.Workbook.Worksheets.FirstOrDefault();
        if (workSheet == null || workSheet.Dimension == null) return resultList;

        int totalRows = workSheet.Dimension.End.Row;
        int totalCols = workSheet.Dimension.End.Column;

        // 首行作为表头,从第二行开始读取数据
        for (int row = 2; row <= totalRows; row++)
        {
            var rowData = new Dictionary<string, string>();
            for (int col = 1; col <= totalCols; col++)
            {
                string header = workSheet.Cells[1, col].Text.Trim();
                string cellValue = workSheet.Cells[row, col].Text.Trim();
                rowData[header] = cellValue;
            }
            resultList.Add(rowData);
        }
    }
    return resultList;
}

方案2:NPOI(兼容.xls/.xlsx格式,无Office依赖,可免费商用)

如果需要处理2007版本以前的.xls格式Excel文件,可以选择NPOI库实现:

  • 第一步:安装NuGet包:Install-Package NPOI
  • 第二步:直接调用NPOI的对应API读取即可,使用逻辑和普通C#项目完全一致,不需要做Bot Framework专属适配。

Bot 集成注意事项

  • 如果是用户通过对话上传Excel文件的场景,需要先通过Bot Framework的附件接收API,把用户上传的文件缓存到本地临时目录后再调用上述方法读取,处理完成后可删除临时文件避免占用存储。
  • 处理超过10M的大Excel文件时建议改为异步后台处理,避免会话请求超时。

内容的提问来源于stack exchange,提问作者Bissu Sahoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 15:06:01