一  在negut添加EPPlus.dll库文件。

之前有写过直接只用Microsoft.Office.Interop.Excel 导出EXCEL,并生成Chart表,非常耗时,所以找了个EPPlus控件。

二 代码部分

System.Data.DataTable dt = new System.Data.DataTable();dt.Columns.Add("序号", typeof(int));dt.Columns.Add("数据1", typeof(int));dt.Columns.Add("数据2", typeof(int));Random r = new Random();for (int i = 0; i < 20; i++){if (i == 6 || i == 16) continue;dt.Rows.Add(i + 1, r.Next(50), r.Next(60));}新建一个 Excel 文件//string filePath = @"C:\Users\Lenovo\Desktop\" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".xlsx";//FileStream fileStream = new FileStream(filePath, FileMode.Create);加载这个 Excel 文件//ExcelPackage package = new ExcelPackage(fileStream);//加载这个 Excel 文件ExcelPackage package = new ExcelPackage();// 添加一个 sheet 表ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("数据");//添加个chart表ExcelWorksheet shapesheet = package.Workbook.Worksheets.Add("Chart");shapesheet.View.ShowGridLines = false;//去掉sheet的网格线shapesheet.Cells.Style.Fill.PatternType = ExcelFillStyle.Solid;shapesheet.Cells.Style.Fill.BackgroundColor.SetColor(Color.SkyBlue);//worksheet.View.ShowGridLines = false;//去掉sheet的网格线#region 生成chart表ExcelChartSerie serie = null;ExcelChart chart = shapesheet.Drawings.AddChart("chart", eChartType.LineMarkers);//chart.Legend.Position = eLegendPosition.TopRight;chart.SetPosition(5, 5);chart.Legend.Add();chart.Title.Text = "测试";chart.ShowHiddenData = true;chart.SetSize(1000, 600);//设置图表大小chart.XAxis.Title.Text = "CNC";chart.XAxis.Title.Font.Size = 10;chart.YAxis.Title.Text = "Value";chart.YAxis.Title.Font.Size = 10;#endregionint rowIndex = 1;   // 起始行为 1int colIndex = 1;   // 起始列为 1//设置列名for (int i = 0; i < dt.Columns.Count; i++){worksheet.Cells[rowIndex, colIndex + i].Value = dt.Columns[i].ColumnName;//字体worksheet.Cells[rowIndex, colIndex + i].Style.Font.Name = "Arial";//字体加粗worksheet.Cells[rowIndex, colIndex + i].Style.Font.Bold = true;//字体大小worksheet.Cells[rowIndex, colIndex + i].Style.Font.Size = 12;//自动调整列宽,也可以指定最小宽度和最大宽度worksheet.Column(colIndex + i).AutoFit();if (colIndex + i > 1){serie = chart.Series.Add(worksheet.Cells[2, colIndex + i, dt.Rows.Count + 1, colIndex + i], worksheet.Cells[2, 1, dt.Rows.Count + 1, 1]);serie.HeaderAddress = worksheet.Cells[1, colIndex + i];}}// 跳过第一列列名rowIndex++;//写入数据for (int i = 0; i < dt.Rows.Count; i++){for (int j = 0; j < dt.Columns.Count; j++){//worksheet.Cells[rowIndex + i, colIndex + j].Style.Numberformat.Format = "0.00";worksheet.Cells[rowIndex + i, colIndex + j].Value = double.Parse(dt.Rows[i][j].ToString());}//自动调整行高worksheet.Row(rowIndex + i).CustomHeight = true;}//添加chart数据,chart.Series.Add()方法所需参数为:chart.Series.Add(X轴数据区,Y轴数据区)//serie = chart.Series.Add(worksheet.Cells[2, 2, dt.Rows.Count + 1, 2], worksheet.Cells[2, 1, dt.Rows.Count + 1, 1]);//serie.HeaderAddress = worksheet.Cells[1, 2];//chartSerie = chart.Series.Add(worksheet.Cells[row + 1, 2, row + 1, 2 + dataPercent.Columns.Count - 2], worksheet.Cells["B1:M1"]);//chartSerie.HeaderAddress = worksheet.Cells[row + 1, 1];//设置每条线的名称//垂直居中worksheet.Cells.Style.VerticalAlignment = ExcelVerticalAlignment.Center;//水平居中worksheet.Cells.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;//单元格是否自动换行worksheet.Cells.Style.WrapText = false;//单元格自动适应大小worksheet.Cells.Style.ShrinkToFit = true;//合并单元格//worksheet.Cells[2, 1, 2, 2].Merge = true; //worksheet.Cells[int fromRow, fromCol, int toRow,int toCol].Merge = true; //冻结首行(行号,列号)worksheet.View.FreezePanes(2, 1);冻结1-2列//worksheet.View.FreezePanes(1, 3);//新建一个 Excel 文件string filePath = @"C:\Users\Lenovo\Desktop\" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".xlsx";FileStream fileStream = new FileStream(filePath, FileMode.Create);package.SaveAs(fileStream);//package.Save();fileStream.Close();fileStream.Dispose();worksheet.Dispose();package.Dispose();GC.Collect();

三 效果

转载于:https://www.cnblogs.com/wangyonglai/p/10478576.html

C# EPPlus导出EXCEL,并生成Chart表相关推荐

  1. EPPlus导出Excel感觉很不错~~~

    前言 导出成为很多系统的必备功能,之前分享过导出PDF的功能,这里来分享一下Excel的导出: 提到Excel导出,NPOI肯定是很多小伙伴的首选,在以往的项目中也用其完成了很多导出需求:对于NPOI ...

  2. .NetCore+EPPlus导出Excel报表

    .NetCore+EPPlus导出Excel报表 适用于跨平台部署 NuGet引入EPPlus.Core 定义公共调用方法 完成调用 NuGet引入EPPlus.Core 因为本人使用的框架是.Net ...

  3. C# 使用Epplus导出Excel [4]:合并指定行

    C# 使用Epplus导出Excel [1]:导出固定列数据 C# 使用Epplus导出Excel [2]:导出动态列数据 C# 使用Epplus导出Excel [3]:合并列连续相同数据 C# 使用 ...

  4. 用Excel自动生成工作表目录

    用Excel自动生成工作表目录,挺好的,不会的童鞋看看哦~也许能用上的~ Alt+F11---------插入--------模块--------把下面的代码拷贝到模块中,直接将程序复制过去,运行-- ...

  5. (Java程序)Excel自动生成mysql表

    读取excel生成字段 最近项目中遇到了一个费时间的事,就花了点时间写了一个小程序来做这件事. description:现在在项目的前期设计阶段,需要从excel的数据库表格字段生成数据库,开始是手动 ...

  6. python制作表格的语句_python根据Excel自动生成创建表sql语句

    1.Excel格式截图 2.配置文件脚本 # coding:utf-8 # 表英文名 table_name = '表英文名' # 表中文名 table_comments = '表中文名' # Exce ...

  7. epplus保存为流_通过EPPlus导出Excel文件

    小弟刚刚走上工作岗位不久,工作中常常遇到要导出Excel的情况,但感觉两种常见的导出方式(一种是通过GridView,另一种是通过微软的COM组 件)都不是很理想,前者导出的灵活度太低,后者又常常出现 ...

  8. EXCEL 批量生成sheet表+生成超链接目录+某列按多条件去重罗列+提取单元格中的字母、数字

    文章目录 前言 一.EXCEL 公式实现多个条件值匹配 二.EXCEL 工作薄下SHEET表太多时你可以这样做 1.生成多个相同表头的SHEET表 1.1.批量生成SHEET表 1.2.批量更改多个S ...

  9. excel自动生成创建表sql语句

    Sub 选项按钮4_Click()Dim sqlStr, sqlTemp, pkStr, columnName, columnType, columnLength, isPk, notExistTab ...

最新文章

  1. 命名实体识别新SOTA:改进Transformer模型
  2. 教你怎么修改个性开机画面
  3. Vue是如何渲染页面的,渲染过程以及原理代码
  4. switch日版有中文吗_任天堂switch国行和日版的区别
  5. [Qt教程] 第21篇 数据库(一)Qt数据库应用简介
  6. 【数据结构与算法】最小生成树--Kruskal算法 Prim算法
  7. Android延时执行调用的几种方法
  8. pr文字转语音有插件吗_文字转语音软件深度解析
  9. 阻止页面双击选中文本
  10. 解决为什么JDK要带着JRE一起下载
  11. Kafka Partition Leader选举机制原理详解
  12. redis key失效的事件_Redis常见、常用的知识点
  13. 使用EasyUI的插件前需要引入的文件
  14. html select ajax,AJAX 动态加载后台数据 绑定select的方法
  15. 使用include实现布局(layout)复用
  16. 得意时别嘚瑟,失意时别灰心
  17. webserver总结
  18. Dr_can模型预测控制笔记与代码实现
  19. 60、JAVA的map集合
  20. Quorum共识简析

热门文章

  1. 小米8劲敌来了!同是骁龙845,它降价幅度更大
  2. 无辜程序员被新女同事算计,老板到底安得什么心 ?
  3. c函数sscanf的高级技巧
  4. java socket 全双工_java socket实现全双工通信
  5. 【Elasticsearch】Elasticsearch 动态模板(Dynamic templates)
  6. 【kafka】消息队列设计精要
  7. 95-50-020-java.nio.channels-NIO-NIO概览
  8. 【ClickHouse】查看数据库容量和表大小的方法(system.parts各种操作方法)
  9. 【yarn】yarn 命令行查看 资源状态
  10. 90-20-010-源码-调试-Kylin-2.6.0源码调试