NPOI教程2

NPOI 1.2 教程 – 2.2.4 设置单元格边框

2013年1月19日 tonyqus 没有评论


很多表格中都要使用边框,本节将为你重点讲解NPOI中边框的设置和使用。

边框和其他单元格设置一样也是在HSSFCellStyle上操作的,HSSFCellStyle有2种和边框相关的属性,分别是:

边框相关属性 说明 范例
Border+方向 边框类型 BorderTop, BorderBottom,BorderLeft, BorderRight
方向+BorderColor 边框颜色 TopBorderColor,BottomBorderColor, LeftBorderColor, RightBorderColor

其中边框类型分为以下几种:

边框范例图 对应的静态值
image HSSFCellStyle.BORDER_DOTTED
image HSSFCellStyle.BORDER_HAIR
image HSSFCellStyle.BORDER_DASH_DOT_DOT
image HSSFCellStyle.BORDER_DASH_DOT
image HSSFCellStyle.BORDER_DASHED
image HSSFCellStyle.BORDER_THIN
image HSSFCellStyle.BORDER_MEDIUM_DASH_DOT_DOT
image HSSFCellStyle.BORDER_SLANTED_DASH_DOT
image HSSFCellStyle.BORDER_MEDIUM_DASH_DOT
image HSSFCellStyle.BORDER_MEDIUM_DASHED
image HSSFCellStyle.BORDER_MEDIUM
image HSSFCellStyle.BORDER_THICK
image HSSFCellStyle.BORDER_DOUBLE

至于颜色那就很多了,全部在HSSFColor下面,如HSSFColor.GREEN, HSSFColor.RED,都是静态实例,可以直接引用。

下面我们假设我们要把一个单元格的四周边框都设置上,可以用下面的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
HSSFSheet sheet = hssfworkbook.CreateSheet(<span style= "color: #006080" > "new sheet" </span>);
 
<span style= "color: #008000" > // Create a row and put some cells in it. Rows are 0 based.</span>
HSSFRow row = sheet.CreateRow(1);
<span style= "color: #008000" > // Create a cell and put a value in it.</span>
HSSFCell cell = row.CreateCell(1);
<span style= "color: #008000" > // Style the cell with borders all around.</span>
HSSFCellStyle style = hssfworkbook.CreateCellStyle();
style.BorderBottom= HSSFCellStyle.BORDER_THIN;
style.BorderLeft= HSSFCellStyle.BORDER_THIN;
style.BorderRight= HSSFCellStyle.BORDER_THIN;
style.BorderTop = HSSFCellStyle.BORDER_THIN ;
cell.CellStyle= style;

这段代码使用了最普通的细边框,使得这个单元格看上去像块空心砖头。

image

注意:这里我们没有设置边框的颜色,但这不会影响最终的效果,因为Excel会用默认的黑色给边框上色。

 

如果要设置颜色的话,也很简单,如下:

1
style.BottomBorderColor= HSSFColor.GREEN.index;

以上代码将底部边框设置为绿色,要注意,不是直接把HSSFColor.GREEN赋给XXXXBorderColor属性,而是把index的值赋给它。

 

相关范例请参考NPOI 1.2正式版中的SetBorderStyleInXls项目。

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2 教程 – 2.2.5 设置单元格字体

2013年1月19日 tonyqus 1 条评论

作者:Tony Qu

 

本节我们将继续使用NPOI来设置单元格格式,这一节我们主要讲如何设置“字体”。

image

在设置字体之前,我们首先要做的就是创建字体对象,这和创建数字格式很相似。

1
HSSFFont font = hssfworkbook.CreateFont();

这句话会在Excel文件内部创建相应的FontRecord,所以你不用客户因为自己机器上的Excel没有相应的字体设置而导致设置丢失。

字体在设置完成后,我们就可以把它赋给单元格样式,代码如下:

1
2
3
HSSFCellStyle style1 = hssfworkbook.CreateCellStyle();
style1.SetFont(font);
cell1.CellStyle=style1;

这里的cell1是HSSFCell的一个实例。

 

好了,下面我们就开始对字体进行设置。

字体名称

这里的字体名称是通过HSSFFont.FontName进行设置的,至于具体的名称,只要是常用字体都可以,比如说Arial, Verdana等,当然也可以是中文字体名,如宋体、黑体等。不过设置字体名称有个前提,那就是假设打开这个xls文件的客户机上有这种字体,如果没有,Excel将使用默认字体。

下面就是设置字体名称为“宋体”的代码:

1
font.FontName = <span style= "color: #006080" > "宋体" </span>;

字号

与字号有关的属性有两个,一个是FontHeight,一个是FontHeightInPoints。区别在于,FontHeight的值是FontHeightInPoints的20倍,通常我们在Excel界面中看到的字号,比如说12,对应的是FontHeightInPoints的值,而FontHeight要产生12号字体的大小,值应该是240。所以通常建议你用FontHeightInPoint属性。

如果要设置字号为12,代码就是

1
font.FontHeightInPoints = 12;

字体颜色

这里可能会与CellStyle上的ForegroundColor和BackgroundColor产生混淆,其实所有的字体颜色都是在HSSFFont的实例上设置的,CellStyle的ForegroundColor和BackgroundColor分别指背景填充色和填充图案的颜色,和文本颜色无关。

要设置字体颜色,我们可以用HSSFFont.Color属性,颜色可以通过HSSFColor获得,代码如下所示:

1
font.Color = HSSFColor.RED.index;

这行代码把文本设置为红色。

下划线

通常我们所说的下划线都是单线条的,其实Excel支持好几种下划线,如下所示:

类型 对应的值
单下划线 HSSFFont.U_SINGLE
双下划线 HSSFFont.U_DOUBLE
会计用单下划线 HSSFFont.U_SINGLE_ACCOUNTING
会计用双下划线 HSSFFont.U_DOUBLE_ACCOUNTING
无下划线 HSSFFont.U_NONE

当你要设置下划线时,可以用HSSFFont.Underline属性,这是一个byte类型的值,例如

1
font.Underline=HSSFFont.U_SINGLE

这行代码就是设置单下划线的代码。

上标下标

设置这东西可以用HSSFFont.TypeOffset属性,值有以下几种:

TypeOffset的值 说明
HSSFFont.SS_SUPER 上标
HSSFFont.SS_SUB 下标
HSSFFont.SS_NONE 普通,默认值

所以如果你要上标的话,可以用下面的代码:

1
font.TypeOffset=HSSFFont.SS_SUPER;

删除线

设置这东西可以用HSSFFont.IsStrikeout属性,当为true时,表示有删除线;为false则表示没有删除线。

 

相关范例请参考NPOI 1.2正式版中的ApplyFontInXls的项目。

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2 教程 – 2.1.2 创建DocumentSummaryInformation和SummaryInformation

2013年1月19日 tonyqus 没有评论

作者:Tony Qu

 

前一节中我们讲解了如何创建一个新的Workbook,但在此过程中大家也许会发现一个细节,这些文件没有包括DocummentSummaryInformation和SummaryInformation头。如果你还不是很清楚我在说什么,可以看POIFS Browser打开test.xls文件后的截图:

image

你会发现只有Workbook目录,其他什么都没有,但事实上一个正常的xls文件,比如说Excel生成的xls文件是类似下面的结构:

image

是不是多出来DocumentSummaryInformation和SummaryInformation两个头?很多人可能对DocumentSummaryInformation和SummaryInformation很陌生,可能第一次听说这玩意,没事,这很正常,因为普通用户很少会去使用这些东西,但它们其实比想象中有用。

image

请看上图中的信息,如作者、标题、标记、备注、主题等信息,其实这些信息都是存储在DocummentSummaryInformation和SummaryInformation里面的,这么一说我想大家应该明白了吧,这些信息是为了快速提取文件信息准备。在Windows XP中,也有对应的查看和修改界面,只是没有Vista这么方便,如下所示:

propertysetwindow1-thumb

这恐怕也是很多人对于这些信息漠不关心的原因吧,因为没有人愿意通过 右击文件->属性 这样复杂的操作去查看一些摘要信息。

 

提示

DocummentSummaryInformation和SummaryInformation并不是Office文件的专利,只要是OLE2格式,都可以拥有这两个头信息,主要目的就是为了在没有完整读取文件数据的情况下获得文件的摘要信息,同时也可用作桌面搜素的依据。要了解DocummentSummaryInformation的全部属性请见http://msdn.microsoft.com/en-us/library/aa380374(VS.85).aspx;要了解SummaryInformation的全部属性请见http://msdn.microsoft.com/en-us/library/aa369794(VS.85).aspx

 

好了,说到这里,我想大家对于接下来我们要创建的内容有了初步的认识,下面我们就马上动手创建。

首先引用以下这些命名空间:

using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;

其中与DocummentSummaryInformation和SummaryInformation密切相关的是HPSF命名空间。

首先创建Workbook

HSSFWorkbook hssfworkbook = new HSSFWorkbook();

然后创建DocumentSummaryInformation

DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "NPOI Team";

再创建SummaryInformation

SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
si.Subject = "NPOI SDK Example";

因为是范例,这里仅各设置了一个属性,其他都没有设置。

现在我们把创建好的对象赋给Workbook,这样才能保证这些信息被写入文件。

hssfworkbook.DocumentSummaryInformation = dsi;
hssfworkbook.SummaryInformation = si;

最后和2.1.1节一样,我们把Workbook通过FileStream写入文件。

 

相关范例请见 NPOI 1.2正式版中的CreatePOIFSFileWithProperties

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2 教程 – 2.1.5 创建页眉和页脚

2013年1月19日 tonyqus 没有评论

作者:Tony Qu

 

很多人并不知道Excel的页眉和页脚功能,因为在界面上是显示不了页眉和页脚的,必须在打印页面中才能看到,这也直接导致了其设置界面也显得更隐秘,你必须进入页面设置 –> 页眉和页脚才能设置。以下是Office 2007中的设置界面。

image

当你按“自定义页眉”或“自定义页脚”时,你会看到以下界面,Excel把页眉、页脚分成了左中右三部分,这一点绝非单纯体现在界面上,在底层的存储中也是如此。如果你设置的是“左”的内容,底层的存储字符串就会在开头加上&L,如果是“右”的内容则会加上&R,所以HeaderRecord中的字符串看上去是这样的:"&C&LFooter A&R”,这个字符串的意思是仅设置了“左”的内容,内容是Footer A。

image

看了这些我想你应该对页眉和页脚有所了解了,回过头来说NPOI,NPOI中主要是靠HSSFSheet.Header和HSSFSheet.Footer来设置的,这两个属性分别是HSSFHeader和HSSFFooter类型的。

 

参考代码如下:

1
2
3
4
5
6
7
8
HSSFSheet s1 = hssfworkbook.CreateSheet(<span style= "color: #006080" > "Sheet1" </span>);
s1.CreateRow(0).CreateCell(1).SetCellValue(123);
 
<span style= "color: #008000" > //set header text</span>
s1.Header.Center = <span style= "color: #006080" > "This is a test sheet" </span>;
<span style= "color: #008000" > //set footer text</span>
s1.Footer.Left = <span style= "color: #006080" > "Copyright NPOI Team" </span>;
s1.Footer.Right = <span style= "color: #006080" > "created by Tony Qu(瞿杰)" </span>;

 

以上代码中我添加了页眉的Center内容,Footer的Left和Right内容,在打印预览中看到的效果大概是这样的:

页眉

image 

页脚

image

至于一些Excel特殊字符,比如说页码可以用&P,当前日期可以用&D,其他的东西你就自己研究吧。

 

本范例完整代码请见NPOI.Examples中的CreateHeaderFooterInXls项目。

分类: NPOI 标签: 页眉页脚页面设置

NPOI 1.2 教程 – 2.1.4 创建批注

2013年1月19日 tonyqus 1 条评论

作者:Tony Qu

 

很多人不怎么用Excel中的批注,所以我特地截了张图,让大家知道本节我们要创建的到底是什么东西。

image

在过去,我们恐怕没有办法实现这一功能,因为无论是cvs法、html法、oledb法都没有提供这样的接口,当然Office PIA法可以做到,但是性能实在太差,而且稳定性不好,经常莫名其妙crash(这是某某兄弟给我的反馈,我引用了下,呵呵)。在以后的教程中,你将看到更多在过去无法通过传统方法实现的东西,好戏才刚刚开始。

批注主要有三个属性需要设置,一个是批注的位置和大小、一个是批注的文本、还有一个是批注的作者。

 

批注的位置和大小,在Excel中是与单元格密切相关的,NPOI中通过HSSFClientAnchor的实例来表示,它的构造函数比较复杂,有8个参数,它们分别是

参数

说明

dx1 第1个单元格中x轴的偏移量
dy1 第1个单元格中y轴的偏移量
dx2 第2个单元格中x轴的偏移量
dy2 第2个单元格中y轴的偏移量
col1 第1个单元格的列号
row1 第1个单元格的行号
col2 第2个单元格的列号
row2 第2个单元格的行号

 

例如,如果我们打算让注释显示在B3和E5之间,就应该这么写:

HSSFPatriarch patr = sheet.CreateDrawingPatriarch();
HSSFComment comment1 = patr.CreateComment(new HSSFClientAnchor(0, 0, 0, 0, 1, 2 , 4, 4));

下面我们设置这个批注的内容和作者,这个比较简单:

comment1.String = new HSSFRichTextString("Hello World");
comment1.Author = "NPOI Team";

最后一步就是把批注赋给某个单元格:

HSSFCell cell = sheet.CreateRow(1).CreateCell(1);
cell.CellComment = comment1;

对于批注,你有两种选择,一种是隐藏(默认),一种是显示(即表单一打开就显示该批注),可以通过comment1.Visible属性来控制。

image

看了上面这张图大家就应该明白了,这里有2个批注,下面那个是显示的,上面那个是隐藏的。

相关范例请见 NPOI 1.2正式版中的SetCellCommentInXls。

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2 教程 – 组合行、列

2013年1月19日 tonyqus 没有评论

作者:Tony Qu

 

Excel 2007中有一个面板是专门用于设置组合功能的,叫做“分级显示”面板,如下所示:

image

可能我们在过去生成Excel文件的时候根本不会用这个功能,也没办法用,因为cvs法和html法没办法控制这些东西。这里简单的介绍一下什么叫做组合:

组合分为行组合和列组合,所谓行组合,就是让n行组合成一个集合,能够进行展开和合拢操作,在Excel中显示如下:

image

图中左侧就是用于控制行组合折叠的图标,图中上部就是用于控制列组合的,是不是有点像TreeView中的折叠节点?很多时候由于数据太多,为了让用户对于大量数据一目了然,我们可以使用行列组合来解决显示大纲,这和Visual Studio 里面的region的概念是类似的。

细心的朋友可能已经注意到了,我们其实可以对一行做多次组合操作,这就是分级显示的概念,图中就把行2-3分为2个组合,第2行到第4行为一个组合,第2行到第5行一个组合,所以是分两级。

在NPOI中,要实现分组其实并不难,你只需要调用HSSFSheet.GroupRow和HSSFSheet.GroupColumn这两个方法就可以了。

 

首先我们来看HSSFSheet.GroupRow,GroupRow有2个参数,分别是fromRow和toRow,表示起始行号和结束行号,这些行号都是从0开始算起的。

HSSFWorkbook hssfworkbook = new HSSFWorkbook();
HSSFSheet s = hssfworkbook.CreateSheet("Sheet1");
s.GroupRow(1, 3);

上面的代码把第2行到第4行做了组合。

要组合列,其实代码很相似,如下所示:

s.GroupColumn(1,3)

上面的代码把B至D列做了组合。

正如上图中Excel的“分级显示”面板所示,有“组合”,也一定有“取消组合”,NPOI中你可以用HSSFSheet.UngroupRow和HSSFSheet.UngroupColumn,参数和GroupXXX是一样的,如果要取消第2到第4行的组合,就可以用下面的代码:

s.UngroupColumn(1,3)

 

相关范例请见NPOI 1.2正式版中的GroupRowAndColumnInXls项目。

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2教程 – 2.2.6设置单元格的背景和图案

2013年1月19日 tonyqus 没有评论

作者:Tony Qu

 

本节我们将用NPOI来为单元格添加背景和图案。

在之前的教程中,我们已经提到HSSFCellStyle有两个背景颜色属性,一个叫FillBackgroundColor,另一个叫FillForegroundColor,但其实这指的都是背景颜色,那为什么还有ForegroundColor呢?为了能够帮助大家理解,我们举一个实际的例子,下面这个图案是Excel的一个单元格:

image

线是白色的,背景是红色的。这里的线其实就是下面的Excel界面中的图案:

image

 

至于线的颜色则是图案颜色,即白色。

所以以上单元格如果要用NPOI来设置就可以用以下代码完成:

1
2
3
4
5
6
//fill background
HSSFCellStyle style8 = hssfworkbook.CreateCellStyle();
style8.FillForegroundColor = NPOI.HSSF.Util.HSSFColor.WHITE.index;
style8.FillPattern = HSSFCellStyle.SQUARES;
style8.FillBackgroundColor = NPOI.HSSF.Util.HSSFColor.RED.index;
sheet1.CreateRow(7).CreateCell(0).CellStyle = style8;

现在是不是清楚一些了,这里的FillPattern就图案样式,所有的枚举值都是HSSFCellStyle的常量;FillForegroundColor就是图案的颜色,而FillBackgroundColor则是背景的颜色,即红色。

下面罗列一下图案样式及其对应的值:

图案样式 常量
image HSSFCellStyle.NO_FILL
image HSSFCellStyle.ALT_BARS
image HSSFCellStyle.FINE_DOTS
image HSSFCellStyle.SPARSE_DOTS
image HSSFCellStyle.LESS_DOTS
image HSSFCellStyle.LEAST_DOTS
image HSSFCellStyle.BRICKS
image HSSFCellStyle.BIG_SPOTS
image HSSFCellStyle.THICK_FORWARD_DIAG
image HSSFCellStyle.THICK_BACKWARD_DIAG
image HSSFCellStyle.THICK_VERT_BANDS
image HSSFCellStyle.THICK_HORZ_BANDS
image HSSFCellStyle.THIN_HORZ_BANDS
image HSSFCellStyle.THIN_VERT_BANDS
image HSSFCellStyle.THIN_BACKWARD_DIAG
image HSSFCellStyle.THIN_FORWARD_DIAG
image HSSFCellStyle.SQUARES
image HSSFCellStyle.DIAMONDS

通过这张表,你将很容易找到自己需要的样式,不用再去一个一个猜测了。

 

相关范例请参考NPOI 1.2正式版中的ColorfullMatrixTable和FillBackgroundInXls。

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2 教程 – 2.1.3 创建单元格

2013年1月19日 tonyqus 没有评论

作者:Tony Qu

 

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

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

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

行建好了,就可以建单元格了,比如创建A1位置的单元格:

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

这里要说明一下,SetCellValue有好几种重载,你可以设置单元格为bool、double、DateTime、string和HSSFRichTextString类型。其中对于string类型的重载调用的就是HSSFRichTextString类型的重载,所以是一样的,HSSFRichTextString可用于有字体或者Unicode的文本。

如果你觉得每一行要声明一个HSSFRow很麻烦,可以用下面的方式:

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

这么用有个前提,那就是第0行还没创建过,否则得这么用:

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

注意:这里的行在Excel里是从1开始的,但是NPOI内部是从0开始的;列在Excel里面是用字母表示的,而NPOI中也是用从0开始的数字表示的,所以要注意转换。

 

如果你要获得某一个已经创建的单元格对象,可以用下面的代码:

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

相关范例请见 NPOI 1.2正式版中的SetCellValuesInXls项目。

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2 教程 – 2.1.1 创建Workbook和Sheet

2013年1月19日 tonyqus 没有评论

作者:Tony Qu

 

创建Workbook说白了就是创建一个Excel文件,当然在NPOI中更准确的表示是在内存中创建一个Workbook对象流。

本节作为第2章的开篇章节,将做较为详细的讲解,以帮助NPOI的学习者更好的理解NPOI的组成和使用。

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

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

NPOI.dll

NPOI.POIFS.dll

NPOI.HSSF.dll

NPOI.Util.dll

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

1
2
3
using NPOI.HSSF.UserModel;
...
HSSFWorkbook hssfworkbook = new HSSFWorkbook();

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

1
HSSFSheet sheet = hssfworkbook.CreateSheet( "new sheet" );

如果要创建标准的Excel文件,即拥有3个Sheet,可以用下面的代码:

1
2
3
hssfworkbook.CreateSheet( "Sheet1" );
hssfworkbook.CreateSheet( "Sheet2" );
hssfworkbook.CreateSheet( "Sheet3" );

最后就是把这个HSSFWorkbook实例写入文件了,代码也很简单,如下所示:

1
2
3
FileStream file = new FileStream( "test.xls" , FileMode.Create);
hssfworkbook.Write(file);
file.Close();

这里假设文件名是test.xls,,在创建完FileStream之后,直接调用HSSFWorkbook类的Write方法就可以了。

最后你可以打开test.xls文件确认一下,是不是有3个空的Sheet。

 

相关范例请见NPOI 1.2正式版中的CreateEmptyExcelFile项目。

分类: 未分类 标签: Excel 2003Excel 97MicrosoftNPOIpoixls

NPOI 1.2 教程 – 2.2.7 设置单元格的宽度和高度

2013年1月19日 tonyqus 没有评论

作者:Tony Qu

 

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

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

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

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

刚才说的是如何设置,那如何去读取一个列的宽度呢?直接用GetColumnWidth方法,这个方法只有一个参数,那就是列的索引号。如下所示:

1
int col1width = sheet1.GetColumnWidth(1);

说完宽度,我们来说高度,在Excel中,每一行的高度也是要求一致的,所以设置单元格的高度,其实就是设置行的高度,所以相关的属性也应该在HSSFRow上,它就是HSSFRow.Height和HeightInPoints,这两个属性的区别在于HeightInPoints的单位是点,而Height的单位是1/20个点,所以Height的值永远是HeightInPoints的20倍。

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

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

或者

1
sheet1.CreateRow(0).HeightInPoints = 200;

如果要获得某一行的行高,可以直接拿HSSFRow.Height属性的返回值。

 

你可能觉得一行一行设置行高或者一列一列设置列宽很麻烦,那你可以考虑使用HSSFSheet.DefaultColumnWidth、HSSFSheet.DefaultRowHeight和HSSFSheet.DefaultRowHeightInPoints属性。

一旦设置了这些属性,如果某一行或者某一列没有设置宽度,就会使用默认宽度或高度。代码如下:

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

 

相关范例请见NPOI 1.2正式版中的SetWidthAndHeightInXls项目

分类: NPOI 标签: Excel 2003Excel 97MicrosoftNPOIpoixls
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值