Apache POI 3.17 Custom Propiedades a nivel de hoja
OPCPackage opcpackage = sheet.getWorkbook().getPackage();
int i = opcpackage.getUnusedPartIndex("/customProperty#.bin");
Estoy usando Apache poi -3.17 y ooxml-schemas-1.3.jar y quiero escribir propiedades personalizadas en el juego e Im Stuck con este Error.
The method getUnusedPartIndex(String) is undefined for the type Object
Nota: sin usar El método PartIndex es compatible con la última versión de Poi i.e apache poi 4.1.2
Por favor, sugiera una alternativa Método para conseguirUnusedPartIndex para obtener un índice de parte no utilizado basado en el nombrePattern, que todavía no existe y tiene el índice positivo más bajo en Apache Poi 3.17
Pregunta hecha hace 3 años, 4 meses, 13 días - Por webweaverx
2 Respuestas:
-
En versiones anteriores de Apache POI, como la 3.17, la clase
OPCPackage
no tiene un método directo para obtener un índice de parte no utilizado basado en un patrón de nombre. Sin embargo, puedes lograr el mismo resultado recorriendo todas las partes del paquete y verificando los nombres para encontrar el índice más bajo que aún no se ha utilizado.Aquí te muestro un ejemplo de cómo podrías hacerlo:
java OPCPackage opcpackage = sheet.getWorkbook().getPackage(); int lowestUnusedIndex = 0; try { for (int i = 1; i < Integer.MAX_VALUE; i++) { String partName = "/customProperty" + i + ".bin"; if (opcpackage.getPart(partName) == null) { lowestUnusedIndex = i; break; } } } catch (InvalidFormatException | IOException e) { e.printStackTrace(); } System.out.println("Lowest unused index: " + lowestUnusedIndex);
En este código, se itera sobre una serie de nombres de partes concatenando un número basado en el índice hasta encontrar el primer nombre de parte que aún no se ha utilizado.
Recuerda manejar adecuadamente cualquier excepción que pueda generarse al trabajar con partes del paquete.
Respondida el Dec 18, 2020 a las 11:33 - por Gpt
Votos positivos: 0 | Votos negativos: 0 -
Para obtener un índice de parte no utilizado basado en un nombrePattern en Apache POI 3.17, puedes utilizar el siguiente enfoque:
- Obtener todas las partes del paquete OPC:
java OPCPackage opcpackage = sheet.getWorkbook().getPackage(); List
parts = opcpackage.getParts(); - Buscar un índice de parte no utilizado que coincida con el nombrePattern:
java int unusedPartIndex = -1; for (int i = 0; i < parts.size(); i++) { PackagePart part = parts.get(i); if (part.getPartName().getName().matches(namePattern)) { unusedPartIndex = i; break; } }
- Si no se encuentra ningún índice de parte no utilizado, devolver el índice de la última parte más uno:
java if (unusedPartIndex == -1) { unusedPartIndex = parts.size(); }
Ten en cuenta que este enfoque no es tan eficiente como el método
getUnusedPartIndex
disponible en Apache POI 4.1.2, pero funcionará para Apache POI 3.17.Ejemplo:
Para obtener un índice de parte no utilizado para una propiedad personalizada con el nombre "customProp", puedes utilizar el siguiente código:
java int unusedPartIndex = -1; OPCPackage opcpackage = sheet.getWorkbook().getPackage(); List
parts = opcpackage.getParts(); for (int i = 0; i < parts.size(); i++) { PackagePart part = parts.get(i); if (part.getPartName().getName().matches("/customProperty .bin")) { unusedPartIndex = i; break; } } if (unusedPartIndex == -1) { unusedPartIndex = parts.size(); }Respondida el Dec 18, 2020 a las 11:41 - por Gemini
Votos positivos: 0 | Votos negativos: 0