मैं जावा और अपाचे पीओआई का उपयोग कर अपने ".xlsx" फ़ाइल में सरल VLookup फॉर्मूला डालने की कोशिश कर रहा हूं।
इस सूत्र में बाहरी संदर्भ है और यह मेरे लिए काम नहीं कर रहा है।जावा पीओआई एक्सएसएसएफ वीएलुकअप फॉर्मूला
cell.setCellType(Cell.CELL_TYPE_FORMULA);
cell.setCellFormula("StringContainingFormula");
:
तो आपको और अधिक जानकारी मैं poi और poi-OOXML संस्करण 3.13 उपयोग कर रहा हूँ देने के लिए और उत्कृष्टता 2007
मैं सेल में सूत्र इस तरह से रखने कर रहा हूँ (जहां सेल एक सेल है) और उसके बाद फॉर्मूला का मूल्यांकन करें, मैंने तीन अलग-अलग तरीकों की कोशिश की है लेकिन कोई भाग्य नहीं है। (डब्ल्यूबी एक्सएसएसएफ वर्कबुक है)।
FormulaEvaluator mainWorkbookEvaluator = wb.getCreationHelper().createFormulaEvaluator();
Map<String,FormulaEvaluator> workbooks = new HashMap<String, FormulaEvaluator>();
workbooks.put("SpreadsheetName.xlsx", mainWorkbookEvaluator);
mainWorkbookEvaluator.setupReferencedWorkbooks(workbooks);
mainWorkbookEvaluator.evaluateAll();
XSSFEvaluationWorkbook.create(wb);
Workbook nwb = wb;
FormulaEvaluator evaluator = wb.getCreationHelper().createFormulaEvaluator();
for (Sheet sheet : nwb) {
for (Row r : sheet) {
for (Cell c : r) {
if (c.getCellType() == Cell.CELL_TYPE_FORMULA) {
try {
//evaluator.evaluateFormulaCell(c);
evaluator.evaluate(c);
} catch (Exception e) {
System.out.println("Error occured in 'EvaluateFormulas' : " + e);
}
}
}
}
}
XSSFFormulaEvaluator.evaluateAllFormulaCells(wb);
समस्या है, यह Excel फ़ाइल को लिखते हैं और फिर यह त्रुटि फेंकता है, जबकि का मूल्यांकन:
java.lang.IllegalArgumentException: Invalid sheetIndex: -1
अब अगर मैं Excel फ़ाइल खोलते हैं, तो यह मुझे चेतावनी देता है:
Automatic update of links has been disabled
मैं सामग्री सक्षम करते हैं, सूत्र ठीक से परिणाम से पता चलता है और मैं सूत्र #N/A
में जिसके परिणामस्वरूप से कुछ भी नहीं करते हैं।
अब अगर मैं इसमें सूत्र के साथ सेल का चयन करता हूं और फॉर्मूला बार पर क्लिक करता हूं और फॉर्मूला से एंटर दबाता हूं तो परिणाम दिखाता है।
अद्यतन:
तो, मैं चेतावनी संदेश एक्सेल विकल्पों में जाने रूप से अक्षम और यह मेरे सेल के अंदर सूत्र देने शुरू कर दिया।
लेकिन, जब मैं
if (cell.getCachedFormulaResultType == Cell.CELL_TYPE_STRING) {
System.out.println("Last evaluated as \"" + cell.getRichStringCellValue() + "\"");
}
का उपयोग कर इसे से परिणाम मूल्य पाने की कोशिश की यह कभी नहीं CELL_TYPE_STRING
के रूप में मेरे getCachedFormulaResultType
दिया, यह हमेशा CELL_TYPE_NUMERIC
लौट आते हैं। यह स्ट्रिंग मान वापस करना चाहिए। मैं यूआरएल और कुछ अन्य मूल्य का विस्तार कर रहा हूं ("|" - "बिल्ली | कुत्ता | पक्षी") से अलग शब्द।
मैं किसी भी मदद/सुझाव की सराहना करता हूं।
शायद सबसे अच्छा [फॉर्मूला मूल्यांकन] जाँच करने के लिए (https: // poi। apache.org/spreadsheet/eval.html) दस्तावेज़ सावधानीपूर्वक। शायद कुछ 'wb.setForceFormulaRecalculation (सत्य) की तरह;' आपकी मदद करेगा? –
इसके अलावा, दस्तावेज़ आपके द्वारा संदर्भित कार्यपत्रकों के लिए 'createFormulaEvaluator' बनाने के लिए कहता है। उदाहरण के लिए, 'workbooks.put ("input.xls", WorkbookFactory.create ("c: \ temp \ input22.xls")। GetCreationHelper()। CreateFormulaEvaluator()); ' –
@ निकोलस, आपकी युक्तियों के लिए बहुत बहुत धन्यवाद , लेकिन मुझे 'wb.setForceFormulaRecalculation (true) के समान कुछ भी नहीं मिला; और मैंने पहले से ही' createFormulaEvaluator 'संदर्भ का प्रयास किया है, लेकिन कोई भाग्य नहीं है। – ManishChristian