朋友有个需求,想对N张excel表做过滤和合并的处理,拜托我写个小程序。因为用户的背景是非专业用户,因此最好的选择是写个GUI程序,再加上读写excel的需求,所以我的首选就是C#的WinForm了。

经过搜索,读写excel文件有3种方法:

  1. 采用OleDB读取EXCEL文件
  2. 引用的com组件:Microsoft.Office.Interop.Excel
  3. 利用第三方库

因为前2种方法都只能在windows平台下使用,虽然能够完成当前的需求,不过不利于自身的积累(笔者主要是跨平台开发为主),所以打算趁此机会了解一下读写excel的第三方跨平台库。因此进一步搜索读写excel的库,主要有:

  1. NPOI(http://npoi.codeplex.com/)
  2. MyXls(http://sourceforge.net/projects/myxls/)
  3. Koogra(http://sourceforge.net/projects/koogra/)
  4. ExcelLibrary(http://code.google.com/p/excellibrary/)
  5. ExcelPackage(http://excelpackage.codeplex.com/)
  6. EPPlus(http://epplus.codeplex.com/)
  7. LinqToExcel(http://code.google.com/p/linqtoexcel/)

其中大部分的意见都认为“对于Excel 97-2003格式,还是用NPOI最好;而对于2007(xlsx)以上版本,可以使用EPPlus”。由于工作中基本上都是使用xlsx,因此这里直接选择了EPPlus。

EPPlus读取excel:

using (ExcelPackage package = new ExcelPackage(new FileStream(path, FileMode.Open)))
{
for (int i = ; i <= package.Workbook.Worksheets.Count; ++i)
{
ExcelWorksheet sheet = package.Workbook.Worksheets[i];
for (int j = sheet.Dimension.Start.Column, k = sheet.Dimension.End.Column; j <= k; j++)
{
for (int m = sheet.Dimension.Start.Row, n = sheet.Dimension.End.Row; m <= n; m++)
{
string str = GetValue(sheet, m, j);
if (str != null)
{
// do something
}
}
}
}
}

EPPlus写入excel:

using (ExcelPackage package = new ExcelPackage())
{
ExcelWorksheet sheet = package.Workbook.Worksheets.Add("Sheet1");
sheet.Cells[, ].Value = "";
sheet.Cells[, ].Value = "";
sheet.Cells[, ].Value = "";
sheet.Cells[, ].Value = "";
sheet.Cells[, ].Value = "";
sheet.Cells[, ].Value = "";
using (Stream stream = new FileStream(path, FileMode.Create))
{
package.SaveAs(stream);
}
}

Perfect!

使用EPPlus读写xlsx文件的更多相关文章

  1. 13: openpyxl 读写 xlsx文件

    1.1 openpyxl 基本使用 1.openpyxl 将xlsx读成json格式 #! /usr/bin/env python # -*- coding: utf-8 -*- # -*- codi ...

  2. 【代码沉淀】 - EPPlus - 操作xlsx表格文件

    EPPlus - Create advanced Excel spreadsheets on the server.web: http://epplus.codeplex.com/nuget: Ins ...

  3. ASP.NET Core 导入导出Excel xlsx 文件

    ASP.NET Core 使用EPPlus.Core导入导出Excel xlsx 文件,EPPlus.Core支持Excel 2007/2010 xlsx文件导入导出,可以运行在Windows, Li ...

  4. MFC vs2012 Office2013 读写excel文件

    近期在忙一个小项目(和同学一起搞的),在这里客户要求不但读写txt,而且可以读写excel文件,这里本以为很简单,结果...废话少说,过程如下: 笔者环境:win7 64+VS2012+Office2 ...

  5. C# 使用 NPOI 库读写 Excel 文件(转载)

    NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼 容xls 和 xlsx.官网提供了一份Examples,给出了 ...

  6. 用Python读写Excel文件(转)

    原文:google.com/ncr 虽然天天跟数据打交道,也频繁地使用Excel进行一些简单的数据处理和展示,但长期以来总是小心地避免用Python直接读写Excel文件.通常我都是把数据保存为以TA ...

  7. C# 使用 NPOI 库读写 Excel 文件

    NPOI 是开源的 POI 项目的.NET版,可以用来读写Excel,Word,PPT文件.在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx.官网提供了一份 Examples,给出 ...

  8. [转]用Python读写Excel文件

    [转]用Python读写Excel文件   转自:http://www.gocalf.com/blog/python-read-write-excel.html#xlrd-xlwt 虽然天天跟数据打交 ...

  9. 解析xlsx文件---Java读取Excel2007

    关于Java读取Excel2007的文章在Google.百度上搜索一下,没有太好的例子,实现的也不算太好.查看了一下Poi,最新的 POI 3.5 beta 4 支持读写 Excel2007和PPT2 ...

随机推荐

  1. linux下php调试工具xdebug安装配置

    xdebug简介 Xdebug是php的一款调试工具,是基于zend的一个扩展,可以用来跟踪,调试和分析PHP程序的运行状况.如变量,函数调试,性能监测,代码覆盖率等 xdebug安装 1.下载xde ...

  2. Javascript高级程序设计——Javascript简史+使用Javascript

    一.Javascipt简史 1.了解Javascript历史 Netscape(Javascript1.0).Microsoft(JScript)到JS1.1,再到ECMA-262标准 2.知道ECM ...

  3. jQuery与CheckBox的值一致就选中

    var area = data.area;//area的形式是1,2,3, area = area.substring(1,area.length-1);//1,2,3 var arr = new A ...

  4. git全部使用步骤

    今天要讲的内容:项目管理和工具 Git:版本控制系统 Less:动态的css语言,提高编写CSS的效率 Gulp:项目自动构建工具,对html,css,js,image进行压缩,合并等操作. 一.什么 ...

  5. 从源码解析TreeMap

    上篇文章我们介绍了HashMap集合,这是一个键值对集合,可以高效的按照键查找数值.但是它有一个缺陷:数据如果是无序的可以是很高效的,但是如果数据需要排列有顺序就不适合了.本篇将要介绍的一个集合是树集 ...

  6. 用C#代码实现类似QQ窗体的“上、左、右”停靠功能

    大家都知道QQ有一个自动停靠功能,即“上.左.右”,当你把窗体拖到屏幕边缘,然后移开鼠标它会自动缩放,然后只显示一小小点出来,我们仔细观察会发现其实它只露3像素左右的边缘,当你鼠标移上去它又会伸出来, ...

  7. 使用GDI绘制一条直线

    这个是绘制一条直线的代码 private void Form1_Load(object sender, EventArgs e)        {            //一根笔 颜色  一张纸  ...

  8. Python 模块之 string.py

    用法 字符串常量: import string print(string.ascii_lowercase) print(string.ascii_uppercase) print(string.asc ...

  9. 常见的html面试题

    1.doctype作用?标准模式和兼容模式各有什么区别? (1).<doctype>声明位于文档第一行,在<html>标签之前.用于告知浏览器的解析器以什么样的标准解析该文档. ...

  10. 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐

    1609: [Usaco2008 Feb]Eating Together麻烦的聚餐 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 1010  Solv ...