您好我正在使用apache poi生成excel文件。我正在使用XSSFWorkbook格式。我想着重於生成的excel文件的第一個單元格。Apache POI專注於生成的Excel文件中的特定單元格
我試過下面的代碼片段。
try {
Sheet sheet = workbook.getSheetAt(0);
workbook.setActiveSheet(0);
Cell cell = sheet.getRow(0).getCell(0);
cell.setAsActiveCell();
sheet.setActiveCell(cell.getAddress());
sheet.showInPane(0, 0);
} catch (IllegalArgumentException e) {
LOGGER.error("Failed to set active sheet and cell.", e);
}
我也看過這SO question以及。該解決方案似乎不適合我。任何人都可以在這裏幫我嗎?
P.S:我正在使用apache poi版本3.15。
更新1:
我也有左上角的單元格C1作爲凍結窗格。沒有正確顯示凍結。
我曾嘗試下面的代碼
public void setActiveCell(Workbook workbook, int sheetIndex, int row, int column) {
Sheet sheet = workbook.getSheetAt(sheetIndex);
CellAddress cellAddress = new CellAddress(row, column);
sheet.createFreezePane(2, 0);
((XSSFSheet) sheet).getCTWorksheet().getSheetViews().getSheetViewArray(0).getPane()
.setTopLeftCell("C1");
((XSSFSheet) sheet).setActiveCell(cellAddress);
// ((XSSFSheet) sheet).getCTWorksheet().getSheetViews().getSheetViewArray(0)
// .setTopLeftCell(cellAddress.formatAsString());
// ((XSSFSheet) sheet).setActiveCell(cellAddress);
}
我打電話上面的代碼爲setActiveCell(workbook, 0, 0, 0);
。可以確保工作簿不爲空,並且至少包含一張工作表。上面的代碼既不顯示C1單元格(創建的窗格的左上角單元格)也不顯示A1單元格(活動單元格集合)。
更新2:
基於從@AlexRichter答案,下面的代碼工作對我來說:
public void setActiveCell(Workbook workbook, int sheetIndex, int row, int column) {
Sheet sheet = workbook.getSheetAt(sheetIndex);
CellAddress cellAddress = new CellAddress(row, column);
sheet.createFreezePane(2, 0);
((XSSFSheet) sheet).getCTWorksheet().getSheetViews().getSheetViewArray(0).getPane()
.setTopLeftCell("C1");
((XSSFSheet) sheet).getCTWorksheet().getSheetViews().getSheetViewArray(0)
.setTopLeftCell(cellAddress.formatAsString());
}
我認爲,你可以使用相同的sheet.showInPane一個()的方法。試試這個方法,並在這裏檢查這個討論http://apache-poi.1045710.n5.nabble.com/RE-How-to-mandate-showing-the-active-cell-when-the-Excel-file-is -first-opened-td2281035.html – Bhavesh
@yaswanth:'.getPane()。xsetTopLeftCell()。setTopLeftCell(「C1」)'不是我所建議的,也不會編譯。 –
對不起,這是一個錯誤。我更新了代碼 – yaswanth