C# Excel使用NPOI
程序处理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的更多相关文章
- ASP.NET导出Excel(利用NPOI和EPPlus库,无需安装Office)
网上提供了很多Asp.net中操作Excel的方法,其中大部分是调用微软的Office组件,下面提供三个无须安装Office即可从Asp.net输出Excel的方法. 1 简单方法 //下面代码输出的 ...
- 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的路由方案,与原来的方案在使用上差别不 ...
- 免费高效实用的.NET操作Excel组件NPOI(.NET组件介绍之六)
很多的软件项目几乎都包含着对文档的操作,前面已经介绍过两款操作文档的组件,现在介绍一款文档操作的组件NPOI. NPOI可以生成没有安装在您的服务器上的Microsoft Office套件的Excel ...
- csharp: Export or Import excel using NPOI
excel 2003: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...
- .net excel利用NPOI导入oracle
1.链接数据库 引用System.Data.OracleClient: //数据库链接字符串 Data Source如:192.168.5.153:1521/orcl string linkStr ...
- C#操作Excel(NPOI)
这两天需要读取Excel文件,网上找了找,发现NPOI用的是最多的,于是研究了一下.这里大概介绍一下. 首先,在NPOI中一个Excel文件对应了一个IWorkbook对象,Excel中的一个工作表对 ...
- ASP.NET中的Excel操作(NPOI方式)
代码准备: 一:实体准备 代码如下: /// <summary> /// 一个能添加到将要导出到指定行的实体类型规范 /// data:{int StartColIndex ? 0, in ...
- EXCEL读写NPOI
1.第一步: 可以使用ExcelAutomation进行EXCEl文件的读写,但是需要电脑上安装EXCEL,对EXCEL版本有要求,速度慢,有安全性,并发性问题,不适合网站类项目. 第二种方法: NP ...
- NPOI操作Excel(一)--NPOI基础
用C#读取Excel的方法有很多中,由于近期工作需要,需要解析的Excel含有合并单元格以及背景色等特殊要求,故在网上查了一些关于读Excel的方法的优缺点,觉得NPOI能满足我的需要,所以搜索了一些 ...
随机推荐
- 2018 省选 T1 一双木棋
题目描述 菲菲和牛牛在一块n 行m 列的棋盘上下棋,菲菲执黑棋先手,牛牛执白棋后手. 棋局开始时,棋盘上没有任何棋子,两人轮流在格子上落子,直到填满棋盘时结束. 落子的规则是:一个格子可以落子当且仅当 ...
- 【51Nod1405】树上距离和 二次扫描与换根法
题目大意:给定一棵 N 个点的边权均为 1 的树,依次输出每个点到其他各个点的距离和. 题解:首先任意选定一个节点为根节点,比如 1,第一遍 dfs 遍历树求出子树大小.树上前缀和.第二遍 dfs 遍 ...
- ASP.NET MVC 网站优化之压缩技术
压缩 html 可以去除代码中无用的空格等,这样可提高网站的加载速度并节省带宽. 实现 ActionFilter 来完成 html 的压缩 public class WhitespaceFilterA ...
- 基本数据类型对象包装(Integer等)
基本数据类型 包装类 byte Byte short Short int Integer long Long boolean Boolean float ...
- MySQL基本命令行
登陆:mysql –h localhost –u 用户名 –p mysql –u 用户名 –p (默认连接localhost服务器) 服务器中可以有多个库,库中可以有多个表.数据库的名字无法修改 ...
- Int2BinaryString.java
/****************************************************************************** * Compilation: javac ...
- 7.14 Git 工具 - 凭证存储
凭证存储 如果你使用的是 SSH 方式连接远端,并且设置了一个没有口令的密钥,这样就可以在不输入用户名和密码的情况下安全地传输数据. 然而,这对 HTTP 协议来说是不可能的 —— 每一个连接都是需要 ...
- kafka集群监控之kafka-manager部署(kafka-manager的进程为:ProdServerStart)
kafka集群监控之kafka-manager部署(ProdServerStart) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 雅虎官网GitHub项目:https://git ...
- Win记录-配置Windows Server R 2008多用户远程连接(仅做参考)
1.计算机管理下用户组下新建用户 2.系统属性下远程控制加入用户,设置允许运行任何远程桌面 3.运行->gpedit.msc->计算机配置->管理模板->windows 组件- ...
- 超详细设置Idea类注释模板和方法注释模板
网上找了一下,没有很详细且正确介绍Idea配置注释模板的,于是结合多篇文章自己琢磨整理出如下. 设置类注释模板 1.选择File–>Settings–>Editor–>File an ...