热点新闻
C# NPOI
2023-10-07 09:33  浏览:562  搜索引擎搜索“促展会”
温馨提示:信息一旦丢失不一定找得到,请务必收藏信息以备急用!本站所有信息均是注册会员发布如遇到侵权请联系文章中的联系方式或客服删除!
联系我时,请说明是在促展会看到的信息,谢谢。
展会发布 展会网站大全 报名观展合作 软文发布

1 NPOI

1.1 NPOI 是啥

NPOI是优秀开源软件,实现了EXCEL的离线写读。

NPOI 常用dll

NPOI.HSSF是专门负责Excel BIFF格式的命名空间,开发者使用的对象主要位于NPOI.HSSF.UserModelNPOI.HSSF.Util命名空间下,下面我们要讲到的Workbook的创建用的就是NPOI.HSSF.UserModel.HSSFWorkbook类,这个类负责创建.xls文档。

在开始创建Workbook之前,我们先要在项目中引用一些必要的NPOI assembly,如下所示:

NPOI.dll NPOI.POIFS.dll NPOI.HSSF.dll NPOI.Util.dll

要创建一个新的xls文件其实很简单,只要我们初始化一个新的HSSFWorkbook实例就行了,如下所示:

usingNPOI.HSSF.UserModel; ... HSSFWorkbook hssfworkbook =new HSSFWorkbook();

是不是很方便啊,没有任何参数或设置,但这么创建有一些限制,这样创建出来的Workbook在Excel中打开是会报错的,因为Excel规定一个Workbook必须至少带1个Sheet,这也是为什么在Excel界面中,新建一个Workbook默认都会新建3个Sheet。所以必须加入下面的创建Sheet的代码才能保证生成的文件正常:

HSSFSheet sheet = hssfworkbook.CreateSheet("newsheet");

hssfworkbook.CreateSheet("Sheet1"); hssfworkbook.CreateSheet("Sheet2"); hssfworkbook.CreateSheet("Sheet3");

把sheet 写入 test.xls

FileStreamfile =newFileStream(@"test.xls", FileMode.Create); hssfworkbook.Write(file); file.Close();

1.2 创建单元格

用过Excel的人都知道,单元格是Excel最有意义的东西,我们做任何操作恐怕都要和单元格打交道。在Excel中我们要添加一个单元格只需要点击任何一个单元格,然后输入内容就是了,但是Excel底层其实没有这么简单,不同的单元格是有不同的类型的,比如说数值单元格是用NumberRecord表示,文本单元格是用LabelSSTRecord表示,空单元格是用BlankRecord表示。这也就意味着,在设置单元格时,你必须告诉NPOI你需要创建哪种类型的单元格。

1.2.1 创建行

要创建单元格首先要创建单元格所在的行,比如,下面的代码创建了第0行:

HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); HSSFRow row1=sheet1.CreateRow(0);

1.2.2 创建单元格

比如创建A1位置的单元格:

row1.CreateCell(0).SetCellValue(1);

比如嫌这个麻烦

sheet1.CreateRow(0).CreateCell(0).SetCellValue("This is a Sample");

1.2.2.1 获得单元格

sheet1.GetRow(row_index).GetCell(column_index);

1.3 设置单元格的宽度和高度

在Excel中,单元格的宽度其实就是列的宽度,因为Excel假设这一列的单元格的宽度肯定一致。所以要设置单元格的宽度,我们就得从列的宽度下手,HSSFSheet有个方法叫SetColumnWidth,共有两个参数:一个是列的索引(从0开始),一个是宽度。

1.3.1 设置单元格的宽度

现在假设你要设置B列的宽度,就可以用下面的代码:

HSSFWorkbook hssfworkbook =new HSSFWorkbook(); HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); sheet1.SetColumnWidth(1,100 * 256);

这里你会发现一个有趣的现象,SetColumnWidth的第二个参数要乘以256,这是怎么回事呢?其实,这个参数的单位是1/256个字符宽度,也就是说,这里是把B列的宽度设置为了100个字符。

1.3.2 设置单元格的高度

要设置第一行的高度,可以用如下代码:

sheet1.CreateRow(0).Height= 200*20;

或者

sheet1.CreateRow(0).HeightInPoints= 200;

如果要获得某一行的行高,可以直接拿HSSFRow.Height属性的返回值。
一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:

sheet1.DefaultColumnWidth=100*256; sheet1.DefaultRowHeight=30*20;

1.4 基本计算

从这节开始,我们将开始学习Excel高级一点的功能--公式。为某个单元格指定公式后,单元格中的类容将根据公式计算得出,如图:

图中设置的是一个基本表达式”1+2*3”,单元格A1中将显示此表达式计算的结果”7”,如图所示。对应的C#生成代码也很简单,如下:

HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); HSSFRow row1=sheet1.CreateRow(0); HSSFCell cel1 = row1.CreateCell(0); HSSFCell cel2 = row1.CreateCell(1); HSSFCell cel3 = row1.CreateCell(2); cel1.SetCellFormula("1+2*3"); cel2.SetCellValue(5);

同样,NPOI也支持单元格引用类型的公式设置,如下图中的C1=A1*B1
对应的公式设置代码为:

cel3.SetCellFormula("A1*B1");

是不是很简单呢?但要注意,在利用NPOI写程序时,行和列的计数都是从0开始计算的,但在设置公式时又是按照Excel的单元格命名规则来的。

2 C#安装NPOI

NuGet 画廊 |NPOI 2.6.2




image.png

部分内容转载

作者:腿毛裤
链接:https://www.jianshu.com/p/17e043980aa9
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

发布人:abef****    IP:139.201.21.***     举报/删稿
展会推荐
让朕来说2句
评论
收藏
点赞
转发