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(
15);

对应生成的Excel显示为:

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

 

//use Sheet.SetActiveCellRange to select a cell range
HSSFSheet sheet3 = hssfworkbook.CreateSheet("Sheet C");
CreateCellArray(sheet3);
sheet3.Sheet.SetActiveCellRange(
2515);

以上代码设置了Sheet C的选中区域为B3:F6:

还有更强大的,设置多个选中区域:

//use Sheet.SetActiveCellRange to select multiple cell ranges
HSSFSheet sheet4 = hssfworkbook.CreateSheet("Sheet D");
CreateCellArray(sheet4);
List
<CellRangeAddress8Bit> cellranges = new List<CellRangeAddress8Bit>();
cellranges.Add(
new CellRangeAddress8Bit(1,3,2,5));
cellranges.Add(
new CellRangeAddress8Bit(6,7,8,9));
sheet4.Sheet.SetActiveCellRange(cellranges,
1,6,9);

如果一个Excel文件中有多个Sheet,还可以通过如下语句设置打开时的初始Sheet:

hssfworkbook.ActiveSheetIndex = 2;

 

返回目录

 

posted @ 2009-11-15 21:47  atao.xiang  阅读(15370)  评论(3编辑  收藏  举报