You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何用C#结合EPPlus遍历Excel工作表并将表名导入ComboBox?

用C# + EPPlus 遍历Excel工作表并填充ComboBox的实现方案

嘿,这个需求其实挺常见的,我来给你一步步拆解怎么实现👇

1. 先搞定EPPlus的安装

首先得把工具准备好,你可以通过NuGet快速安装EPPlus组件:

  • 打开NuGet包管理器控制台,输入:Install-Package EPPlus
  • 或者直接在Visual Studio的NuGet包管理器界面搜索“EPPlus”,选最新版安装就行(注意:EPPlus 5及以后版本有商用授权限制,非商用场景放心用,商用的话需要购买授权或者考虑用旧版本)

2. 核心实现代码

假设你是在WinForms项目里操作(WPF逻辑类似,只是ComboBox的Items添加方式稍有区别),以下是完整的可直接用的示例:

先引入必要的命名空间:

using System.IO;
using OfficeOpenXml;
using System.Windows.Forms; // WinForms项目需要这个

然后写一个专门的方法来处理读取和填充逻辑:

private void LoadExcelSheetsToComboBox(string excelPath, ComboBox targetCombo)
{
    // 先清空ComboBox原有内容,避免重复添加
    targetCombo.Items.Clear();

    // 先检查文件是否存在,避免报错
    if (!File.Exists(excelPath))
    {
        MessageBox.Show("指定的Excel文件找不到哦!");
        return;
    }

    // 用using包裹ExcelPackage,自动释放资源,防止文件被锁定
    using (var excelPackage = new ExcelPackage(new FileInfo(excelPath)))
    {
        // 遍历工作簿里的所有工作表
        foreach (var worksheet in excelPackage.Workbook.Worksheets)
        {
            // 把工作表名称添加到ComboBox的Items里
            targetCombo.Items.Add(worksheet.Name);
        }
    }

    // 可选操作:如果有工作表,默认选中第一个
    if (targetCombo.Items.Count > 0)
    {
        targetCombo.SelectedIndex = 0;
    }
}

3. 调用示例

比如你可以在按钮点击事件里触发这个方法,还可以加个文件选择框让用户自己选Excel:

private void btnLoadExcel_Click(object sender, EventArgs e)
{
    using (var openFileDialog = new OpenFileDialog())
    {
        openFileDialog.Filter = "Excel文件 (*.xlsx)|*.xlsx|旧版Excel (*.xls)|*.xls";
        if (openFileDialog.ShowDialog() == DialogResult.OK)
        {
            // 调用方法填充ComboBox
            LoadExcelSheetsToComboBox(openFileDialog.FileName, comboBoxSheets);
        }
    }
}

4. 几个要注意的细节

  • 资源释放:一定要用using包裹ExcelPackage,不然Excel文件会被程序锁定,没法删除或修改。
  • 线程安全:如果是在后台线程异步加载Excel,WinForms里必须用Invoke来更新ComboBox,不然会触发跨线程异常,示例写法:
// 后台线程中更新ComboBox的正确姿势
targetCombo.Invoke((MethodInvoker)delegate {
    targetCombo.Items.Add(worksheet.Name);
});
  • EPPlus授权设置:如果用的是5.x及以上版本,初始化前要设置LicenseContext:
// 非商用场景设置这个
ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
// 商用场景需要设置为Commercial,并确保有合法授权

这样就能完美实现你的需求啦!

内容的提问来源于stack exchange,提问作者wahed fazeli

火山引擎 最新活动