有些時候,我們可能希望產生的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可以設定某個地區為選中狀態:
//use Sheet.SetActiveCellRange to select a cell range
HSSFSheet 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 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;
返回目錄