1. EPPlus概述

EPPlus 是使用Open Office XML格式(xlsx)读写Excel 2007 / 2010文件的.net开发库。
官网: http://epplus.codeplex.com/
EPPlus 支持:
  • 单元格范围
  • 单元格样式(边框,颜色,填充,字体,数字,对齐)
  • 图表
  • 图片
  • 形状
  • 批注
  • 表格
  • 保护
  • 加密
  • 数据透视表
  • 数据验证
  • 条件格式
  • VBA
  • 公式计算
  • 更多......

2. EPPlus核心类介绍

2.1  ExcelPackage类

ExcelPackage是EPPlus的入口类,解析一个Excel文件,生成ExcelWorkbook对象来表示一个Excel。该类实现了IDisposable接口,也就是说可以使用using进行对象释放。

10个构造函数,下面是常用的3个:

public ExcelPackage();public ExcelPackage(FileInfo newFile);public ExcelPackage(Stream newStream);

不管构造函数中传入的参数是否有效,该类的Workbook属性都会自动创建,无须担心空指针问题。

2.2 ExcelWorkbook类

ExcelWorkbook类表示了一个Excel文件,其Worksheets属性对应着Excel的各个Sheet。Worksheets属性会自动创建,不用担心空指针异常,但是其Count可能为0。

ExcelWorkbook的Properties属性可以对Office的一些属性进行设置,例如:

public string Author { get; set; }
public string Title { get; set; }
public string Comments { get; set; }

注意:在获取具体的Sheet时,索引号从1开始,例如:

ExcelWorksheet sheet = package.Workbook.Worksheets[1];

2.3 ExcelWorksheet类

一些常用属性:

sheet.DefaultColWidth = 10; //默认列宽
sheet.DefaultRowHeight = 30; //默认行高
sheet.TabColor = Color.Blue; //Sheet Tab的颜色
sheet.Cells.Style.WrapText = true; //单元格文字自动换行

对行列的增删操作:

public void InsertRow(int rowFrom, int rows);public void InsertColumn(int columnFrom, int columns);public void DeleteRow(int rowFrom, int rows);public void DeleteColumn(int columnFrom, int columns);

设置指定行或列的样式(宽、高、隐藏、自动换行、数字格式、锁定等):

sheet.Column(1).Width = 10;
sheet.Row(1).Height = 30;sheet.Column(1).Hidden = true;
sheet.Row(1).Hidden = true;sheet.Column(1).Style.WrapText = true;sheet.Column(1).Style.Numberformat.Format = "$#,###.00";sheet.Row(1).Style.Locked = true;

自适应宽度设置:

public void AutoFit();
public void AutoFit(double MinimumWidth);
public void AutoFit(double MinimumWidth, double MaximumWidth);
//未传入MinimumWidth时,使用Sheet的DefaultColWidth作为最小值,此时若没有提前对DefaultColWidth进行设置就会报错
//此方法时对自动换行和合并的单元格无效

2.4 ExcelRange类

3个获取单元格范围的方法:

public ExcelRange this[string Address] { get; }
//Address是指"A1:C5"这种格式public ExcelRange this[int Row, int Col] { get; }public ExcelRange this[int FromRow, int FromCol, int ToRow, int ToCol] { get; }

重要属性:

public object Value { get; set; }
//获取或设置单元格的值

复制单元格:

public void Copy(ExcelRangeBase Destination);

从二维数据集合中装载数据:

public ExcelRangeBase LoadFromCollection<T>(IEnumerable<T> Collection);public ExcelRangeBase LoadFromDataReader(IDataReader Reader, bool PrintHeaders);public ExcelRangeBase LoadFromText(FileInfo TextFile);
//这里的文件是指CSV文件//数据装载时,会与ExcelRange的行列进行对应,将值设置到其中,这些单元格没有样式和数字格式

2.5 样式

样式包括字体、颜色、对齐、边框等。

range.Style.Fill.PatternType = ExcelFillStyle.Solid;
range.Style.Fill.BackgroundColor.SetColor(Color.Gray);
//在设置Style.Fill的其他属性之前,必须设置PatternType
//设置了Style.Fill.PatternType之后,必须设置Style.Fill.BackgroundColor,否则单元格背景为黑色
//注意Style.Fill.BackgroundColor是个只读属性,需要通过SetColor()方法设置颜色
range.Font.Color.SetColor(Color.Red);
range.HorizontalAlignment = ExcelHorizontalAlignment.CenterContinuous;

2.6  数字格式

range.Style.Numberformat.Format = "$#,###.00";

使用数字格式时,一定要自行检查格式的正确性,因为产生的过程中EPPlus不会检查其正确性,如果格式有错,在打开产生的Excel文件时会提示文件格式不正确。

2.7 公式

sheet.Cells[1, 3].range.Formula = "AVERAGE(A1, B1)";
sheet.Cells[1, 3].FormulaR1C1 = "AVERAGE(RC[-2], RC[-1])";
//以上两个公式表达意思相同——对于第一行,C列的值等于A列和B列的平均值

使用公式和使用数字格式有同样的注意事项,需要自行检查正确性。

建议总是记录当前Sheet有多少行和列,方便使用公式时定位单元格。

建议对公式相关代码进行注释,有助于其他程序员理解。

3. 代码示例

下面的链接是VS2015的Solution:

WPF Demo: http://pan.baidu.com/s/1skrCdtV

MVC Demo: http://pan.baidu.com/s/1i3MK8tf

运行效果如图:

点击Export可以把表格中显示的内容导出到Excel。

点击RefreshTable可以刷新表格的内容。

点击Import把导出的Excel再导入进来。

Demo中没有对Excel的内容做完整的验证,如果手动修改了Excel格式的话,可能会报错。

4. 参考链接

http://epplus.codeplex.com/

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt1

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt2

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt3

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt4

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt5

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt6

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt7

https://www.paragon-inc.com/resources/blogs-posts/easy_excel_interaction_pt8

http://www.alanzeng.cn/2016/01/use-epplus-read-write-excel/

使用EPPlus(C#)读写Excel相关推荐

  1. epplus word html,使用EPPlus(C#)读写Excel

    1. EPPlus概述 EPPlus 是使用Open Office XML格式(xlsx)读写Excel 2007 / 2010文件的.net开发库. EPPlus 支持: 单元格范围 单元格样式(边 ...

  2. 转:使用EPPlus(C#)读写Excel

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/alanzyy/article/deta ...

  3. EPPlus 读写 Excel 资料收集

    1. EPPlus概述 EPPlus 是使用Open Office XML格式(xlsx)读写Excel 2007 / 2010文件的.net开发库. 官网:http://epplus.codeple ...

  4. C#读写Excel的4种方案(OpenXml、NPOI、EPPlus、Spire.Office)

    在项目中需要使用C#读写Excel,每天定时将数据输出到Excel表格中.在参考了很多的方案后,找到了4个常用的方案,并提供了一些小Demo.更多功能和示例可以参考官方文档. 1.Microsoft. ...

  5. C# EPPlus读写Excel

    记录一下自己学习使用EPPlus读写Excel的知识点. EPPlus开源库,可以直接在vs上的NuGet包里直接安装. 1.写入Excel文件 using OfficeOpenXml; . . .E ...

  6. CSharp中的开源读写Excel组件介绍

    1. 读写Excel的开源组件 NPOI NPOI是指构建在POI 3.x版本之上的一个程序,NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作. NPOI是一个开源的C ...

  7. Unity实用功能之读写Excel表格

    概述 在项目开发过程中,经常会用到大量的可编辑的数据,而这些数据使用Json,XML等形式存储又比较麻烦 PS:对于不懂电脑的客户来说完全就是看天书,后期编辑也比较费事.所以就有了使用Excel表格进 ...

  8. epplus保存为流_ASP.NET Core使用EPPlus导入导出Excel

    开发过程中,经常会遇到导入导出数据的需求,本篇博客介绍在.NET Core中如何使用EPPlus组件导入导出Excel EPPlus: EPPlus是使用Open Office XML格式(xlsx) ...

  9. EpPlus读取生成Excel帮助类+读取csv帮助类+Aspose.Cells生成Excel帮助类

    大部分功能逻辑都在,少量自定义异常类和扩展方法 ,可用类似代码自己替换 //EpPlus读取生成Excel帮助类+读取csv帮助类,epplus只支持开放的Excel文件格式:xlsx,不支持 xls ...

最新文章

  1. 【11】nvjdc不能用以后另一种jd ck获取办法
  2. PowerShell使用
  3. 如何替换SAP Spartacus启动Component -app-root
  4. SAP CRM Distribution Chain数据模型
  5. Collatz函数的C++递归实现
  6. ndr4108贴片晶振是多少频率_流处理器、核心频率、 位宽……这些显卡参数你知道吗?—— 电脑硬件科普篇(八)...
  7. 一个...买裤子的全过程
  8. Android页面传值b,android数据传递(一)之activityA传递到activityB
  9. 走进Linq-Linq to SQL感性认识篇
  10. 如何免费在线将pdf转换成jpg图片
  11. 愚人节,这样的微信公众号图文排版方式你见过吗?
  12. oracle里的ols机制,[Oracle] 数据库安全之 - Oracle标签安全(OLS)
  13. 《上古卷轴5:天际》控制台代码之装备
  14. 安卓性能优化之启动优化
  15. 程序员公司实行996,加班费却只有10块!网友:我们20块
  16. android 位移传感器 坐标,位移传感器
  17. 计算机二级Python历年真题解答(第四套)
  18. 安卓rtmp推流app_视频直播app开发只需三步就可完成
  19. MLAT-Autoencoders for Conditional Risk Factors and Asset Pricing---上篇
  20. 武理校赛A题 ljw的剥削(思维 + map应用)

热门文章

  1. Android EditText缴获与监听输入事件
  2. 2021年成人本科怎么考,多久可以拿证
  3. 如何提升测试质量(技术篇)
  4. 基于 Vue.js 2.0 酷炫自适应背景视频登录页面的设计
  5. java窗体广告墙(图片上传)java广告系统
  6. 数据库之SQL表列及语句
  7. 联想企业网盘助力石油石化建设办公协作平台
  8. 还在被大妈灵魂拷问?使用Python轻松完成垃圾分类!
  9. python赋值运算符
  10. Docker可视化管理工具Kitematic 安装和使用简介