private string m_FilePath;private string m_DefaultDir;private string m_CreatingDate = DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss");private Stream m_Stream;                        //创建一个Stream对象private ExcelPackage m_ExcelPackage;            //创建一个ExcelPackage对象private ExcelWorksheet m_CurrentWorksheet;      //创建一个ExcelWorksheet对象/// <summary>/// 构造函数,默认路径/// </summary>public ExcelHelper_EPPlus(){m_DefaultDir = System.AppDomain.CurrentDomain.BaseDirectory + "Data\\";if (!Directory.Exists(m_DefaultDir))Directory.CreateDirectory(m_DefaultDir);m_FilePath = m_DefaultDir + m_CreatingDate + ".xlsx";}/// <summary>/// 构造函数,自定义路径/// </summary>/// <param name="strFilePath">Excel文件的绝对路径</param>public ExcelHelper_EPPlus(string strFilePath){if (Directory.Exists(strFilePath)){m_FilePath = strFilePath;}else{string strErrorMsg = string.Format("指定路径:{0},文件未找到!", strFilePath);throw new Exception(strErrorMsg);}}/// <summary>/// 打开一个已有的工作簿或者创建一个Excel对象/// </summary>/// public ExcelPackage();/// public ExcelPackage(FileInfo newFile);/// public ExcelPackage(Stream newStream);public void OpenOrCreateExcel(){if (File.Exists(m_FilePath)){var file = new FileInfo(m_FilePath);m_ExcelPackage = new ExcelPackage(file);}else{m_Stream = File.Create(m_FilePath);m_ExcelPackage = new ExcelPackage(m_Stream);}m_CurrentWorksheet = GetOrAddWorkSheet();}

Worksheet相关操作

        /// <summary>/// 获取worksheet,没有时创建/// </summary>/// <returns></returns>public ExcelWorksheet GetOrAddWorkSheet(){ExcelWorksheet workSheet = m_ExcelPackage.Workbook.Worksheets.FirstOrDefault();if (workSheet == null)workSheet = m_ExcelPackage.Workbook.Worksheets.Add("Sheet1");return workSheet;}/// <summary>/// 根据工作表名获取Excel工作表对象/// </summary>/// <param name="sheetName">工作表名</param>/// <returns></returns>public ExcelWorksheet GetWorksheet(string sheetName){return m_ExcelPackage.Workbook.Worksheets.FirstOrDefault(i => i.Name == sheetName);}/// <summary>/// 根据工作表索引获取Excel工作表对象/// </summary>/// <param name="index">工作表序号,索引号从1开始</param>public ExcelWorksheet GetWorksheet(int index){return m_ExcelPackage.Workbook.Worksheets[index];}/// <summary>/// 给当前工作簿添加工作表/// </summary>/// <param name="sheetName">工作表名</param>/// <param name="isDeleteSameNameSheet">如果存在同名的sheet是否删除</param>public void AddWorkSheet(string sheetName, bool isDeleteSameNameSheet){if (isDeleteSameNameSheet){DeleteWorkSheet(sheetName);}else{while (m_ExcelPackage.Workbook.Worksheets.Any(i => i.Name == sheetName)){sheetName = sheetName + "(1)";}}m_ExcelPackage.Workbook.Worksheets.Add(sheetName);}/// <summary>/// 重命名工作表/// </summary>/// <param name="worksheet">工作表对象</param>/// <param name="newSheetName">新的工作表名</param>public void ReNameWorkSheet(ExcelWorksheet worksheet, string newSheetName){worksheet.Name = newSheetName;}/// <summary>/// 重命名工作表/// </summary>/// <param name="oldSheetName">原有工作表名</param>/// <param name="newSheetName">新的工作表名</param>public void ReNameWorkSheet(string oldSheetName, string newSheetName){var worksheet = GetWorksheet(oldSheetName);if (worksheet != null)worksheet.Name = newSheetName;}/// <summary>/// 删除指定的工作表/// </summary>/// <param name="SheetName">删除的工作表名</param>public void DeleteWorkSheet(string sheetName){var worksheet = m_ExcelPackage.Workbook.Worksheets.FirstOrDefault(i => i.Name == sheetName);if (worksheet != null)m_ExcelPackage.Workbook.Worksheets.Delete(worksheet);}/// <summary>/// 删除除指定worksheet外的其余工作表/// </summary>/// <param name="worksheet"></param>public void DeleteWorkSheetExcept(ExcelWorksheet worksheet){foreach (ExcelWorksheet sheet in m_ExcelPackage.Workbook.Worksheets){if (sheet != worksheet){m_ExcelPackage.Workbook.Worksheets.Delete(sheet);}}}

对行列的增删操作

     /// 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);/// <summary>/// 获取当前工作表最后一行/// </summary>/// <returns></returns>public int GetRowIndex(){return m_CurrentWorksheet.Dimension.End.Row;}/// <summary>/// 获取当前工作表最后一列/// </summary>/// <returns></returns>public int GetColIndex(){return m_CurrentWorksheet.Dimension.End.Column;}/// <summary>/// 添加表头/// </summary>/// <param name="values"></param>public void AddHeader(object[] values){SetRowValues(1, values);}/// <summary>/// 插入数据行/// </summary>/// <param name="rowIndex">插入位置,起始位置为1</param>/// <param name="values">行类容,一个单元格一个对象</param>public void SetRowValues(int rowIndex, object[] values){for (int i = 1; i <= values.Length; i++){m_CurrentWorksheet.SetValue(rowIndex, i, values[i]);}}

对单元格操作

         /// <summary>/// 设置单元格的值/// </summary>/// <param name="X">写入的行</param>/// <param name="Y">写入的列</param>/// <param name="value">要写入的字符串</param>public void SetCellValue(int X, int Y, object value){m_CurrentWorksheet.SetValue(X, Y, value);}/// <summary>/// 获取单元格的值/// </summary>/// <param name="X">写入的行</param>/// <param name="Y">写入的列</param>public object GetCellValue(int X, int Y){return m_CurrentWorksheet.GetValue(X, Y);}

对Range操作

         /// <summary>/// 从二维数据集合中装载数据/// </summary>/// public ExcelRangeBase LoadFromCollection<T>(IEnumerable<T> Collection);/// public ExcelRangeBase LoadFromDataReader(IDataReader Reader, bool PrintHeaders);/// public ExcelRangeBase LoadFromText(FileInfo TextFile);  //这里的文件是指CSV文件/// <param name="table"></param>/// <param name="printHeaders"></param>public void SetRangeToWorkSheet(DataTable table, bool printHeaders){m_CurrentWorksheet.Cells["A1"].LoadFromDataTable(table, printHeaders);}/// <summary>/// 获取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; }  //获取或设置单元格的值 /// </summary>/// <param name="startX">起始单元格行号</param>/// <param name="startY">起始单元格列号</param>/// <param name="endX">结束单元格行号</param>/// <param name="endY">结束单元格列号</param>/// <returns>Range对象</returns>public ExcelRange GetRangeFromWorkSheet(int startX, int startY, int endX, int endY){return m_CurrentWorksheet.Cells[startX, startY, endX, endY];}
        /// <summary>/// 保存修改/// </summary>/// <returns></returns>public void SaveExcel(){m_ExcelPackage.Save();}/// <summary>/// 文档另存为/// </summary>/// <param name="FileName">文件名</param>/// <returns></returns>public void SaveAsExcel(string FileName){var file = new FileInfo(FileName);m_ExcelPackage.SaveAs(file);}public void Dispose(){if (m_ExcelPackage != null){m_ExcelPackage.Dispose();}if (m_Stream != null){m_Stream.Dispose();m_Stream.Close();}}

EPPlusHelper相关推荐

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

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

最新文章

  1. 强化学习样本复杂性综述
  2. centos系统下安装Nginx
  3. thinkcmf安装模板需要点击右键打开新页面的解决办法
  4. 解决 GTK+/GNOME 3 环境下 Java Swing 程序使用本地 GTK+ 主题时菜单无边框 bug 的方法...
  5. 机器分配(信息学奥赛一本通-T1266)
  6. latex格式简要说明
  7. 华为鸿蒙系统腾讯,腾讯内容开放平台
  8. 详述欺骗性断言如何引发严重的 Windows 内核漏洞 (CVE-2020-0792)
  9. 树形DP-Bribing FIPA
  10. Mybatis 自学笔记【全结尾狂神说练习29道】
  11. android手机 清除DNS缓存命令
  12. 天问一号入轨火星成功,火星,我们来了!
  13. 将安卓手机屏幕内容投射到电脑屏幕上
  14. matlab中qr函数 QR分解
  15. php和java做众筹系统哪个好,Java版众筹系统和PHP众筹系统对比分析
  16. LED显示屏和液晶显示屏有什么区别?
  17. 在Linux服务器上安装horovod安装
  18. freemarker生成word之后遇到未解决的问题,希望有大佬赐教!!!
  19. Pascal语言介绍
  20. matlab 批量改变图片大小 imresize 任意改变

热门文章

  1. 好玩!锤子和冈本出了个联名套装,跨界营销我只服冈本
  2. mac电脑永久激活pycharm
  3. 对于智能汽车关于仪表
  4. 【胡学长 带你学 Global Mapper 】谷歌历史影像下载方法
  5. 升讯威微信营销系统开发实践:订阅号和服务号深入分析( 完整开源于 Github)...
  6. 创想的天空——《谷歌创想时空》随笔
  7. essentialpim mysql,EssentialPIM
  8. 出海先锋,平均15-16薪,上市公司汇量科技不容错过!
  9. 终章:蜕变,破茧成蝶!
  10. Python中的循环的用法——for循环和while循环