程序处理excel使用using Microsoft.Office.Interop.Excel方式,运行程序需要电脑安装excel,而且excel版本还需要一样,使用起来不方便。使用NPOI不用电脑安装office.

下载地址:http://npoi.codeplex.com/

下载NPOI 2.2.1 binary package.zip,解压缩里面有Net20和Net40。我使用的Net40,把里面所有的dll添加引用。

读excel

using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.IO;
private void ReadPatternExcel(string filePath,int sheetIndex)
{
IWorkbook workBook = null;
ISheet sheet;
try
{
FileInfo fileInfo = new FileInfo(filePath);
if(fileInfo.Exists)
{
FileStream fs = fileInfo.OpenRead();
switch (fileInfo.Extension)
{
//xls是03,用HSSFWorkbook打开,.xlsx是07或者10用XSSFWorkbook打开
case ".xls":
workBook = new HSSFWorkbook(fs);
break;
case ".xlsx":
workBook = new XSSFWorkbook(fs);
break;
default:
break;
}
fs.Close();//关闭文件流
} if(workBook!=null)
{
sheet = workBook.GetSheetAt(sheetIndex);
IRow headerRow = sheet.GetRow();
int colCount = headerRow.LastCellNum;//列数
//遍历
for(int i=sheet.FirstRowNum;i<=sheet.LastRowNum;i++)
{
Console.Write("row "+i.ToString()+" ");
NPOI.SS.UserModel.IRow row = sheet.GetRow(i);//得到一行
for(int j=row.FirstCellNum;j<row.LastCellNum;j++)
{
string data = row.GetCell(j).ToString();
Console.Write(data);
}
Console.WriteLine();
}
} }
catch(Exception e)
{
MessageBox.Show(e.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
workBook = null;
sheet = null;
} }

写入Excel

 private void ExportToExcel()
{
SaveFileDialog saveFileDlg = new SaveFileDialog();
saveFileDlg.Filter = "Excel|*.xlsx|All file|*.*";
if (saveFileDlg.ShowDialog()==DialogResult.OK)
{
WriteExcel(saveFileDlg.FileName);
} } private void WriteExcel(string filePath)
{
IWorkbook workBook = null;
ISheet sheet = null;
FileStream fs=null;
try
{
workBook = new XSSFWorkbook();
sheet = workBook.CreateSheet("sheet0"); //设置列头
IRow row = sheet.CreateRow();//excel第一行设为列头
ICell cell = row.CreateCell();
cell.SetCellValue("Data");
cell = row.CreateCell();
cell.SetCellValue("Remark"); //添加数据
for(int rowIndex=; rowIndex < collapseDataGridView1.RowCount; rowIndex++)
{
row = sheet.CreateRow(rowIndex+);
cell = row.CreateCell();
cell.SetCellValue(collapseDataGridView1.Rows[rowIndex].Cells[].Value.ToString()); cell = row.CreateCell();
cell.SetCellValue(collapseDataGridView1.Rows[rowIndex].Cells[].Value.ToString());
} fs = File.OpenWrite(filePath);
workBook.Write(fs);
MessageBox.Show("导入excel完成!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); }
catch(Exception ex)
{
MessageBox.Show(ex.Message.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); }
finally
{
workBook = null;
sheet = null;
if(fs!=null)
{
fs.Close(); } } }

C# Excel使用NPOI的更多相关文章

  1. ASP.NET导出Excel(利用NPOI和EPPlus库,无需安装Office)

    网上提供了很多Asp.net中操作Excel的方法,其中大部分是调用微软的Office组件,下面提供三个无须安装Office即可从Asp.net输出Excel的方法. 1 简单方法 //下面代码输出的 ...

  2. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

  3. 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)

    很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...

  4. csharp: Export or Import excel using NPOI

    excel 2003: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...

  5. .net excel利用NPOI导入oracle

    1.链接数据库 引用System.Data.OracleClient: //数据库链接字符串   Data Source如:192.168.5.153:1521/orcl string linkStr ...

  6. C#操作Excel(NPOI)

    这两天需要读取Excel文件,网上找了找,发现NPOI用的是最多的,于是研究了一下.这里大概介绍一下. 首先,在NPOI中一个Excel文件对应了一个IWorkbook对象,Excel中的一个工作表对 ...

  7. ASP.NET中的Excel操作(NPOI方式)

    代码准备: 一:实体准备 代码如下: /// <summary> /// 一个能添加到将要导出到指定行的实体类型规范 /// data:{int StartColIndex ? 0, in ...

  8. EXCEL读写NPOI

    1.第一步: 可以使用ExcelAutomation进行EXCEl文件的读写,但是需要电脑上安装EXCEL,对EXCEL版本有要求,速度慢,有安全性,并发性问题,不适合网站类项目. 第二种方法: NP ...

  9. NPOI操作Excel(一)--NPOI基础

    用C#读取Excel的方法有很多中,由于近期工作需要,需要解析的Excel含有合并单元格以及背景色等特殊要求,故在网上查了一些关于读Excel的方法的优缺点,觉得NPOI能满足我的需要,所以搜索了一些 ...

随机推荐

  1. 洛谷P3768 简单的数学题

    解: 神奇的一批......参观yyb巨神的博客. 大致思路就是第一步枚举gcd,发现后面有个限制是gcd=1,用反演,得到的F(x)是两个等差数列求积. 然后发现有个地方我们除法的除数是乘积,于是换 ...

  2. 1093. Count PAT's

    The string APPAPT contains two PAT's as substrings. The first one is formed by the 2nd, the 4th, and ...

  3. 内存分布图,errno

    输出错误,errno是默认的全局变量 错误处理函数: 错误号:errno perror函数:        void perror(const char *s); strerror函数:        ...

  4. Ansible playbook 批量修改服务器密码 先普通后root用户

    fsckzy   Ansible playbook 批量修改服务器密码 客户的需求:修改所有服务器密码,密码规则为Rfv5%+主机名后3位 背景:服务器有CentOS6.7,SuSE9.10.11,r ...

  5. EXISTS 与 NOT EXISTS 的用法及返回结果

    (1)SELECT * FROM `datatower-all`.TMP_DWD_POI t1 WHERE EXISTS ( SELECT 1 FROM `datatower-all`.DWD_POI ...

  6. JVM总结(二):垃圾回收器

    这一节我们来总结一下JVM垃圾收集器方面的东西. 垃圾回收器 判断对象引用是否失效 对象生存判断算法 引用判断过程 垃圾收集算法简介 垃圾收集器 新生代垃圾收集器 老年代垃圾收集器 新生代和老年代垃圾 ...

  7. SQL记录-资源正忙online或nowait

    1.多个tomcat 修改3个端口 2.oracle-00054:资源正忙 被锁住了 建立索引加online参数 1:创建索引时会产生的锁 2:dml 语句会产生的锁 3:索引创建时加上关键字 onl ...

  8. loadrunner controller如何执行测试

    使用Virtual User Generator编写需要测试的脚本   打开controller,在左侧的available scripts里选择需要测试的脚本添加(Add)到scripts in s ...

  9. 《超哥带你学Linux》

    前言 “Linux?听说是一个操作系统,好用吗?” “我也不知道呀,和windows有什么区别?我能在Linux上玩LOL吗” “别提了,我用过Linux,就是黑乎乎一个屏幕,鼠标也不能用,不停地的敲 ...

  10. Linux 命令详解(九)轻易删除OpenSSL 的后果

    警告自己,不要轻易的去删除系统的软件 1.composer自动更新出现错误 www@TinywanAliYun:~/web/go-study-line$ composer self-update Ke ...