Lire le contenu de la liste déroulante à partir d'Excel en utilisant apache poi

J'ai besoin de créer une liste déroulante (Data Validation) sur une cellule particulière dans une feuille Excel et de les lire.

À l'aide de tutoriels fournis par Apache POI , je peux créer une liste déroulante dans une feuille Excel, mais je dois aussi lire le contenu de la liste déroulante lors de la lecture de cette nouvelle version afin que je puisse faire une baisse similaire -down list sur une interface utilisateur.

  • INSTALL_FAILED_UPDATE_INCOMPATIBLE lorsque j'essaie d'installer le fichier compilé .apk sur l'appareil
  • L'eclipse Android ne crée pas d'activité vierge
  • Google Maps Android API: SupportMapFragment vs MapFragment
  • Types de données utilisés dans SQLite
  • L'envoi du navigateur "Dalvik" en tant qu'agent utilisateur
  • Lecture d'un fichier audio local dans l'application Android Webview
  • Aucune suggestion?

  • Vous recherchez le code source des nouvelles widgets Google Calendar Time et Picker de date
  • Définition de la taille du texte pour Canvas.drawText () en res / values ​​/ dimens.xml
  • Comment créer une application multiple à partir d'une seule application Android avec différents contenus
  • Comment transformer une image de côté ou à l'envers?
  • Mise à l'échelle Android des images pour filtrer la densité
  • Open Source Speech Recognition Software en Java
  • 2 Solutions collect form web for “Lire le contenu de la liste déroulante à partir d'Excel en utilisant apache poi”

    DataValidation est stocké même dans le classeur HSSF, mais il est dans la Internal Sheet de la bibliothèque et, puisqu'il est private , l'accès n'est pas donné au programmeur d'application. J'ai utilisé Java Reflection API pour accéder à la feuille interne. Ce code fonctionne bien pour moi.

     private ArrayList<DVRecord> init(FileInputStream fis) throws InvalidFormatException, IOException, NoSuchFieldException, IllegalArgumentException, IllegalAccessException { HSSFWorkbook hWorkbook = (HSSFWorkbook) WorkbookFactory.create(fis); HSSFSheet hSheet = hWorkbook.getSheetAt(1); // sheet on which you want to read data validation Class c = org.apache.poi.hssf.usermodel.HSSFSheet.class; Field field = c.getDeclaredField("_sheet"); field.setAccessible(true); Object internalSheet = field.get(hSheet); InternalSheet is = (InternalSheet) internalSheet; DataValidityTable dvTable = is.getOrCreateDataValidityTable(); Class c2 = org.apache.poi.hssf.record.aggregates.DataValidityTable.class; Field field2 = c2.getDeclaredField("_validationList"); field2.setAccessible(true); Object records = field2.get(dvTable); ArrayList<DVRecord> dvRecords = (ArrayList<DVRecord>) records; return dvRecords; } 

    Je ne peux pas trouver de mécanisme dans HSSF pour récupérer DataValidation s de la HSSFSheet . Donc, si vous disposez d'un fichier .xls, vous avez de la chance.

    Toutefois, si vous avez un fichier .xlsx, XSSFSheet fournit une méthode pour récupérer une liste de toutes les XSSFDataValidation s sur la feuille: getDataValidations , qui renvoie une List<XSSFDataValidation> .

    Vous devrez les boucler sur tous, en appelant regions() pour examiner CellRangeAddressList pour voir si cela s'applique à votre cellule. Si c'est le cas, appelez getValidationConstraint pour accéder à l'objet DataValidationConstraint , sur lequel vous pouvez appeler getExplicitListValues pour récupérer le réseau de chaînes.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.