我使用Apache POI生成了一个excel(.xls)文档。我使用HSSF课程。
有人可以就以下问题向我提出建议:
我们如何保持diaplay部分中的列标题不变并仅在数据部分滚动?
也就是说,当excel文件向下滚动时,我希望标题列始终可见。
谢谢, 大卫
答案 0 :(得分:4)
一个选项可能是来自timboo的重复行建议。不确定您的确切需求,但您可能想要一个冻结窗格。
要让第一行始终显示在屏幕上,不要滚动,请执行以下操作:
Workbook wb = new HSSFWorkbook();
Sheet sheet1 = wb.createSheet("No Scroll");
sheet1.createFreezepane(0,1);
您可以冻结行,列或两者,有关详细信息,请参阅this javadoc或this
答案 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);`