文档章节

Npoi操作excel

短短的歼击机
 短短的歼击机
发布于 2014/08/24 19:07
字数 773
阅读 1696
收藏 0

Npoi 简介


1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet;行:Row;单元格Cell。

2.Npoi 下载地址:http://npoi.codeplex.com/releases/view/38113

3.Npoi 学习系列教程推荐:http://www.cnblogs.com/tonyqus/archive/2009/04/12/1434209.html

4.忘了告诉大家npoi是做什么的了,npoi 能够读写几乎所有的Office 97-2003文件格式,至少能够支持Word, PowerPoint, Excel, Visio的格式。


使用Npoi创建一个简单的xls文件


 

复制代码

  //创建xls文件
        private void button1_Click(object sender, EventArgs e)
        {            //创建工作薄
            HSSFWorkbook wk = new HSSFWorkbook();            //创建一个名称为mySheet的表
            ISheet tb = wk.CreateSheet("mySheet"); 
            //创建一行,此行为第二行
            IRow row = tb.CreateRow(1);            for (int i = 0; i < 20; i++)    
            {
                ICell cell = row.CreateCell(i);  //在第二行中创建单元格
                cell.SetCellValue(i);//循环往第二行的单元格中添加数据            }            using (FileStream fs = File.OpenWrite(@"c:/myxls.xls")) //打开一个xls文件,如果没有则自行创建,如果存在myxls.xls文件则在创建是不要打开该文件!            {
                wk.Write(fs);   //向打开的这个xls文件中写入mySheet表并保存。
                MessageBox.Show("提示:创建成功!");
            }
        }

复制代码


使用Npoi读取一个简单的xls文件


复制代码

 //读取xls文件
        private void button2_Click(object sender, EventArgs e)
        {   StringBuilder sbr = new StringBuilder();            using (FileStream fs = File.OpenRead(@"c:/myxls.xls"))   //打开myxls.xls文件            {
                HSSFWorkbook wk = new HSSFWorkbook(fs);   //把xls文件中的数据写入wk中
                for (int i = 0; i < wk.NumberOfSheets; i++)  //NumberOfSheets是myxls.xls中总共的表数                {
                    ISheet sheet = wk.GetSheetAt(i);   //读取当前表数据
                    for (int j = 0; j <= sheet.LastRowNum; j++)  //LastRowNum 是当前表的总行数                    {
                        IRow row = sheet.GetRow(j);  //读取当前行数据
                        if (row != null)
                        {
                            sbr.Append("-------------------------------------\r\n"); //读取行与行之间的提示界限
                            for (int k = 0; k <= row.LastCellNum; k++)  //LastCellNum 是当前行的总列数                            {
                                ICell cell = row.GetCell(k);  //当前表格
                                if (cell != null)
                                {                                   
                                    sbr.Append(cell.ToString());   //获取表格中的数据并转换为字符串类型                                }
                            }
                        }
                    }
                }               
            }
            sbr.ToString();            using (StreamWriter wr = new StreamWriter(new FileStream(@"c:/myText.txt", FileMode.Append)))  //把读取xls文件的数据写入myText.txt文件中            {
                wr.Write(sbr.ToString());
                wr.Flush();
            }
            
        }

复制代码


使用Npoi创建一个常用的xls文件


 

复制代码

 
          button3_Click(= 
            ISheet sh = wb.CreateSheet(
            sh.SetColumnWidth(,  * ,  * ,  * ,  *  i =  练习合并单元格
 NPOI.SS.Util.CellRangeAddress(, , , = sh.CreateRow(=  * = row0.CreateCell(=++ 设置表头= sh.CreateRow(=  * = row1.CreateCell(== row1.CreateCell(== row1.CreateCell(== row1.CreateCell(=  
  
            (FileStream stm=File.OpenWrite( 定义单元格常用到样式的枚举         


         定义单元格常用到样式        =
            IFont font12 == = == === ;
            fontcolorblue.FontName = 
            cellStyle.BorderBottom ====
            cellStyle.BottomBorderColor ==
            cellStyle.FillForegroundColor =
            cellStyle.FillBackgroundColor =
            cellStyle.Alignment =
            cellStyle.VerticalAlignment =
            cellStyle.WrapText = 
            cellStyle.Indention = 
            == datastyle.GetFormat(= HSSFDataFormat.GetBuiltinFormat(== format.GetFormat(= = HSSFDataFormat.GetBuiltinFormat(== format1.GetFormat(= HSSFDataFormat.GetBuiltinFormat(

复制代码

 


提示:1.以上使用npoi版本为1.2.5版本,版本目前属于最高版本,跟以前版本的使用是有些差别的。

          2.使用以上代码,需要添加两个npoi的dll。Ionic.Zip.dll,NPOI.dll

 

错误提示:The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)

错误原因:

  • HSSFWorkbook:是操作Excel2003以前(包括2003)的版本,扩展名是.xls 

  • XSSFWorkbook:是操作Excel2007的版本,扩展名是.xlsx

解决方案:(引用npoi2.0)

复制代码

            ISheet sheet;
            FileStream fs = null;            try
            {
                fs = new FileStream(txtPath.Text, FileMode.Open, FileAccess.Read);    
                HSSFWorkbook wk = new HSSFWorkbook(fs);
                sheet = wk.GetSheet(sheetName);
            }            catch
            {
                fs = new FileStream(txtPath.Text, FileMode.Open, FileAccess.Read);
                XSSFWorkbook wk = new XSSFWorkbook(fs);
                sheet = wk.GetSheet(sheetName);
            }            finally
            {
                fs.Close();
                fs.Dispose();
            }            if (sheet.LastRowNum < 1)
            {
                MessageBox.Show("表内容不能为空");                return;
            }            for (int j = 1; j <= sheet.LastRowNum; j++)


本文转载自:http://www.cnblogs.com/knowledgesea/archive/2012/11/16/2772547.html

短短的歼击机

短短的歼击机

粉丝 82
博文 268
码字总数 269797
作品 0
武汉
高级程序员
私信 提问
老牌开源Office操作组件NPOI现已支持.NET Core

昨天在微信群里听到老牌Excel开发利器NPOI的作者瞿总说4.6.1版本的NPOI已经支持.NET Standard 2.0了,这也就意味着你可以在.NET Core中使用NPOI了。 写在前面 曾经的.NET Framework时代就很喜...

依乐祝
01/15
0
0
.NET读写Excel工具Spire.Xls使用入门介绍

在.NET平台,操作Excel文件是一个非常常用的需求,目前比较常规的方法有以下几种: 1.Office Com组件的方式:这个方式非常累人,微软的东西总是这么的复杂,使用起来可能非常不便,需要安装E...

李朝强
2016/06/29
97
0
NPOI的Excel的读取和写入

一、Excel理论知识 最新版NPOI2.4.1链接:https://pan.baidu.com/s/1iTgJi2hGsRQHyw2S_4dIUw 提取码:adnq • 整个Excel表格叫做工作簿:WorkBook • 工作簿由以下几部分组成   a.页(Shee...

陈彦斌
05/10
0
0
C# 调用NPOI 修改Excel 完成实时更新公式结果

C# 调用NPOI,修改EXCEL中的数据后并保存后,不会对公式进行更新操作。打开Excel表需要更新一下公式才生效 强制更新公式:C# 调用sheet.ForceFormulaRecalculation = true; 保存文件。打开E...

vv2013
2018/08/22
0
0
使用NPOI进行Excel操作

一、NPOI组件导入 右键项目菜单,“管理NuGet程序包” 直接搜索“NPOI”即会出现列表,下载第一个进行安装即可 安装完成后项目引用会出现以下几项 二、基础使用 添加引用 using NPOI.HPSF;us...

未名天
08/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

自建redis笔记

自建redis笔记 最近在linux安装了一下redis,特做一些笔记! 本文先单节点启动redis,然后再进行持久化配置,在次基础上,再分享搭建主从模式的配置以及Sentinel 哨兵模式及集群的搭建 单节点...

北极之北
1分钟前
0
0
vue+element之多表单验证

方法一:利用promise var p1=new Promise(function(resolve, reject) { this.$refs[form1].validate((valid) => { if(valid){ ......

沉迷代码我爱学习
3分钟前
0
0
golang 1.13 errors 包 新函数介绍

引 这次 errors 包算重量级更新。很有更能把以前的一些设计模式给推到。下面聊下用法。 error 装包 以前返回一个错误,想要保存 error 链,还要定义结构体保存以前的 error 信息。感兴趣看下...

guonaihong
12分钟前
1
0
并发编程之线程池

一、线程池 1、什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 第一:降...

codeobj
15分钟前
1
0
知识点总结思维导图模板分享,良心安利,建议收藏

思维导图经常被用在学习中,对大脑思维进行发散,对知识进行记忆。使用思维导图可以让知识更加简单更有层次。下面是利用思维导图所绘制的几款知识点总结思维导图模板,大家可以进行进行参考使...

干货趣分享
18分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部