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

3687人阅读 评论(0) 收藏 举报

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

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

 

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

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

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

int col1width = sheet1.GetColumnWidth(1);

 

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

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

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

 

或者

sheet1.CreateRow(0).HeightInPoints = 200;

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

 

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

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

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

 

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

查看评论

【一步一步学NPOI】3.设置单元格宽高和边框

1.宽度 excel中,一列的单元格宽度是一样的,所以宽度操作的对象是sheet var cellDate = row1.CreateCell(0); cellDate....
  • aa2012123456
  • aa2012123456
  • 2016-02-03 13:55:55
  • 6688

NPOI2.2.0.0实例详解(三)—设置EXCEL列宽、行高与合并单元格

设置EXCEL列宽、行高与合并单元格
  • xxs77ch
  • xxs77ch
  • 2015-12-08 11:04:00
  • 11055

Apache POI 设置宽度和行高

FileOutputStream fos = new FileOutputStream("D:\\15.xls"); HSSFWorkbook wb = new HSSFWorkbook(); ...
  • hehexiaoyou
  • hehexiaoyou
  • 2014-07-16 10:28:16
  • 58547

如何在NPOI中实现宽度自适应和高度自适应

由于系统需要在wa
  • echoshinian100
  • echoshinian100
  • 2014-08-13 17:47:03
  • 9832

NPOI中实现列宽精确控制

NPOI生成Excel文件时,设置列宽只有一函数sheet.SetColumnWidth(),该函数有两个参数,第一个是行索引,第二个是行列宽。但是在实际使用过程中,设置的行列宽与产生的Excel文件...
  • echoshinian100
  • echoshinian100
  • 2015-07-05 18:00:42
  • 2448

使用NPOI 技术 的SetColumnWidth 精确控制列宽不能成功的解决办法(C#)

在使用NPOI技术开发自动操作EXCEL软件时遇到不能精确设置列宽的问题。 如 ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1"); sheet...
  • ab411919134
  • ab411919134
  • 2013-12-27 10:21:03
  • 10524

NPOI导出Excel - 自动适应中文宽度

/// /// 创建工作簿 /// /// 下载文件名 /// 数据源 public static void CreateSheet(string fileName, DataTable dt)...
  • kirawoo
  • kirawoo
  • 2016-01-05 11:30:31
  • 9957

npoi导出的excel中设置列宽

npoi中,sheet.SetColumnWidth(int col, int width),这个width是按一个字符数 * 256的长度来算的,这样的话excel实际宽度就是自己想设定的值。 当我...
  • tzz8080
  • tzz8080
  • 2016-07-12 22:53:37
  • 2263

解决列高度自适应(列高度相同)的五种方法

  • zgqtxwd
  • zgqtxwd
  • 2008-04-30 20:42:00
  • 113

C# NPOI AutoSizeColumn失效解决方案

NPOI导出EXCEL在处理中文时,需要表格列宽自动调整宽度时遇到问题,NPOI的自带函数AutoSizeColumn(int 列号)只能支持英文和数字,那就先用AutoSizeColumn(int列...
  • wandongcheng
  • wandongcheng
  • 2014-12-03 14:30:40
  • 4136
    个人资料
    持之以恒
    等级:
    访问量: 9万+
    积分: 1361
    排名: 3万+
    文章分类
    最新评论