Java 如何使用apache POI和PrimeFaces将新工作表添加到现有excel工作簿

Java 如何使用apache POI和PrimeFaces将新工作表添加到现有excel工作簿,java,jsf,primefaces,apache-poi,Java,Jsf,Primefaces,Apache Poi,我正在尝试使用ApachePOI,使用primefaces和java在现有excel工作簿中创建一个新工作表,但到目前为止没有成功。谁能告诉我是怎么做的吗? 我能用一张纸做这件事 下面是我为在一个xls文件中创建多个工作表而编写的代码,其中我给出了一个条件,即它没有大于65535的行创建新工作表并对其进行迭代,但它显示了错误 警告:无效行号(65536)超出允许范围(0..65535) java.lang.IllegalArgumentException:超出允许范围(0..65535)的无效行

我正在尝试使用ApachePOI,使用primefaces和java在现有excel工作簿中创建一个新工作表,但到目前为止没有成功。谁能告诉我是怎么做的吗? 我能用一张纸做这件事

下面是我为在一个xls文件中创建多个工作表而编写的代码,其中我给出了一个条件,即它没有大于65535的行创建新工作表并对其进行迭代,但它显示了错误

警告:无效行号(65536)超出允许范围(0..65535) java.lang.IllegalArgumentException:超出允许范围(0..65535)的无效行号(65536)

我的代码是

 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);
                     }
                 }
             }
        }
  } 
public void后处理xls(对象文档){
HSSF工作手册wb=(HSSF工作手册)文件;
HSSFSheet sheet=wb.getSheetAt(0);
hssfont font=wb.createFont();
font.setFontName(hssfont.font_ARIAL);
迭代器rowIterator=sheet.rowIterator();
HSSFCellStyle cellStyle=wb.createCellStyle();
cellStyle.setWrapText(false);
cellStyle.setAlignment(HSSFCellStyle.ALIGN_常规);
cellStyle.setFont(字体);
System.out.println(“行号:+sheet.getLastRowNum());
while(roweiterator.hasNext())
{
System.out.println(“行号:+sheet.getLastRowNum());
//sheet.rowIterator().next().getRowNum();
如果(sheet.getLastRowNum()>=65535)
{
字符串sheetName=“”;
对于(int i=0;i而不是

HSSFSheet sheet=wb.getSheetAt(0);

HSSFSheet sheet=wb.createSheet();

基本上,您需要的是创建Sheet->createRow->createCell->serCellValue

Javadocs非常优秀

而不是

HSSFSheet sheet=wb.getSheetAt(0);

HSSFSheet sheet=wb.createSheet();

基本上,您需要的是创建Sheet->createRow->createCell->serCellValue

Javadocs非常优秀

而不是

HSSFSheet sheet=wb.getSheetAt(0);

HSSFSheet sheet=wb.createSheet();

基本上,您需要的是创建Sheet->createRow->createCell->serCellValue

Javadocs非常优秀

而不是

HSSFSheet sheet=wb.getSheetAt(0);

HSSFSheet sheet=wb.createSheet();

基本上,您需要的是创建Sheet->createRow->createCell->serCellValue

Javadocs非常优秀



与primefaces无关,是吗?@user2310289仅与primefaces相关,不是吗?@user2310289仅与primefaces相关,不是吗?@user2310289仅与primefaces相关,不是吗?@user2310289仅与primefaces相关,它正在创建图纸,但不是wr再次写入itand-
sheet.createRow()
-您需要创建新对象。实际上,我想根据IIMWV、AVIDO等类型将消息写入sheet。请告诉我是如何完成的。它正在创建工作表,但没有再次写入itand-
sheet.createRow()
-您需要创建新对象。实际上,我想根据IIMWV、AVIDO等类型将消息写入工作表。请告诉我是如何完成的。它正在创建工作表,但没有再次写入工作表-
sheet.createRow()
-您需要创建新对象。实际上,我想根据IIMWV、AVIDO等类型将消息写入工作表。请告诉我是如何完成的。它正在创建工作表,但没有再次写入工作表-
sheet.createRow()
-您需要创建新对象。实际上,我想根据IIMWV、AVIDO等类型将消息写入工作表。您能告诉我是如何完成的吗。
            <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>