我正在尝试使用 primefaces 和 java 使用 apache POI 在现有 Excel 工作簿中创建一个新工作表,但到目前为止尚未成功。谁能告诉我它是如何完成的? 我可以用单张纸来做
我编写的以下代码用于在一个 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>
是否可以使用 primefaces 将数据导出到多个工作表。 否则请告诉我如何使用 servlet 来完成此操作。
最佳答案
而不是
HSSFSheet 表 = wb.getSheetAt(0);
HSSFSheetsheet = wb.createSheet();
基本上你想要的是 createSheet -> createRow -> createCell -> serCellValue
Javadocs 非常好
http://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/package-summary.html
关于java - 如何使用 apache POI 和 PrimeFaces 将新工作表添加到现有 Excel 工作簿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19900679/