0

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>

Excelシートにインポートされたデータテーブル

プライムフェイスを使用して複数のシートにデータをエクスポートすることは可能ですか? それ以外の場合は、サーブレットを使用してそれを行う方法を教えてください。

4

1 に答える 1

3

それ以外の

HSSFSheet sheet = wb.getSheetAt(0);

HSSFSheet sheet = wb.createSheet();

基本的にあなたが望むのは、createSheet -> createRow -> createCell -> serCellValue です

Javadocは優れています

http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/package-summary.html

于 2013-11-11T07:27:59.307 に答える