C# EPPlus和NPOI组件导出Excel学习总结

这篇博客介绍了在无法使用COM组件的情况下,如何利用C#的EPPlus和NPOI插件无依赖导出Excel。作者通过封装公共基类并实现接口,详细阐述了这两个组件的使用方法,包括所需DLL导入、命名空间引用以及接口实现。文中还提及了EPPlus中控制单元格样式的命名空间,以及NPOI涉及的主要命名空间。源码和接口实现部分已在文中给出。
摘要由CSDN通过智能技术生成

最近由于工作需要,要求在无法使用com组件(微软提供,需要安装office才能使用,而且,微软的尿性 大家懂得)的情况下来导出。于是自己在网上找到了EPPlus和NPOI两个插件来导出。
(两个组件的网址,http://epplus.codeplex.com/http://npoi.codeplex.com/)
具体做法是自己封装了一个公共基类,提供一些接口来实现项目所需要的功能,然后分别使用两种组件来实现这些接口。
实现如下,先从官网下载两个组件所需要的dll文件(EPPlus为EPPlus.dll,NPOI为NPOI.dll、NPOI.OOXML.dll、NPOI.OpenXml4Net.dll、NPOI.OpenXmlFormate.dll),导入到项目中,然后使用相应的命名空间即可使用该组件。
其中EPPlus中主要使用到的命名空间有OfficeOpenXml和OfficeOpenXml.Style,后者主要是控制单元格样式所用到的命名空间。
其中NPOI主要用到得命名空间有NPOI.HSSF.UserModel、NPOI.SS.UserModel、NPOI.HPSF、NPOI.SS.Util

源码如下:其中主动抛出异常部分是我现在修改的,项目中会做特殊处理,这里无法实现了
接口(抽象类)定义如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ExcelTool
{
    enum EnuExcelType { EPPlus, NPOI};

    abstract class ExcelTool
    {
        public abstract void CreatExcel();

        public abstract void CreatSheet(string sheetname);

        public abstract void SetCurrentSheet(int sheetIndex);

        public abstract void SetCellValue(int row, int col, string value);

        public abstract int MergerCells(int firstRow, int firstCol, int lastRow, int lastCol);

        public abstract void SetCellsStyle(int firstRow, int firstCol, int lastRow, int lastCol, bool isBold, int size);

        public abstract string SaveAs(string fileName);

        public abstract void CloseExcel();
    }
}

EPPlus 实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.Style;

namespace ExcelTool
{
    class EPPlusExcelTool : ExcelTool
    {
        private ExcelPackage excelPackage = null;
        private ExcelWorkbook workbook = null;
        private ExcelWorksheet worksheet = null;

        public override void CloseExcel()
        {
            excelPackage.Dispose();
            worksheet = null;
            workbook = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值