apache POI范围内的自动过滤器无法正常工作

时间:2013-05-10 07:12:53

标签: java apache apache-poi

有没有人知道我试图为使用apache POI生成的报告设置以下过滤器可能出现什么问题?

我正在使用此代码:

sheet.setAutoFilter(CellRangeAddress.valueOf("A4:A6"));

要获得此结果:

Filters applied

但是,当我点击箭头过滤我的结果时,我也会在下拉列表中获得值“average”作为可能的结果。

Filter list

这里有什么我想念的吗?

1 个答案:

答案 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();
    }
}