0

excel特定の列のセル値に基づいて行を取得する必要があるシートがあります。たとえばcityemployee_name という名前の列があります。Java コードを使用して値を提供し、指定された列にcityその値を持つすべての行をフェッチする必要があります。city列名は固定されます。

Example:
City    Employee_Name Age
Vegas   Tom           23
Vegas   Ron           43
Vegas   Sam           19
Delhi   Rohit         32
Delhi   Ram           28
Jaipur  Ankit         31

したがって、セルの値を Java コードから Vegas として指定すると、行 1、2、および 3 が取得されます。

4

2 に答える 2

2

次のメソッドを使用できます。「シート」は検索を実行する必要があるシート、「colName」は列の名前です。要件に応じて修正されます。「textToFind」は、colName 列で検索する必要があるテキストです。

public static XSSFRow test(XSSFSheet sheet, String colName, String textToFind){
    int colIndex=0;
    for (int colNum = 0; colNum<=sheet.getRow(0).getLastCellNum();colNum++){
        if (sheet.getRow(0).getCell(colNum).toString().equalsIgnoreCase(colName)){
            colIndex = colNum;
            break;
        }
    }
    for (int RowNum = 0; RowNum<sheet.getLastRowNum();RowNum++){
        if(sheet.getRow(RowNum).getCell(colIndex).toString().equalsIgnoreCase(textToFind)){
            return sheet.getRow(RowNum);
        }
    }
    System.out.println("No any row found that contains "+textToFind);
    return null;
}
于 2013-06-24T17:47:19.397 に答える
1
  1. これをウルプロジェクトpoi-2.5.1.jarのlibフォルダーに入れます
  2. このメソッドを struts アクションで使用してみてください。それ以外の場合は、単純なクラスで単純に使用して、メソッド引数から HttpSession パラメータを回避/削除できます
  3. void uploadBulkQuestions(ExcelUploadForm excelUploadForm,String filePath,HttpSession session) は SQLException をスローします//パラメータで ExcelUploadForm obj を無視できます { ExcelForm excelForm=null; /** * //ExcelForm はセッターとゲッターを持つ単純な pojo です * *public class ExcelForm extends ActionForm { *String city; *文字列従業員名; *整数年齢; * //上記の変数のセッターとゲッター。* } */ short CityPosition=0; 短い Employee_NamePosition=1; 短い AgePosition=2; 接続 con=null; ArrayList invalidFields=新しい ArrayList(); ArrayList validFields=新しい ArrayList(); boolean bulkUploadFlag=true;

    try
    {
        FileInputStream fs =new FileInputStream(filePath+"\\"+excelUploadForm.getExcelFile().getFileName());//here you can give ur ExcelFile Path{like--"D:\ExcelFiles\sample.xls"}(excelUploadForm in method parameter is an another form which pics a file through browse(i.e.,File Upload))) 
    
        HSSFWorkbook wb = new HSSFWorkbook(fs);
        for (int k = 0; k < wb.getNumberOfSheets(); k++)
        {
            HSSFSheet sheet = wb.getSheetAt(k);
            int rows  = sheet.getPhysicalNumberOfRows();
            HSSFRow firstRow   = sheet.getRow(0);
            int totalCells = firstRow.getPhysicalNumberOfCells(); 
            for(short i=0;i<totalCells;i++)
            {
                HSSFCell firstCell;
                firstCell=firstRow.getCell(i);
                     if(firstCell.getStringCellValue().trim().equalsIgnoreCase("City"))
                    {CityPosition=i;System.out.println("HSSFCellqidpos"+City);}
                else if(firstCell.getStringCellValue().trim().equalsIgnoreCase("Employee_Name"))
                    Employee_NamePosition=i;
                else if(firstCell.getStringCellValue().trim().equalsIgnoreCase("Age"))
                    AgePosition=i;
            }
    
            for (int r = 1; r < rows; r++)
            {
                excelForm = new ExcelForm();
                HSSFRow row   = sheet.getRow(r);
                HSSFCell cell;  
                if(CityPosition>=0)
                {
                    cell= row.getCell(CityPosition);
                    try{
                    excelForm.setCity(cell.getStringCellValue());
                    System.out.println("Check the Data of city"+excelForm.getCity());
                }catch(NullPointerException nullPointerException){
                    nullPointerException.printStackTrace();
                }
                }
    
                if(Employee_NamePosition>0)
                {
                    cell= row.getCell(Employee_NamePosition);
                    try{
                    excelForm.setEmployeeName(cell.getStringCellValue());
                }catch(NullPointerException nullPointerException){
                    nullPointerException.printStackTrace();
                }
                }
    
                if(AgePosition>0)
                {
                    cell= row.getCell(AgePosition);
                    try{
                    excelForm.setAge((int)cell.getNumericCellValue());
                }catch(NullPointerException nullPointerException){
                    nullPointerException.printStackTrace();
                }
                }
    
                //Validating Excel Data
                if(excelForm.getCity()==null || excelForm.getEmployeeName()==null || excelForm.getAge() < 0)
                {
                    System.out.println("inside invalidFields.........");
                    System.out.println(excelForm);
                    invalidFields.add(excelForm);
                    bulkUploadFlag=false;
                }
                else
                {   
                System.out.println("inside validQue.........");
                System.out.println(excelForm);  
                validFields.add(excelForm);
                }
    
            }
    
    
    
        }
    
    
    
    
        //Transaction Management to make sure all the validFields ArrayList obj data is inserted
    
        if(bulkUploadFlag)
        {
            con.setAutoCommit(false);
    
            try
            {
                //fetch data from validFields Array List Using iterator and insert into DB if u wish to do so...
                Iterator fieldsIterator=  validFields.iterator();
                excelForm =null;
                while(questionIterator.hasNext())
                    {
    
                    excelForm=(excelForm)fieldsIterator.next();                     
                        //storing in Questions DB table
                        PreparedStatement psFields = con.prepareStatement("........");//write ur query to insert
                        psFields.executeUpdate();
    
            }
    
            // If there is no error.
            con.commit();
            session.setAttribute("ValidFields", validFields);
    
            }
            catch(SQLException se)
            {
                // If there is any error.
                 con.rollback();
                 se.printStackTrace();
                 session.setAttribute("BulkUploadError","No Data Uploded due to Some Errors in Excel File");     
            }
        }
        else
        {
            session.setAttribute("InvalidFields",invalidFields);
    
        }
    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    finally
    {
        con.close();
    }
    
    return null;
    

    }

于 2013-06-15T07:03:30.337 に答える