使用Apache POI生成Excel

我使用Apache POI生成了一个excel(.xls)文档。 我使用HSSF类。

有人可以在下面的问题上给我build议:

我们怎样才能保持在非重复部分的列标题不变,只有在数据部分滚动?

也就是说,我希望当excel文件向下滚动时,标题列总是可见的。

谢谢,大卫

一个选项可能是Timboo的重复行build议。 不确定您的具体需求,但可能您可能需要冻结窗格。

要在屏幕上始终显示第一行,不要滚动,您应该:

Workbook wb = new HSSFWorkbook(); Sheet sheet1 = wb.createSheet("No Scroll"); sheet1.createFreezepane(0,1); 

你可以冻结行,列或两者,看到这个javadoc或这个细节

查看Apache POI繁忙开发人员指南:

通过使用HSSFWorkbook类中的setRepeatingRowsAndColumns()函数,可以在打印输出中设置重复的行和列。

该function包含5个参数。 第一个参数是表格的索引(0 =第一个表格)。 第二个和第三个参数指定要重新分配的列的范围。 要停止重复传入的列作为开始和结束列。 第四个和第五个参数指定要重复的行的范围。 要停止重复传入的列作为开始和结束行。

 Workbook wb = new HSSFWorkbook(); Sheet sheet1 = wb.createSheet("new sheet"); Sheet sheet2 = wb.createSheet("second sheet"); // Set the columns to repeat from column 0 to 2 on the first sheet wb.setRepeatingRowsAndColumns(0,0,2,-1,-1); // Set the the repeating rows and columns on the second sheet. wb.setRepeatingRowsAndColumns(1,4,5,1,2); FileOutputStream fileOut = new FileOutputStream("workbook.xls"); wb.write(fileOut); fileOut.close(); 

这应该对你有所帮助 我search了几天,发现了这一点。 这解决了我的问题。

  `Workbook wb = new XSSFWorkbook(); CreationHelper createHelper = wb.getCreationHelper(); Sheet sheet1 = wb.createSheet("new sheet"); Row row = sheet1.createRow((short) 0); // Create a cell and put a value in it. row.createCell(0).setCellValue( createHelper.createRichTextString("Freeze")); for (int i = 1; i < 20; i++) { row = sheet1.createRow((short) i); row .createCell(0) .setCellValue( createHelper .createRichTextString("This is the Moving Row")); } // Freeze just one row sheet1.createFreezePane(0, 1, 0, 1);`