0

forフィルター基準を設定することはできますが、ループの助けを借りています。次のコードは、Excel シートの各行と各列を移動し、フィルター操作を実行します。ループに陥ることなく、特定の条件を直接有効にする方法はありますか?

/* Create Workbook and Worksheet  */
                FileInputStream in = new FileInputStream(new File("D:\\PNR_AUTOMATION\\match.xls"));
                HSSFWorkbook workbook = new HSSFWorkbook(in);
                HSSFSheet sheet = workbook.getSheetAt(0);

                /*Add filter on the top row*/
                AutoFilter filter = sheet.setAutoFilter(CellRangeAddress.valueOf("A1:B1"));

                /*Create list of items that has be filtered*/
                List<String> list = new ArrayList<String>();
                 list.add("a");
                 HSSFRow r1;
                 /*Loop through Rows and Apply Filter */
                 for(Row r : sheet) {
                         for (Cell c : r) {
                                 if (c.getColumnIndex()==0  && (!list.contains(c.getStringCellValue()))) {
                                         r1=(HSSFRow) c.getRow();
                                         if (r1.getRowNum()!=0) {  
                                             /*Ignore top row  */
                                                 r1.setZeroHeight(true); }
                                 }                               
                         }
                 }
                 FileOutputStream out = new FileOutputStream(
                          new File("D:\\PNR_AUTOMATION\\match.xls"));
                 workbook.write(out);
                 out.close();
4

0 に答える 0