c# EPPlus秘籍之Excel实现图表导出

 更新时间:2023年12月15日 10:40:28   作者:谭广健  
这篇文章主要为大家介绍了c# EPPlus秘籍之Excel实现图表导出示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

之前受某大神推荐使用EPPlus作为excel之控件,简直如获一宝,大数据导出将不再麻烦,服务器也不必再安装烦人的office控件.简单易用更重要不用破解什么的。

大数据导出测试

今天测试了2点,一个是大数据导出测试5W简直没压力。

代码如下

      FileInfo newFile = new FileInfo(@"c:\test1.xlsx");
            if (newFile.Exists)
            {
                newFile.Delete();
                newFile = new FileInfo(@"c:\test.xlsx");
            }
            using (ExcelPackage package = new ExcelPackage(newFile))
            {
                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("test");
                 for (int i = 1; i <= 50000; i++)
                 {
                     for (int j = 1; j <= 20; j++)
                     {
                         worksheet.Cells[i, j].Value = i + "|" + j;
                     }
                 }
                 package.Save();
                 MessageBox.Show("ok");
             }
             

于是再测试一下有什么特殊功能,发现有一个图表导出功能也很不错,分享代码如下: 

                ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("test");
                worksheet.Cells.Style.WrapText = true;
                worksheet.View.ShowGridLines = false;//去掉sheet的网格线
                worksheet.Cells[1, 1].Value = "名称";
                worksheet.Cells[1, 2].Value = "价格";
                worksheet.Cells[1, 3].Value = "销量";
                worksheet.Cells[2, 1].Value = "大米";
                worksheet.Cells[2, 2].Value = 56;
                worksheet.Cells[2, 3].Value = 100;
                worksheet.Cells[3, 1].Value = "玉米";
                worksheet.Cells[3, 2].Value = 45;
                worksheet.Cells[3, 3].Value = 150;
                worksheet.Cells[4, 1].Value = "小米";
                worksheet.Cells[4, 2].Value = 38;
                worksheet.Cells[4, 3].Value = 130;
                worksheet.Cells[5, 1].Value = "糯米";
                worksheet.Cells[5, 2].Value = 22;
                worksheet.Cells[5, 3].Value = 200;
                using (ExcelRange range = worksheet.Cells[1, 1, 5, 3])
                {
                    range.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
                    range.Style.VerticalAlignment = ExcelVerticalAlignment.Center;
                }
                using (ExcelRange range = worksheet.Cells[1, 1, 1, 3])
                {
                    range.Style.Font.Bold = true;
                    range.Style.Font.Color.SetColor(Color.White);
                    range.Style.Font.Name = "微软雅黑";
                    range.Style.Font.Size = 12;
                    range.Style.Fill.PatternType = ExcelFillStyle.Solid;
                    range.Style.Fill.BackgroundColor.SetColor(Color.FromArgb(128, 128, 128));
                }
                worksheet.Cells[1, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[1, 2].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[1, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[2, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[2, 2].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[2, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[3, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[3, 2].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[3, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[4, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[4, 2].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[4, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[5, 1].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[5, 2].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                worksheet.Cells[5, 3].Style.Border.BorderAround(ExcelBorderStyle.Thin, Color.FromArgb(191, 191, 191));
                ExcelChart chart = worksheet.Drawings.AddChart("chart", eChartType.ColumnClustered);
                //eChartType中可以选择图表类型
                ExcelChartSerie serie = chart.Series.Add(worksheet.Cells[2, 3, 5, 3], worksheet.Cells[2, 1, 5, 1]);
                //设置图表的x轴和y轴
                serie.HeaderAddress = worksheet.Cells[1, 3];//设置图表的图例
                chart.SetPosition(150, 10);//设置位置
                chart.SetSize(500, 300);//设置大小
                chart.Title.Text = "销量走势";//设置图表的标题
                chart.Title.Font.Color = Color.FromArgb(89, 89, 89);//设置标题的颜色
                chart.Title.Font.Size = 15;//标题的大小
                chart.Title.Font.Bold = true;//标题的粗体
                chart.Style = eChartStyle.Style15;//设置图表的样式
                chart.Legend.Border.LineStyle = eLineStyle.Solid;
                chart.Legend.Border.Fill.Color = Color.FromArgb(217, 217, 217);//设置图例的样式

效果

如下:

将图片导入到excel

还有可以将图片导入到excel中去,代码如下:

ExcelPicture picture = worksheet.Drawings.AddPicture("logo", Image.FromFile(@"c:\QQ截图20190403205944.jpg"));//插入图片
picture.SetPosition(100, 100);//设置图片的位置
picture.SetSize(100, 100);//设置图片的大小

多个excel的权限

在最后弄多个excel的权限,加入后修改是需要口令的。

worksheet.Protection.IsProtected = true;//设置是否进行锁定
worksheet.Protection.SetPassword("ABC");//设置密码
worksheet.Protection.AllowAutoFilter = false;//下面是一些锁定时权限的设置
worksheet.Protection.AllowDeleteColumns = false;
worksheet.Protection.AllowDeleteRows = false;
worksheet.Protection.AllowEditScenarios = false;
worksheet.Protection.AllowEditObject = false;
worksheet.Protection.AllowFormatCells = false;
worksheet.Protection.AllowFormatColumns = false;
worksheet.Protection.AllowFormatRows = false;
worksheet.Protection.AllowInsertColumns = false;
worksheet.Protection.AllowInsertHyperlinks = false;
worksheet.Protection.AllowInsertRows = false;
worksheet.Protection.AllowPivotTables = false;
worksheet.Protection.AllowSelectLockedCells = false;
worksheet.Protection.AllowSelectUnlockedCells = false;
worksheet.Protection.AllowSort = false;

加入excel的描述

还有一个秘籍,加入excel的描述:

epk.Workbook.Properties.Title = "excel的标题";//设置excel的标题 epk.Workbook.Properties.Author = "谭广健";//作者 epk.Workbook.Properties.Comments = "这是备注";//备注 epk.Workbook.Properties.Company = "公司版权啥的";//公司

通过SQL语句直接导出Excel

 var db_data = ExecuteNonQuery("select * from SYS_LIST_SETTING", CommandType.Text);
     DataSet ds = new DataSet();
     ds.Tables.Add(db_data);
     DataSetToExcel(ds, @"c:\test1.xlsx");
     
 #region 读数据库
        public static DataTable ExecuteNonQuery(String cmdText, CommandType ct)
        {
            DataTable dt = new DataTable();
            using (SqlConnection conn = new SqlConnection(connectionString))
            {
                try
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(cmdText, conn))
                    {
                        cmd.CommandType = ct;
                        using (SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection))
                        {
                            dt.Load(sdr);
                        }
                    }
                }
                catch (Exception e)
                {
                    System.Diagnostics.Debug.WriteLine(e.Message);
                }
                finally
                {
                    if (conn.State == ConnectionState.Open)
                    {
                        conn.Close();
                    }
                    System.Diagnostics.Debug.WriteLine(dt.Rows.Count);
                }
            }
            return dt;
        }
 #endregion
 #region DataTable to Excel2007 
     private static void DataSetToExcel(DataSet dataSet, string filePath)
        {
            using (ExcelPackage pck = new ExcelPackage())
            {
                foreach (DataTable dataTable in dataSet.Tables)
                {
                    ExcelWorksheet workSheet = pck.Workbook.Worksheets.Add(dataTable.TableName);
                    workSheet.Cells["A1"].LoadFromDataTable(dataTable, true);
                }

                pck.SaveAs(new FileInfo(filePath));
            }
        }
 #endregion

以上就是c# EPPlus秘籍之Excel实现图表导出的详细内容,更多关于c# EPPlus图表导出Excel的资料请关注脚本之家其它相关文章!

相关文章

  • C# List 并发丢数据问题原因及解决方案

    C# List 并发丢数据问题原因及解决方案

    这篇文章主要介绍了C# List 并发丢数据问题原因及解决方案,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • c#中查询表达式GroupBy的使用方法

    c#中查询表达式GroupBy的使用方法

    本篇文章介绍一下GroupBy的使用方法,包括实验基础数据用例,通过实例代码给大家介绍的非常详细,需要的朋友跟随小编一起看看吧
    2021-11-11
  • Unity UI拖拽模型选择功能

    Unity UI拖拽模型选择功能

    这篇文章主要为大家详细介绍了Unity UI拖拽模型选择功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-01-01
  • vs2019 实现C#调用c++的dll两种方法

    vs2019 实现C#调用c++的dll两种方法

    这篇文章主要介绍了vs2019 实现C#调用c++的dll两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • 动态改变gridview列宽度函数分享

    动态改变gridview列宽度函数分享

    通常用GridView绑定datatable,由于需要动态绑定到不同的datatable所以需要动态调整GridView的宽度。写了这个函数实现该功能
    2014-01-01
  • C#中委托和事件的区别详解

    C#中委托和事件的区别详解

    C# 中的委托(Delegate)类似于 C 或 C++ 中函数的指针。事件是在委托类型变量前加上 event 关键字,其本质是用来对委托类型的变量进行封装,类似于类的属性对字段的封装。本文就来聊聊C#中委托和事件的区别,感兴趣的可以了解一下
    2022-11-11
  • C#算法设计之关于1000瓶水的问题

    C#算法设计之关于1000瓶水的问题

    这篇文章主要介绍了C#算法设计之关于1000瓶水的问题,是一个比较经典的算法问题,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • C# Form自定义光标的简单实现

    C# Form自定义光标的简单实现

    这篇文章主要介绍了C# Form自定义光标的简单实现,有需要的朋友可以参考一下
    2014-01-01
  • C#结合OpenCVSharp4使用直方图算法实现图片相似度比较

    C#结合OpenCVSharp4使用直方图算法实现图片相似度比较

    这篇文章主要为大家详细介绍了C#如何结合OpenCVSharp4使用直方图算法实现图片相似度比较,文中的示例代码简洁易懂,需要的小伙伴可以参考下
    2023-09-09
  • C#将隐私信息(银行账户,身份证号码)中间部分特殊字符替换成*

    C#将隐私信息(银行账户,身份证号码)中间部分特殊字符替换成*

    大家在银行交易某些业务时,都可以看到无论是身份证、银行账号中间部分都是用*号替换的,下面这篇文章主要介绍C#将隐私信息(银行账户,身份证号码)中间部分特殊字符替换成*的相关资料,需要的朋友可以参考下
    2015-08-08

最新评论