Primefaces と Java を使用して Apache POI を使用して、既存の Excel ワークブックに新しいシートを作成しようとしていますが、これまでのところ成功していません。誰がそれがどのように行われるか教えてもらえますか? 1枚でもできます
以下のコードは、1 つの xls ファイルに複数のシートを作成するために作成したもので、65535 を超える行がないという条件を指定して、新しいシートを作成して反復しましたが、エラーが表示されています
警告: 無効な行番号 (65536) が許容範囲外 (0..65535) java.lang.IllegalArgumentException: 無効な行番号 (65536) が許容範囲外 (0..65535)
私のコードは
public void postProcessXLS(Object document) {
HSSFWorkbook wb = (HSSFWorkbook) document;
HSSFSheet sheet = wb.getSheetAt(0);
HSSFFont font = wb.createFont();
font.setFontName(HSSFFont.FONT_ARIAL);
Iterator rowIterator = sheet.rowIterator();
HSSFCellStyle cellStyle = wb.createCellStyle();
cellStyle.setWrapText(false);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_GENERAL);
cellStyle.setFont(font);
System.out.println("Row number:"+sheet.getLastRowNum());
while (rowIterator.hasNext())
{
System.out.println("Row number:"+sheet.getLastRowNum());
//sheet.rowIterator().next().getRowNum();
if(sheet.getLastRowNum() >= 65535)
{
String sheetName = "";
for(int i=0;i<searchResults.size();i++)
{
sheetName = "Document-" + i;
HSSFSheet mySheet = wb.createSheet(sheetName);
HSSFRow hssfRow = (HSSFRow) rowIterator.next();
Iterator iterator = hssfRow.cellIterator();
while (iterator.hasNext())
{
HSSFCell hssfCell = (HSSFCell) iterator.next();
hssfCell.setCellStyle(cellStyle);
}
}
}
}
}
そして私のxhtmlで
<h:commandLink>
<p:graphicImage value="resources/images/excel.png" />
<p:dataExporter type="xls" target="nmeadata"
postProcessor="#{decodeNMEAMessageAction.postProcessNmeaXLS}"
fileName="decoded_all_nmeadata" />
</h:commandLink>
<h:commandLink>
<p:graphicImage value="resources/images/excel.png" />
<p:dataExporter type="xls" target="nmeadata"
postProcessor="#{decodeNMEAMessageAction.postProcessNmeaXLS}"
fileName="decoded_page_nmeadata" pageOnly="true" />
</h:commandLink>
プライムフェイスを使用して複数のシートにデータをエクスポートすることは可能ですか? それ以外の場合は、サーブレットを使用してそれを行う方法を教えてください。