2013-07-29 8 views
9

मैं एक्सेल शीट में कोशिकाओं को बदलने के लिए अपाचे पीओआई का उपयोग कर रहा हूं। मूल्यों को बदलने के बाद, कोशिकाओं के अनुरूप सूत्रों वाले कक्ष जो अद्यतन किए गए हैं वे अद्यतन नहीं कर रहे हैं।एक्सेल फॉर्मूला सेल अपडेट नहीं कर रहा

जब मैं एक्सेल में जाता हूं और सूत्र के साथ सेल पर क्लिक करता हूं, और उसके बाद फ़ंक्शन बार, सूत्र अपडेट पर क्लिक करता हूं।

मेरे पास स्वचालित रूप से अपडेट करने के लिए गणना विकल्प सेट हैं।

त्वरित उदाहरण।

पंक्ति:

[A2 + A3] [1] [2]

A1 यहां के बराबर होगा 3

जब मैं उपयोग करके इसे बदल POI:

[A2 + A3] [2] [5]

ए 1 अभी भी 3 के बराबर है जब तक कि मैं उस सेल पर क्लिक नहीं करता।

कार्यपुस्तिका या शीट को ताज़ा करना भी काम नहीं करता है। क्या यह एक्सेल या पीओआई के साथ एक समस्या है? क्या कोई कामकाज के बारे में सोच सकता है?

+0

आपका प्रश्न स्पष्ट नहीं है। Excel में वर्कशीट खोलने और बंद करने सहित, संचालन के सटीक अनुक्रम का वर्णन करें। क्या आप निम्नलिखित कदम उठाते हैं? 1) वर्कशीट बनाएं; 2) एक्सेल बंद करें; 3) अपना जावा प्रोग्राम चलाएं; 4) एक्सेल में वर्कशीट को दोबारा खोलें? यदि नहीं, तो आप जो भी करते हैं उसका वर्णन करें। –

+2

दूसरों ने इस तरह के विवरण के बिना उत्तर दिया, और इस तरह के वर्णन इस स्थिति में थोड़ा अप्रासंगिक है। – PandaBearSoup

उत्तर

20

आप XSSF कार्यपुस्तिका का उपयोग कर रहे हैं, तो आप सभी सूत्र कोशिकाओं इस प्रकार फिर से मूल्यांकन कर सकते हैं या, इस बात पर निर्भर करता है कि आप कैसे सेट अप कर रहे हैं और आप विशेष रूप से पूरा करने का प्रयास कर रहे हैं, तो आपको अपना समाधान here

+0

हां, जब मैंने इस मुद्दे को देखा तो यह एक कामकाज के रूप में उपयोग किया जाता है।मैं और सोच रहा हूं कि क्यों एक्सेल कोशिकाओं को स्वचालित रूप से अपडेट नहीं करता है, न कि जब मैं उन पर क्लिक करता हूं। कार्यपुस्तिका को ताज़ा करना भी काम करना चाहिए। एक बग की तरह लगता है। मैं इस जवाब को स्वीकार करूंगा क्योंकि यह तकनीकी समस्या को मूल रूप से हल करता है। – PandaBearSoup

+1

@ पांडाबियर सूप [क्यों फॉर्मूला का मूल्यांकन करें] (http://poi.apache.org/spreadsheet/eval.html#WhyEvaluate) अपाचे पीओआई दस्तावेज का खंड बताता है कि आपको ऐसा करने की आवश्यकता क्यों है, मैं सुझाव दूंगा कि आप इसे पढ़ लें – Gagravarr

2

आपको स्पष्ट रूप से एक पुनर्मूल्यांकन ट्रिगर करना होगा। फॉर्मूलास अनुभाग here का पुनर्मूल्यांकन देखें कि & यह कैसे करें।

XSSFFormulaEvaluator.evaluateAllFormulaCells(workbook) 

ऐसा ही एक एपीआई मौजूद है आप एक HSSF कार्यपुस्तिका उपयोग कर रहे हैं:

HSSFFormulaEvaluator.evaluateAllFormulaCells(workbook) 

9

यदि आपकी शीट में कुछ है कहते हैं A3=sum(A1:A2) के लिए सूत्र गणना की जाती है और यह A1=5, A2 =4. के साथ ठीक काम कर रहा है अब अगर 2

तरह

sh.getRow(0).getCell(0).setCellValue(2); // सेट ए 1 = 2 साथ ए 2 का मूल्य बदल और लिखने कार्रवाई करने, यह अभी भी दिखाई दे रहा है 9 ए 3 के मान की जाँच यह गलत लगता है लेकिन actully नहीं। मुद्दा यह है कि एक्सेल पहले गणना किए गए परिणामों को कैश करता है और आपको उन्हें अद्यतन करने के लिए पुनर्मूल्यांकन को ट्रिगर करने की आवश्यकता होती है।

wb.getCreationHelper().createFormulaEvaluator().evaluateAll(); या

wb.setForceFormulaRecalculation(true); और फिर ऑपरेशन लिखें प्रदर्शन के साथ। यह आपको सही परिणाम देगा। विवरण check here

+1

नाइस कॉपी पेस्ट जॉब। –

+0

मेरे पास उपर्युक्त समाधान के लिए टिप्पणी पोस्ट करने के लिए पर्याप्त प्रतिष्ठा नहीं है। तो मैंने समाधान चिपकाया है। – nilamber

+0

बहुत धन्यवाद !!! wb.setForceFormulaRecalculation (सही); => मेरे लिए एक आकर्षण की तरह काम किया! –

संबंधित मुद्दे