首页 > 编程语言 >c# winform 以excel形式导出表格中的数据

c# winform 以excel形式导出表格中的数据

时间:2024-09-23 15:23:09浏览次数:17  
标签:Count c# worksheet Cells excel int dgv Columns winform

1.需要安装EPPlus插件

2.引入
using OfficeOpenXml;
using OfficeOpenXml.Style;
 

3.代码

public void ExportDataGridViewToExcel(DataGridView dgv, string filePath)
        {
            // 设置EPPlus的许可证上下文
            ExcelPackage.LicenseContext = LicenseContext.NonCommercial;
            // 检查文件是否存在
            if (!File.Exists(filePath))
            {
                // 文件不存在,创建一个新的Excel文件并写入信息
                package = new ExcelPackage();

                workbook = package.Workbook;
                worksheet = workbook.Worksheets.Add("Sheet1");

                // 写入表头
                for (int i = 0; i < dgv.Columns.Count; i++)
                    {
                        worksheet.Cells[1, i + 1].Value = dgv.Columns[i].HeaderText;
                        worksheet.Cells[1, i + 1].Style.Font.Bold = true;//行标题加粗
                }

                    // 写入行数据
                    for (int i = 0; i < dgv.Rows.Count; i++)
                    {
                        for (int j = 0; j < dgv.Columns.Count; j++)
                        {
                            worksheet.Cells[i + 2, j + 1].Value = dgv.Rows[i].Cells[j].Value?.ToString();
                        }
                    }

                    FileInfo fileInfo = new FileInfo(filePath);
                    package.SaveAs(fileInfo);
                }
             else
            {
                // 文件存在,打开并写入或覆盖信息
                package = new ExcelPackage(new FileInfo(filePath));
                workbook = package.Workbook;
                worksheet = workbook.Worksheets[0]; // 假设我们只操作第一个工作表

                    // 清除工作表内容
                    worksheet.Cells.Clear();

                    // 写入表头
                    for (int i = 0; i < dgv.Columns.Count; i++)
                    {
                        worksheet.Cells[1, i + 1].Value = dgv.Columns[i].HeaderText;
                        worksheet.Cells[1, i + 1].Style.Font.Bold = true;
                     }

                    // 写入行数据
                    for (int i = 0; i < dgv.Rows.Count; i++)
                    {
                        for (int j = 0; j < dgv.Columns.Count; j++)
                        {
                            worksheet.Cells[i + 2, j + 1].Value = dgv.Rows[i].Cells[j].Value?.ToString();
                        }
                    }

                    package.Save(); // 保存更改
                }
            }

标签:Count,c#,worksheet,Cells,excel,int,dgv,Columns,winform
From: https://blog.csdn.net/Sun11111111no/article/details/142459305

相关文章

  • C++ string
    在C++中,std::string类是处理字符串的主要工具。它提供了丰富的功能和方法来简化字符串操作,使得开发者可以更加方便地进行文本数据的处理。构造函数std::string类有多种构造函数供用户选择:使用C风格字符串初始化:string(constchar*s);使用指定字符重复初始化:string(size_......
  • 框架漏洞(5-rce s2-057 CVE-2017-8046 CVE-2018-1273 Shiro-550)
    5-rce步骤一:环境部署cdvulhub/thinkphp/5-rcedocker-composeup-d步骤二:输入系统命令: whoami/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami步骤三:写入webshell到1.php/index.php?s=index/think\ap......
  • CF1270H Number of Components 题解
    Description给一个长度为\(n\)的数组\(a\),\(a\)中的元素两两不同。对于每个数对\((i,j)(i<j)\),若\(a_i<a_j\),则让\(i\)向\(j\)连一条边。求图中连通块个数。支持\(q\)次修改数组某个位置的值,每次修改后输出图中连通块个数。\(n,q\le5\times10^5,1\lea_i\le10^......
  • Rocksdb 7.0.0 ~ 7.10.2 重要版本特性
    7.9.0(2022-11-21)现在可以提供对宽列数据模型的基本支持。可以使用API存储宽列实体PutEntity,并使用GetEntity和迭代器的新columnsAPI进行检索。为了兼容,经典APIGet和MultiGet以及迭代器的valueAPI返回宽列实体的匿名默认列的值;此外,GetEntity和迭代器的APIcolumns以仅具......