excel npoi 连接_Net操作Excel_NPOI(示例代码)

Npoi 简介

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

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文件

//创建一个常用的xls文件

private void button3_Click(object sender, EventArgs e)

{

IWorkbook wb = new HSSFWorkbook();

//创建表

ISheet sh = wb.CreateSheet("zhiyuan");

//设置单元的宽度

sh.SetColumnWidth(0, 15 * 256);

sh.SetColumnWidth(1, 35 * 256);

sh.SetColumnWidth(2, 15 * 256);

sh.SetColumnWidth(3, 10 * 256);

int i = 0;

#region 练习合并单元格

sh.AddMergedRegion(new NPOI.SS.Util.CellRangeAddress(0, 0, 0, 3));

//CellRangeAddress()该方法的参数次序是:开始行号,结束行号,开始列号,结束列号。

IRow row0 = sh.CreateRow(0);

row0.Height = 20 * 20;

ICell icell1top0 = row0.CreateCell(0);

icell1top0.CellStyle = Getcellstyle(wb, stylexls.头);

icell1top0.SetCellValue("标题合并单元");

#endregion

i++;

#region 设置表头

IRow row1 = sh.CreateRow(1);

row1.Height = 20 * 20;

ICell icell1top = row1.CreateCell(0);

icell1top.CellStyle = Getcellstyle(wb, stylexls.头);

icell1top.SetCellValue("网站名");

ICell icell2top = row1.CreateCell(1);

icell2top.CellStyle = Getcellstyle(wb, stylexls.头);

icell2top.SetCellValue("网址");

ICell icell3top = row1.CreateCell(2);

icell3top.CellStyle = Getcellstyle(wb, stylexls.头);

icell3top.SetCellValue("百度快照");

ICell icell4top = row1.CreateCell(3);

icell4top.CellStyle = Getcellstyle(wb, stylexls.头);

icell4top.SetCellValue("百度收录");

#endregion

using(FileStream stm=File.OpenWrite(@"c:/myMergeCell.xls"))

{

wb.Write(stm);

MessageBox.Show("提示:创建成功!");

}

}

#region 定义单元格常用到样式的枚举

public enum stylexls

{

头,

url,

时间,

数字,

钱,

百分比,

中文大写,

科学计数法,

默认

}

#endregion

#region 定义单元格常用到样式

static ICellStyle Getcellstyle(IWorkbook wb, stylexls str)

{

ICellStyle cellStyle = wb.CreateCellStyle();

//定义几种字体

//也可以一种字体,写一些公共属性,然后在下面需要时加特殊的

IFont font12 = wb.CreateFont();

font12.FontHeightInPoints = 10;

font12.FontName = "微软雅黑";

IFont font = wb.CreateFont();

font.FontName = "微软雅黑";

//font.Underline = 1;下划线

IFont fontcolorblue = wb.CreateFont();

fontcolorblue.Color = HSSFColor.OLIVE_GREEN.BLUE.index;

fontcolorblue.IsItalic = true;//下划线

fontcolorblue.FontName = "微软雅黑";

//边框

cellStyle.BorderBottom = NPOI.SS.UserModel.BorderStyle.DOTTED;

cellStyle.BorderLeft = NPOI.SS.UserModel.BorderStyle.HAIR;

cellStyle.BorderRight = NPOI.SS.UserModel.BorderStyle.HAIR;

cellStyle.BorderTop = NPOI.SS.UserModel.BorderStyle.DOTTED;

//边框颜色

cellStyle.BottomBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;

cellStyle.TopBorderColor = HSSFColor.OLIVE_GREEN.BLUE.index;

//背景图形,我没有用到过。感觉很丑

//cellStyle.FillBackgroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;

//cellStyle.FillForegroundColor = HSSFColor.OLIVE_GREEN.BLUE.index;

cellStyle.FillForegroundColor = HSSFColor.WHITE.index;

// cellStyle.FillPattern = FillPatternType.NO_FILL;

cellStyle.FillBackgroundColor = HSSFColor.BLUE.index;

//水平对齐

cellStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.LEFT;

//垂直对齐

cellStyle.VerticalAlignment = VerticalAlignment.CENTER;

//自动换行

cellStyle.WrapText = true;

//缩进;当设置为1时,前面留的空白太大了。希旺官网改进。或者是我设置的不对

cellStyle.Indention = 0;

//上面基本都是设共公的设置

//下面列出了常用的字段类型

switch (str)

{

case stylexls.头:

// cellStyle.FillPattern = FillPatternType.LEAST_DOTS;

cellStyle.SetFont(font12);

break;

case stylexls.时间:

IDataFormat datastyle = wb.CreateDataFormat();

cellStyle.DataFormat = datastyle.GetFormat("yyyy/mm/dd");

cellStyle.SetFont(font);

break;

case stylexls.数字:

cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00");

cellStyle.SetFont(font);

break;

case stylexls.钱:

IDataFormat format = wb.CreateDataFormat();

cellStyle.DataFormat = format.GetFormat("¥#,##0");

cellStyle.SetFont(font);

break;

case stylexls.url:

fontcolorblue.Underline = 1;

cellStyle.SetFont(fontcolorblue);

break;

case stylexls.百分比:

cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00%");

cellStyle.SetFont(font);

break;

case stylexls.中文大写:

IDataFormat format1 = wb.CreateDataFormat();

cellStyle.DataFormat = format1.GetFormat("[DbNum2][$-804]0");

cellStyle.SetFont(font);

break;

case stylexls.科学计数法:

cellStyle.DataFormat = HSSFDataFormat.GetBuiltinFormat("0.00E+00");

cellStyle.SetFont(font);

break;

case stylexls.默认:

cellStyle.SetFont(font);

break;

}

return cellStyle;

}

#endregion

提示: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.mzph.cn/news/334857.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

apache camel_Apache Camel中的短重试与长重试

apache camel《骆驼设计模式》一书介绍了20种模式以及用于设计基于Apache Camel的集成解决方案的众多技巧和最佳实践。 每种模式都基于真实的用例&#xff0c;并提供了Camel特定的实现细节和最佳实践。 为了让您有这本书的感觉&#xff0c;以下是该书的重试模式摘录&#xff0c…

Linux 命令之 netstat -- 查看网络状态信息/显示网络状态

文章目录命令介绍常用选项参考示例&#xff08;一&#xff09;列出所有端口&#xff08;二&#xff09;列出所有 TCP 端口&#xff08;三&#xff09;列出所有 UDP 端口&#xff08;四&#xff09;只显示监听端口&#xff08;五&#xff09;只列出所有监听 tcp 端口&#xff08…

pyqt5 窗口设置圆角_Qt 的一些心得(背景设置,圆角,半透明)

一. 背景刷成黑色,前景色设为白色。 方法一、paltette方式&#xff0c;经测试&#xff0c;该方法不会影响到其他控件,推荐使用 QPalette bgpal palette();bgpal.setColor (QPalette::Background, QColor (0, 0 , 0, 255));//bgpal.setColor (QPalette::Background, Qt::transp…

java语言发展历史_Java编程语言的历史和未来

java语言发展历史通过AppDynamics解决应用程序问题的速度提高了10倍–以最小的开销在代码级深度监视生产应用程序。 开始免费试用&#xff01; 作为互联网上著名的编程语言 &#xff0c;Java对人们如何浏览数字世界产生了深远的影响。 Java功能设置了用户对他们访问互联网的设…

Linux 命令之 Bang(!) 命令

命令说明!!执行上一条命令^foo^ bar把上一条命令里的foo替换为bar&#xff0c;并执行!wget重复执行最近的以wget开头的命令!wget:p仅打印最近的以wget开头的命令&#xff0c;不执行!n执行历史命令列表第n条命令&#xff0c;例如执行第三条命令&#xff1a;!3!-n执行历史命令列表…

matlab resample上采样,resample matlab实现

使用线性插值实现sample rate转换。function output simpleResample(input, inputfs, outputfs)inputLen length(input(:, 1));outputLen floor(inputLen * outputfs / inputfs);output zeros(outputLen, 1);timeStep inputfs / outputfs;curTime 1;integer 0;frac 0;f…

c matlab 精度,svm去优化参数C和g,输出正确率accuracy老是0

下面这个是测试的M文件%% Matlab神经网络43个案例分析%% 清空环境变量function chapter_GridSearchclose all;clear;clc;format compact;%% 数据提取% 载入测试数据wine,其中包含的数据为classnumber 3,wine:178*13的矩阵,wine_labes:178*1的列向量load wine.mat;% 画出测试数…

微服务pact测试框架_消费者驱动的Pact和Spring Boot测试

微服务pact测试框架最近&#xff0c;我的一位同事偶然发现了Pact.io &#xff0c;我们目前的应用程序已扩展到 50多种服务&#xff0c;并且我们开始出现一些集成测试失败和脆弱的开发/验收测试环境。 因此&#xff0c;我们决定研究尝试与此相关的方法。 我从阅读开始&#xff…

用access建立一个试题库_Access考试题库(含答案).doc

所有单选题1、用Access创建的数据库文件&#xff0c;其扩展名是______。A&#xff1a;.adpB&#xff1a;.dbfC&#xff1a;.frmD&#xff1a;.mdb答案&#xff1a;D2、数据库系统的核心是______。A&#xff1a;数据模型B&#xff1a;数据库管理系统C&#xff1a;数据库D&#x…

Linux 命令之 arch --显示主机的硬件结构类型

文章目录介绍命令示例介绍 arch命令主要用于显示当前主机的硬件结构类型&#xff0c;arch命令输出的结果有&#xff1a;i386、i486、mips、alpha等。 此命令的适用范围&#xff1a;RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。 命令示例 显示当前主机硬件架构类…

mega5安装包_[MEGA DEAL] 2017年完全Java捆绑包(95%折扣)

mega5安装包深入了解编程奥德赛&#xff08;58小时&#xff01;&#xff09;&#xff0c;进入最常用的编程语言 嘿&#xff0c;怪胎&#xff0c; 本周&#xff0c;在我们的JCG Deals商店中 &#xff0c;我们提供了一个极端的报价 。 我们提供的2017 Complete Java Bundle 仅…

det曲线_平面曲线的曲率的复数表示

开学已经是第二周了&#xff0c;我的《微分几何》也上课两周了&#xff0c;进度比较慢&#xff0c;现在才讲到平面曲线的曲率。在平面曲线$\boldsymbol{t}(t)(x(t),y(t))$某点上可以找出单位切向量。$$\boldsymbol{t}\left(\frac{dx}{ds},\frac{dy}{ds}\right)$$其中$ds^2 dx^2…

matlab计算微分ppt,matlab-ch013(数值计算-微积分)20090923.ppt

matlab-ch013(数值计算-微积分)20090923.ppt 第13讲 数值计算 —微积分,张建瓴,13.1 数值积分,在工程教学和应用中&#xff0c;除了进行数据逼近外&#xff0c;还要求逼近曲线下面的面积&#xff0c;这就是积分问题。,一、数值积分方法,典型的数值积分方法有&#xff1a;用常数…

Linux 关于查看 cpu 的命令

文章目录查看物理 cpu 个数查看每个物理 cpu 中core的个数(即核数)查看逻辑 cpu 的个数查看 cpu 信息&#xff08;型号&#xff09;查看 cpu 的配置信息查看cpu波动情况的&#xff0c;尤其是多核机器上参考文档备注/说明查看物理 cpu 个数 [roothtlwk0001host ~]# cat /proc/c…

JDK 9中不推荐使用Java的Observer和Observable

在博客文章《 应用JDK 9 Deprecated增强功能》中 &#xff0c;我讨论了JDK 9中 Deprecated批注中对forRemoval&#xff08;&#xff09;和since&#xff08;&#xff09;可选元素&#xff08;方法&#xff09;的添加 。 我在那篇文章中说&#xff1a;“在Java SE API上应用新的…

php快速开发框架津县,BetePHP:一个轻量级快速开发框架

BetePHP关于BetePHP是一个轻量级快速开发框架。框架提供了一致的API接口&#xff0c;使得使用接口尽可能流畅&#xff1b;由于框架本身不依赖其他库&#xff0c;这使得框架本身运行速度非常快&#xff1b;框架希望使用最简单的方式make thing done&#xff0c;减少开发者的开发…

Linux 命令之 vmstat 命令-显示虚拟内存状态

介绍 vmstat 命令的含义为显示虚拟内存状态&#xff08;“Virtual Memory Statistics”&#xff09;&#xff0c;但是它可以报告关于进程、内存、I/O等系统整体运行状态。 常用选项 选项说明-a显示活跃和非活跃内存-f显示从系统启动至今的fork数量-m显示 slabinfo-n只在开始…

python编译后的文件_python 编译源文件

背景近期项目到了部署的阶段。由于项目后台和算法都是用Python "撸的"&#xff0c;但是又不希望将源代码直接 "release" 到 “客户”哪里。于是开始思考。。。首先&#xff0c;按照惯性思维&#xff0c;能否将编译后的东东放出去呢&#xff1f;(类似java或…

java创建和销毁一个对象_有效的Java –创建和销毁对象

java创建和销毁一个对象创建和销毁对象&#xff08;第2章&#xff09; 这是Joshua Blochs的《 有效的Java》第2章的简短摘要。我仅包括与自己相关的项目。 静态工厂&#xff08;项目1&#xff09; 静态工厂与构造函数的一些优点&#xff1a; 工厂方法的名称为构造函数添加了描…

WorkPlus一站式协同解决方案,助力企业降本增效

在企业数字化转型的过程中&#xff0c;很多企业都会遇到一个共同问题&#xff1a;重复建设基础功能&#xff0c;耗费大量时间和资源。为解决这一难题&#xff0c;WorkPlus已经将一些通用、基础且有技术门槛的功能进行了集成与开发&#xff0c;如IM&#xff08;即时通讯&#xf…