NPOI使用手册[转] (24)

HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
HSSFRow row1 = sheet1.CreateRow(0);
row1.CreateCell(0).SetCellValue("冻结列");
sheet1.CreateFreezePane(1, 0, 1, 0);


代码执行结果如下:

下面对CreateFreezePane的参数作一下说明:
第一个参数表示要冻结的列数;
第二个参数表示要冻结的行数,这里只冻结列所以为0;
第三个参数表示右边区域可见的首列序号,从1开始计算;
第四个参数表示下边区域可见的首行序号,也是从1开始计算,这里是冻结列,所以为0;

举例说明也许更好理解,将各参数设置为如下:

sheet1.CreateFreezePane(2,0,5,0);

得到的效果如下图:

注意图中C、D和E列默认是看不到的,滚动才看得到,这就是第三个参数5起了作用,是不是很好理解了呢:)

接下来,看一下冻结行的效果。将上面的代码稍作修改:

HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet1");
HSSFRow row1 = sheet1.CreateRow(0);
row1.CreateCell(0).SetCellValue("冻结行");
sheet1.CreateFreezePane(0, 1, 0, 1);

执行后生成的Excel文件效果见下图:


那么,如果要行和列同时冻结该怎么做呢?聪明的你一定能想得到,呵呵~~

NPOI 1.2教程 - 显示/隐藏Excel网格线

作者:Tony Qu

NPOI官方网站:

有些时候,我们需要网格线,而有些时候我们不需要,这取决于实际的业务需求。前两天inmegin兄就问我,怎么把网格给去掉,因为他们要把Excel文档当Word使,也许是因为Excel排版方便吧。

Excel中的网格线设置是以表(Sheet)为单位进行管理的,这也就意味着你可以让一个表显示网格线,而另一个表不显示,这是不冲突的。

在Excel 2007中,我们通常用“工作表选项”面板来设置这个属性:

在面板中,你会发现有2个多选框,一个是查看,一个是打印,也就是说Excel是把查看和打印网格线作为两个设置来处理的,存储的Record也是不同的。

在NPOI中,如果要让网格线在查看时显示/隐藏,你可以HSSFSheet.DisplayGridlines属性,默认值为true(这也是为什么默认情况下我们能够看到网格线)。下面的代码就是让网格线在查看时不可见的:

HSSFWorkbookhssfworkbook =newHSSFWorkbook();

HSSFSheet s1= hssfworkbook.CreateSheet("Sheet1");

s1.DisplayGridlines=false;

如果要在打印时显示/隐藏网格线,你可以用HSSFSheet.IsGridlinesPrinted属性,默认值为false(这就是默认情况下打印看不到网格线的原因)。代码和上面差不多:

s1.IsGridsPrinted=true;

上面的代码将在打印时显示网格线,打印的效果如下所示。

在此也提醒大家,如果这个Excel最终客户有打印意向,可别忘了把IsGridPrinted属性也设置上。

相关范例可以参考NPOI 1.2正式版中的DisplayGridlinesInXls项目。

2.6.6用NPOI操作EXCEL--设置初始视图的行、列

有些时候,我们可能希望生成的Excel文件在被打开的时候自动将焦点定位在某个单元格或是选中某个区域中。在NPOI中可以通过SetAsActiveCell和SetActiveCellRange等几个方法实现。

首先我们看一下设置初始视图中选中某个单元格的方法:

//use HSSFCell.SetAsActiveCell() to select B6 as the active column
HSSFSheet sheet1 = hssfworkbook.CreateSheet("Sheet A");
CreateCellArray(sheet1);
sheet1.GetRow(5).GetCell(1).SetAsActiveCell();
//set TopRow and LeftCol to make B6 the first cell in the visible area
sheet1.TopRow = 5;
sheet1.LeftCol = 1;

其中CreateCellArray(sheet1)方法用来写示范数据,其代码为(下同):

static void CreateCellArray(HSSFSheet sheet)
{
    for (int i = 0; i < 300; i++)
    {
        HSSFRow row=sheet.CreateRow(i);
        for (int j = 0; j < 150; j++)
        {
            HSSFCell cell = row.CreateCell(j);
            cell.SetCellValue(i*j);
        }
    }
}

生成的Excel打开时效果如下,注意B6为默认选中状态,TopRow和LeftCol设置B6为当前可见区域的第一个单元格:

如果不设置TopRow和LeftCol属性,默认的可见域的第一个单元格为A1,如下是另一种设置活动单元格的方法,但没有设置此Sheet的TopRow和LeftCol:

HSSFSheet sheet2 = hssfworkbook.CreateSheet("Sheet B");
sheet2.Sheet.SetActiveCell(1, 5);

对应生成的Excel显示为:

除了设置某个单元格为选中状态外,还NPOI可以设置某个区域为选中状态:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwwwpg.html