一  在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; #endregion int rowIndex = 1; // 起始行为 1
int 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();

三 效果

C# EPPlus导出EXCEL,并生成Chart表的更多相关文章

  1. C# NPOI导出Excel和EPPlus导出Excel比较

    系统中经常会使用导出Excel的功能. 之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到EPPlus可以用来导出Excel,就自己测了下两者导出上的差异. NPIO官网地址:http: ...

  2. C# NPOI导出Excel和EPPlus导出Excel

    转自:http://www.cnblogs.com/tanpeng/p/6155749.html 系统中经常会使用导出Excel的功能.之前使用的是NPOI,但是导出数据行数多就报内存溢出. 最近看到 ...

  3. C# 使用Epplus导出Excel [2]:导出动态列数据

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

  4. C# 使用Epplus导出Excel [1]:导出固定列数据

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

  5. C# 使用Epplus导出Excel [5]:样式

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

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

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

  7. C# 使用Epplus导出Excel [3]:合并列连续相同数据

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

  8. 用NPOI导出Excel,生成下拉列表、以及下拉联动列表(第1篇/共3篇)

    最近帅帅的小毛驴遇到一个很奇葩的需求: 导出Excel报表,而且还要带下拉框,更奇葩的是,下拉框还是联动的. 小毛驴一天比较忙,所以这等小事自然由我来为她分忧了.经历了两天,做了几种解决方案,最后完美 ...

  9. 01 UIPath抓取网页数据并导出Excel(非Table表单)

    上次转载了一篇<UIPath抓取网页数据并导出Excel>的文章,因为那个导出的是table标签中的数据,所以相对比较简单.现实的网页中,有许多不是通过table标签展示的,那又该如何处理 ...

随机推荐

  1. 数据库MySQL 之 索引原理与慢查询优化

    数据库MySQL 之 索引原理与慢查询优化 浏览目录 索引介绍方法类型 聚合索引辅助索引 测试索引 正确使用索引 组合索引 注意事项 查询计划 慢查询日志 大数据量分页优化 一.索引介绍方法类型 1. ...

  2. 修改电脑自动休眠时间win10

    https://jingyan.baidu.com/article/adc81513a481cdf723bf73e6.html

  3. centos php 运行环境搭建

    一.安装apache httpd rpm -qa|grep httpd //检查是否安装apache rpm -e 包名 --nodeps //若有则删除 PS:我没有删除,直接用的服务器原来的. y ...

  4. 关于Web应用开发流程的总结

    以下内容为个人工作总结,如果不当,谢谢指出错误. 假设最简单的情况,一个开发人员,开发所有的代码,一个测试人员.一个测试的服务器,一个生产的服务器. 开发人员需要为公司开发一个项目,开发人员首先分析产 ...

  5. GC收集器种类

    转载:https://wangkang007.gitbooks.io/jvm/content/la_ji_shou_ji_qi.html 收集器 1.1 Serial(串行)收集器 Serial收集器 ...

  6. 64位ubuntu 兼容32位

    http://www.cnblogs.com/mliudong/p/4086797.html 首先要打开64位系统对32位的支持 第一步:确认64为架构的内核 dpkg --print-archite ...

  7. KBMMW 4.84.00 发布

    kbmMW is a portable, highly scalable, high end application server and enterprise architecture integr ...

  8. jsp里面不能使用${pageContext.request.contextPath}解决方案

    1.在jsp中使用${pageContext.request.contextPath}获取相对路径,可是最后路径变为:http://localhost:8080/oneself/$%7BpageCon ...

  9. 2018.12.30 洛谷P4238 【模板】多项式求逆

    传送门 多项式求逆模板题. 简单讲讲? 多项式求逆 定义: 对于一个多项式A(x)A(x)A(x),如果存在一个多项式B(x)B(x)B(x),满足B(x)B(x)B(x)的次数小于等于A(x)A(x ...

  10. WZ后台管理框架

    http://herozhou.coding.me/vue-framework-wz/#/dashboard