程序处理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. 2018 省选 T1 一双木棋

    题目描述 菲菲和牛牛在一块n 行m 列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束. 落子的规则是:一个格子可以落子当且仅当 ...

  2. 【51Nod1405】树上距离和 二次扫描与换根法

    题目大意:给定一棵 N 个点的边权均为 1 的树,依次输出每个点到其他各个点的距离和. 题解:首先任意选定一个节点为根节点,比如 1,第一遍 dfs 遍历树求出子树大小.树上前缀和.第二遍 dfs 遍 ...

  3. ASP.NET MVC 网站优化之压缩技术

    压缩 html 可以去除代码中无用的空格等,这样可提高网站的加载速度并节省带宽. 实现 ActionFilter 来完成 html 的压缩 public class WhitespaceFilterA ...

  4. 基本数据类型对象包装(Integer等)

    基本数据类型 包装类 byte Byte short             Short int   Integer long Long boolean Boolean float          ...

  5. MySQL基本命令行

    登陆:mysql –h localhost –u 用户名 –p mysql –u 用户名 –p   (默认连接localhost服务器) 服务器中可以有多个库,库中可以有多个表.数据库的名字无法修改 ...

  6. Int2BinaryString.java

    /****************************************************************************** * Compilation: javac ...

  7. 7.14 Git 工具 - 凭证存储

    凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...

  8. kafka集群监控之kafka-manager部署(kafka-manager的进程为:ProdServerStart)

    kafka集群监控之kafka-manager部署(ProdServerStart) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 雅虎官网GitHub项目:https://git ...

  9. Win记录-配置Windows Server R 2008多用户远程连接(仅做参考)

    1.计算机管理下用户组下新建用户 2.系统属性下远程控制加入用户,设置允许运行任何远程桌面 3.运行->gpedit.msc->计算机配置->管理模板->windows 组件- ...

  10. 超详细设置Idea类注释模板和方法注释模板

    网上找了一下,没有很详细且正确介绍Idea配置注释模板的,于是结合多篇文章自己琢磨整理出如下. 设置类注释模板 1.选择File–>Settings–>Editor–>File an ...