C# 实现简单的 Excel 数据写入工具

简介: 基于EPPlus库实现C#将数据写入Excel文件,支持自定义表头与多行数据,自动调整列宽,操作简便,适用于非商业场景的数据导出需求。
基于 EPPlus 库将数据写入 Excel 文件,支持自定义表头和数据。
using OfficeOpenXml;
public class ExcelWriter
{
    public static bool WriteExcel(string filePath, List<string> headers, List<List<object>> data)
    {
        try
        {
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            using (var package = new ExcelPackage())
            {
                var worksheet = package.Workbook.Worksheets.Add("Sheet1");
                // 写入表头
                for (int col = 0; col < headers.Count; col++)
                {
                    worksheet.Cells[1, col + 1].Value = headers[col];
                    worksheet.Cells[1, col + 1].Style.Font.Bold = true;
                }
                // 写入数据
                for (int row = 0; row < data.Count; row++)
                {
                    var rowData = data[row];
                    for (int col = 0; col < rowData.Count; col++)
                    {
                        worksheet.Cells[row + 2, col + 1].Value = rowData[col];
                    }
                }
                // 自动调整列宽
                worksheet.Cells.AutoFitColumns();
                // 保存文件
                File.WriteAllBytes(filePath, package.GetAsByteArray());
            }
            Console.WriteLine("Excel写入成功!");
            return true;
        }
        catch (Exception ex)
        {
            Console.WriteLine($"写入失败: {ex.Message}");
            return false;
        }
    }
    // 调用示例
    public static void TestExcelWriter()
    {
        var headers = new List<string> { "姓名", "年龄", "职业" };
        var data = new List<List<object>> {
            new List<object> { "张三", 25, "程序员" },
            new List<object> { "李四", 30, "设计师" }
        };
        WriteExcel("output.xlsx", headers, data);
    }
}
相关文章
|
2天前
|
存储 C#
C# 实现简单的备忘录模式
备忘录模式在不破坏封装性的前提下,捕获并保存对象的内部状态,以便后续恢复。通过原发器创建备忘录,管理者存储备忘录,可实现状态回滚。
|
2天前
|
C#
C# 异常处理:try-catch-finally 避免程序崩溃
异常处理用于捕获运行时错误(如空引用、文件不存在),确保程序稳定。通过 `try` 包裹可能出错的代码,`catch` 捕获并处理异常,`finally` 确保资源释放等操作始终执行,提升代码健壮性。
|
2天前
|
安全 C#
C# 实现简单的单例模式(懒汉式)
单例模式确保一个类仅存在一个实例,并提供全局访问点。通过私有构造函数防止外部实例化,结合静态属性和延迟初始化实现线程安全的唯一实例,常用于日志、配置管理等场景。
|
2天前
|
C#
C# 条件判断:if-else 与 switch 的实用场景
条件判断是流程控制的核心。if-else适用于多级条件判断,如根据积分决定会员等级;switch适用于多值匹配,C# 7.0+支持字符串和数值匹配,可清晰处理会员等级对应的优惠策略。
|
2天前
|
设计模式 算法 C#
C# 实现简单的观察者模式
简介:本文介绍了C#中三种常用设计模式的实现:观察者模式用于解耦主题与观察者,策略模式封装可互换的算法族,工厂模式则隐藏对象创建细节,提升代码可维护性与扩展性。
|
SQL 关系型数据库 MySQL
一篇文章解析mysql的 行转列(7种方法) 和 列转行
一篇文章解析mysql的 行转列(7种方法) 和 列转行
3550 0
|
2天前
|
C#
C# 方法:如何定义可复用的功能模块
方法是代码复用的核心,需定义返回类型、名称和参数,支持重载。示例展示了无返回值、有返回值及重载方法的使用,实现整数与小数加法,并输出结果。
|
2天前
|
存储 开发框架 缓存
C# 实现图片验证码的 WebAPI 版(ASP.NET Core)
基于ASP.NET Core实现的验证码服务,生成带干扰线和随机旋转文字的4位图文验证码,支持内存存储与验证。需安装System.Drawing.Common包。
|
2天前
|
存储 安全 C#
C# 数组与集合:List<T> 最常用场景
数组长度固定,集合(List&lt;T&gt;)可动态增删,支持泛型与类型安全。常用操作包括添加、删除、遍历和查询元素,是开发中首选的动态数据存储方式。
|
2天前
|
存储 缓存 安全
C# 实现带过期时间的本地缓存工具
基于ConcurrentDictionary与定时清理机制,实现线程安全的本地缓存,支持键值过期自动清除。每分钟扫描并移除过期项,有效防止内存溢出,适用于需短暂存储数据的场景,如用户会话、临时配置等,保障性能与稳定性。

热门文章

最新文章