2011-01-04 15 views
5

मैं चादर की सामग्री को खोज करने के लिए दिए गए उदाहरण कोड का उपयोग किया गया है:Apache POI का उपयोग कर किसी विशिष्ट दिनांक के लिए Excel शीट को कैसे खोजें?

Sheet sheet1 = wb.getSheetAt(0); 
for (Row row : sheet1) { 
for (Cell cell : row) { 
    CellReference cellRef = new CellReference(row.getRowNum(), cell.getCellNum()); 
    System.out.print(cellRef.formatAsString()); 
    System.out.print(" - "); 

    switch(cell.getCellType()) { 
     case Cell.CELL_TYPE_STRING: 
     System.out.println(cell.getRichStringCellValue().getString()); 
     break; 
     case Cell.CELL_TYPE_NUMERIC: 
     if(DateUtil.isCellDateFormatted(cell)) { 
      System.out.println(cell.getDateCellValue()); 
     } else { 
      System.out.println(cell.getNumericCellValue()); 
     } 
     break; 
     case Cell.CELL_TYPE_BOOLEAN: 
     System.out.println(cell.getBooleanCellValue()); 
     break; 
     case Cell.CELL_TYPE_FORMULA: 
     System.out.println(cell.getCellFormula()); 
     break; 
     default: 
     System.out.println(); 
    } 
} 

}

लेकिन एक तरह से ठीक से दिनांक दिए गए दिनांक के साथ चादर से निकाला तुलना करने के लिए नहीं मिल रहा। मैंने डेटा सत्यापन का उपयोग करने की कोशिश की है और एक स्ट्रिंग को तारीख स्वरूपित कर रहा है और आगे सशर्त बयान भी शामिल है लेकिन कुछ भी काम नहीं किया है।

अपेक्षाकृत सरल समस्या और आवश्यक है, लेकिन अभी तक इसे ठीक करने में सक्षम है?

किसी भी मदद की सराहना की जाएगी!

उत्तर

3

एक्सेल स्टोर्स को फ्लोटिंग पॉइंट दशमलव के रूप में संग्रहीत करता है - जाहिर है - जावा हैंडल तिथियों के तरीके से भिन्न (long मान)।

अपाचे पीओआई में जावा और एक्सेल के बीच दिनांक रूपांतरण करने के लिए एक सहायक वर्ग है: DateUtil। इससे मदद मिलनी चाहिए (अगर मुझे आपकी समस्या सही हो गई है)।

+0

DateUtil के साथ चारों ओर खेलने में कामयाब रहे और तार और getExcelDate को बदलने समाधान के कुछ प्रकार है, मदद के लिए धन्यवाद – Jsk

0

मैंने देखा कि यदि आप शीट से कोई संख्या पढ़ते हैं, भले ही आप इसे स्ट्रिंग के रूप में पढ़ लें, तो आपको संख्या दशमलव के रूप में मिल जाएगी।

मैं क्या करता हूं, मैं कोशिकाओं में सभी डेटा अंडरस्कोर '_' से शुरू करता हूं, इसलिए यदि मैं स्ट्रिंग के रूप में किसी भी सेल से डेटा पढ़ने की कोशिश करता हूं, तो मुझे दशमलव या कुछ भी नहीं मिलता है।

String cellValue = cell.getValueAsString(); // assuming the cell value is "_01/01/2011" 
cellValue = cellValue.substring(1);// this will ignore first character, the '_' 
0

उपयोग DataFormatter वर्ग (Apache POI):

DataFormatter df = new DataFormatter(); 
String cellValue = df.formatCellValue(Cell cell); 
संबंधित मुद्दे