使用Apache POI生成Excel

时间:2011-08-01 07:13:24

标签: java excel apache-poi

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

有人可以就以下问题向我提出建议:

我们如何保持diaplay部分中的列标题不变并仅在数据部分滚动?

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

谢谢, 大卫

3 个答案:

答案 0 :(得分:4)

一个选项可能是来自timboo的重复行建议。不确定您的确切需求,但您可能想要一个冻结窗格。

要让第一行始终显示在屏幕上,不要滚动,请执行以下操作:

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

您可以冻结行,列或两者,有关详细信息,请参阅this javadocthis

答案 1 :(得分:2)

查看Apache POI Busy Developers Guide:

  

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

     

此功能包含5个参数。第一个参数是索引   到工作表(0 =第一张)。第二和第三个参数   指定要撤消的列的范围。要停止列   重复传入-1作为开始和结束列。第四和第五   参数指定要重复的行的范围。停止了   重复传递的列为-1作为起始行和结束行。

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();

答案 2 :(得分:0)

这应该对你有所帮助。我搜索了几天,发现了这个。这解决了我的问题。

 `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);`