Autofilter擅长使用java poi

时间:2017-03-29 09:56:21

标签: java apache-poi autofilter

我正在尝试使用POI类过滤Excel工作表,并在我使用它时设置过滤器:

CTAutoFilter sheetFilter = my_sheet.getCTWorksheet()。getAutoFilter();

CTFilterColumn myFilterColumn = sheetFilter.insertNewFilterColumn(0);

在“CTFilterColumn”上得到以下提到的错误。 此行有多个标记      - 来自CTAutoFilter类型的方法insertNewFilterColumn(int)引用      缺少类型CTFilterColumn      - 类型org.openxmlformats.schemas.spreadsheetml.x2006.main.CTFilterColumn      无法解决。它是从所需的.class文件间接引用的      - CTFilterColumn无法解析为类型

整个代码:

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.util.*;
import org.apache.poi.ss.usermodel.ComparisonOperator;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAutoFilter;


public class Test1 {

    public static void main(String[] args) {
        try {
            //To read values and enable auto filter
            FileInputStream fileIn = new FileInputStream("./XMLs/Test001.xlsx");

            XSSFWorkbook my_workbook = new XSSFWorkbook(fileIn);

            XSSFSheet my_sheet = my_workbook.getSheet("Sheet1");
            CTAutoFilter sheetFilter = my_sheet.getCTWorksheet().getAutoFilter();

            CTFilterColumn myFilterColumn = sheetFilter.insertNewFilterColumn(0);

而不是这个“import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTAutoFilter;”我尝试导入org.openxmlformats.schemas.spreadsheetml.x2006.main。*;

但CTFilterColumn甚至没有在建议中列出。请帮忙。

是否因为一些丢失的jar文件,请帮忙。

1 个答案:

答案 0 :(得分:1)

宣传对答案的评论

这是covered in this Apache POI FAQ Entry - I'm using the poi-ooxml-schemas jar, but my code is failing with "java.lang.NoClassDefFoundError: org/openxmlformats/schemas/something"。关键部分是:

  

有两个jar文件可用,如组件概述部分所述。所有模式的完整jar都是ooxml-schemas-1.3.jar,目前大约是15mb。较小的poi-ooxml-schemas jar只有4mb左右。后一个jar文件只包含通常使用的部分。

     

许多用户选择使用较小的poi-ooxml-schemas jar来节省空间。但是,poi-ooxml-schemas jar只包含通常使用的XSD和类,如单元测试所标识的那样。每隔一段时间,您可能会尝试使用最小的poi-ooxml-schemas jar中不包含的部分文件格式。在这种情况下,您应该切换到完整的ooxml-schemas-1.3.jar。从长远来看,您可能还希望提交一个新的单元测试,该测试使用XSD的额外部分,以便将来的poi-ooxml-schemas jar包含它们。

因此,短期内您需要将小poi-ooxml-schemas jar换成完整的ooxml-schemas-1.3 jar。从长远来看,如果您向使用这些额外类的Apache POI提交单元测试,它将被包含在未来的小模式jar中。

完整架构are covered here on the Apache POI site

的Maven工件详细信息