我正在尝试使用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文件,请帮忙。
答案 0 :(得分:1)
宣传对答案的评论
有两个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中。