有些时候,我们可能希望生成的Excel文件在被打开的时候自动将焦点定位在某个单元格或是选中某个区域中。在NPOI中可以通过SetAsActiveCell和SetActiveCellRange等几个方法实现。
首先我们看一下设置初始视图中选中某个单元格的方法:
//use HSSFCell.SetAsActiveCell() to select B6 as the active columnHSSFSheet 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 areasheet1.TopRow=5;
sheet1.LeftCol=1;
其中CreateCellArray(sheet1)方法用来写示范数据,其代码为(下同):
staticvoidCreateCellArray(HSSFSheet sheet)
{for(inti=0; i<300; i++)
{
HSSFRow row=sheet.CreateRow(i);for(intj=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可以设置某个区域为选中状态:
//use Sheet.SetActiveCellRange to select a cell rangeHSSFSheet sheet3=hssfworkbook.CreateSheet("Sheet C");
CreateCellArray(sheet3);
sheet3.Sheet.SetActiveCellRange(2,5,1,5);
以上代码设置了Sheet C的选中区域为B3:F6:

还有更强大的,设置多个选中区域:
//use Sheet.SetActiveCellRange to select multiple cell rangesHSSFSheet sheet4=hssfworkbook.CreateSheet("Sheet D");
CreateCellArray(sheet4);
Listcellranges=newList();
cellranges.Add(newCellRangeAddress8Bit(1,3,2,5));
cellranges.Add(newCellRangeAddress8Bit(6,7,8,9));
sheet4.Sheet.SetActiveCellRange(cellranges,1,6,9);

如果一个Excel文件中有多个Sheet,还可以通过如下语句设置打开时的初始Sheet:
hssfworkbook.ActiveSheetIndex=2;
本文介绍了如何使用NPOI库在生成Excel文件时设定初始视图,包括设置焦点单元格、选中特定区域以及设置多个选中区域。通过SetAsActiveCell和SetActiveCellRange等方法,可以实现打开Excel时自动定位到特定位置,并展示指定的可见区域。
370

被折叠的 条评论
为什么被折叠?



