निम्नलिखित कोड का उपयोग करना, सेल मूल्य मेरी एक्सेल स्प्रेडशीट में किए गए परिवर्तनों को सहेजा नहीं हैं:Apache POI OPCPackage क्यों बंद नहीं होगा() विधि लिखने योग्य फ़ाइल खोलने के लिए सामग्री को सहेज/लिखती है?
OPCPackage pkg = OPCPackage.open(inputFile);
XSSFWorkbook wb = new XSSFWorkbook(pkg);
ModifyWorkbook();
pkg.close();
निम्नलिखित एक समाधान मैंने लिखा है, लेकिन मुझे समझ नहीं आता क्यों यह आवश्यक है।
OPCPackage pkg = OPCPackage.open(inputFile);
XSSFWorkbook wb = new XSSFWorkbook(pkg);
ModifyWorkbook();
File tmp = File.createTempFile("tempSpreadsheet", ".xlsx");
FileOutputStream newExcelFile = new FileOutputStream(tmp);
wb.write(newExcelFile);
newExcelFile.close();
tmp.deleteOnExit();
pkg.close();
विषय पर जावाडॉक्स और गाइड इंगित करते हैं कि .close() विधि को सहेजना और बंद करना चाहिए। बंद होने से पहले संशोधित कोशिकाओं के मानों पर जांच करता है, यह इंगित करता है कि परिवर्तन किए गए हैं, लेकिन अकेले pkg.close() विधि बंद होने पर फ़ाइल में उन परिवर्तनों को लिखने के लिए पर्याप्त नहीं है।