Friday 15 April 2011

Java - Apache POI - Trouble filling rows and cells with loops (Excel) -


वहाँ एक हैशमैप है:

  हैशमैप & lt; स्ट्रिंग, ऐरे लिस्ट & lt; स्ट्रिंग & gt; & gt; मैट्रिक्स = नया हैशमैप & lt; स्ट्रिंग, अर्रेलिस्ट & lt; स्ट्रिंग & gt; & gt; ();   

मुझे इस पद्धति में एक एक्सेल शीट भरना है:

  हैशकी 1 | हैशकी 2 | हैशकी 3 | हैशकी 4 मान 1-1 | मूल्य 2-1 | Value3-1 | Value4-1 मान 1-2 | मूल्य 2-2 | मान 3-2 | मूल्य 4-2 मूल्य 1-3 | मूल्य 2-3 | Value3-3 | Value4-3 मान 1-4 | मूल्य 2-4 | मान 3-4 | मान 4-4 मान 1-5 | मूल्य 2-5 | मान 3-5 | Value4-5   

"हैशकैक्स" "श्रेणियां" हैं, और प्रत्येक कुंजी का अपना ऐरेलिस्ट है ArrayLists के प्रत्येक स्ट्रिंग-तत्व को इसके संवाददाता कुंजी के तहत खींचा जाएगा।

यहां वास्तविक कोड है:

  int keyCell = -2; Int row = 5; पंक्ति की पंक्ति = वर्कशीट। कटरेर (4); पंक्ति मान रो = नल; (नक्शा। प्रविष्टि & lt; स्ट्रिंग, अर्रेलिस्ट & lt; स्ट्रिंग & gt; & gt; ई: मैट्रिक्स। एंटीसेट ()) {keyRow.createCell (keyCell + = 2) .setCellValue (e.getKey ()); के लिए (स्ट्रिंग एस: ई.ए.टी.वैल्यू ()) {यदि ((पंक्ति - 5) & lt; (ई.गास्ट वेल्यू) आकार ())) {valueRow = वर्कशीट.क्रेतेरव (पंक्ति + = 1); valueRow.createCell (keyCell) .setCellValue (रों); } और {valueRow.createCell (keyCell) .setCellValue (s); }}}   

यह वास्तव में काम करता है, इस तथ्य को छोड़कर कि परिणाम इस पैटर्न में जाता है:

  hashkey1 | हैशकी 2 | हैशकी 3 | हैशकी 4 मान 1-1 | | | मान 1-2 | | | मान 1-3 | | | मान 1-4 | | | मान 1-5 | मूल्य 2-5 | मान 3-5 | मान 4-5   

मुझे लगता है कि यह ठीक तरह से काम कर रहा है कि मैं कैसे चाहता हूं, लेकिन प्रत्येक लूप पर कोशिकाओं को मिटा दिया जाता है क्योंकि प्रत्येक रोब पर नई पंक्ति बनाई जाती है। यह एक बहुत ही चुनौतीपूर्ण समस्या है। मुझे इस पर बड़ी मुश्किलें आ रही थी, और अब मैं पूरी तरह से फंस गया हूं। कुछ भी काम नहीं करता है। कोशिकाओं को हमेशा मिट जाता है।

खैर, मुझे आशा है कि यह एक बहुत ज्यादा विषय नहीं है। मैं वाकई किसी भी मदद के लिए आपको धन्यवाद देता हूं।

इनर फॉर लूप में, कुंजी कॉलम में कभी भी परिवर्तन नहीं होता है इसका मतलब है कि आप प्रत्येक बार एक ही सेल मूल्य पर लिख रहे हैं। (मुझे इस बात पर हैरान है कि इस समस्या के कारण कोड काम करता है।)

  के लिए (स्ट्रिंग s: e.getValue ()) {if ((पंक्ति - 5) & lt; (e। GetValue ()। आकार ())) {valueRow = worksheet.createRow (पंक्ति + = 1); valueRow.createCell (keyCell) .setCellValue (रों); } और {valueRow.createCell (keyCell) .setCellValue (s); }}   

पहले तो, मैं इस समस्या को ठीक करता हूं और कुंजी का उपयोग करता हूं ++ अगर वह काम नहीं करता है, तो हर बार जब आप कॉल करते हैं तो कॉल () दर्ज करें और पंक्ति को दिखाकर डीबगिंग जोड़ें। यह दिखाएगा कि अनुक्रमित सही पैटर्न का पालन कर रहे हैं या नहीं। आप पैटर्न चाहते हैं:

  • 0, 0
  • 0, 1
  • ....
  • 0, 4 < / Li>
  • 1, 0
  • आदि

No comments:

Post a Comment