有没有人知道我试图为使用apache POI生成的报告设置以下过滤器可能出现什么问题?
我正在使用此代码:
sheet.setAutoFilter(CellRangeAddress.valueOf("A4:A6"));
要获得此结果:
但是,当我点击箭头过滤我的结果时,我也会在下拉列表中获得值“average”作为可能的结果。
这里有什么我想念的吗?
答案 0 :(得分:2)
只需在数据区和页脚行之间添加一个空行。 数据区域可以由空行和列/标题限制。
虽然您已选择A4:A6
,但只有A4
被标记为自动过滤器...我不确定,但我认为,您只能通过VBA实现水平自动过滤。因此,setAutoFilter
应该类似A4:B4
,因为您只标记标题而不是数据区。
(使用POI 3.9,Libre Office 4.0测试)
import java.io.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.ss.util.*;
public class Autofilter {
public static void main(String[] args) throws Exception {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet();
sheet.createRow(3).createCell(0).setCellValue("Protocol Number");
sheet.createRow(4).createCell(0).setCellValue("DEMONNUMBER1");
sheet.createRow(5).createCell(0).setCellValue("DEMONNUMBER2");
sheet.createRow(6).setZeroHeight(true);
sheet.createRow(7).createCell(0).setCellValue("Average");
sheet.setAutoFilter(CellRangeAddress.valueOf("A4:B4"));
FileOutputStream fos = new FileOutputStream("autofilter.xls");
wb.write(fos);
fos.close();
}
}