Comment append SharedSsortingngsTable tout en analysant XLSX vers XML en utilisant l'parsingur DOM et Apache POI

Mon code est comme ceci:

public class ReadXlsx { public static void processDoc(Ssortingng path)throws Exception { OPCPackage pkg = OPCPackage.open(path); XSSFReader r = new XSSFReader( pkg ); SharedSsortingngsTable sst = r.getSharedSsortingngsTable(); DOMParser parser = new DOMParser(); InputStream inp = r.getSheet("rId1"); InputSource inpSource = new InputSource(inp); inpSource.setEncoding("UTF-8"); parser.parse(inpSource); Document doc = parser.getDocument(); inp.close(); OutputStream writer = new FileOutputStream(System.getProperty("user.home") + "//Desktop"+"//file.xml"); TransformerFactory transfac = TransformerFactory.newInstance(); Transformer trans = transfac.newTransformer(); trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); trans.setOutputProperty(OutputKeys.INDENT, "yes"); trans.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); //create ssortingng from xml tree StreamResult result = new StreamResult(writer); DOMSource source = new DOMSource(doc); trans.transform(source, result); XmlToJson.Convert(System.getProperty("user.home") + "\\Desktop"+"\\file.xml",System.getProperty("user.home") + "\\Desktop"+"\\Json4.json"); }} 

Le problème est quand je convertissez le file .xlsx dans le file .xml chaque string de la feuille sera transformée en quelque chose comme ça

 <cr="A1" s="43" t="s"><v>93</v></c> 

Cela signifie que la string dans A1 est 94ème string dans sharedSsortingngs.xml (t = sv = 93 signifie que la cellule est une valeur de masortingce de string est 93)

Je peux get le SharedSsortingngsTable mais je ne sais pas comment l'inclure dans le file XML afin qu'il affiche la string à la place de t = sv = 93 comme

 <cr="A1" s="43"><t>This is Ssortingng.</t></c> 

Merci.

Vous devez utiliser la fonction getEntryAt (int) à partir de l'object SharedSsortingngsTable comme suit:

  SharedSsortingngsTable sst = r1.getSharedSsortingngsTable();//r1 being your XSSFReader CTRst st = sst.getEntryAt(k);//k is the index that you have in <v> tag st.getT();//getT() gets your value 

The SharedSsortingngsTable dans sa class est maintenu en tant que ArrayList et HashMap, les deux étant des membres de class privée. L'extrait ci-dessus que j'ai écrit est l'access au membre ArrayList. Lorsque vous créez l'object SharedSsortingngsTable, le file entier SharedSsortingngs xml est chargé en tant que HashMap et ArrayList respectivement. Par conséquent, le file xlsx en streaming possède cette limitation. S'il y a une solution de contournement, j'aimerais savoir que nous ne pouvons pas replace les membres privés (HashMap et ArrayList) de la class SharedSsortingngsTable.