अच्छी खबर यह है कि यदि आप एक्सएसएसएफ का उपयोग कर रहे हैं, तो एचएसएसएफ के विपरीत, तो आपकी समस्या का समाधान काफी आसान है। आपको बस अपनी स्टाइल वैरिएबल को XSSFCellStyle में डालना होगा। यदि आप करते हैं, तो setFillForegroundColor का एक संस्करण है जो XSSFColor तर्क लेता है, इसलिए आपको getIndexed() को कॉल करने की आवश्यकता नहीं है। यहां कुछ उदाहरण कोड दिया गया है:
XSSFCellStyle style = (XSSFCellStyle)cell.getCellStyle();
XSSFColor myColor = new XSSFColor(Color.RED);
style.setFillForegroundColor(myColor);
हालांकि, यदि आप एचएसएसएफ का उपयोग कर रहे हैं, तो चीजें कठिन होती हैं। एचएसएसएफ एक रंग पैलेट का उपयोग करता है, जो कि रंगों की एक सरणी है। सेट में आप जो छोटा मान सेट करते हैं FillForegroundColor पैलेट में एक अनुक्रमणिका है।
तो आपके पास समस्या एक आरजीबी मान को पैलेट इंडेक्स में परिवर्तित कर रही है। GetIndexed() का उपयोग करके प्रस्तावित समाधान तार्किक है, लेकिन, अफसोस की बात है, यह XSSFColor के लिए काम करता है जिस तरह से आपको लगता है कि यह करना चाहिए।
सौभाग्य से, एक समाधान है। इस पल के लिए, मान लीजिए कि आप एक कस्टम रंग का उपयोग करने के बजाय डिफ़ॉल्ट पैलेट में रंगों में से किसी एक का उपयोग करके संतुष्ट होंगे। उस स्थिति में, आप समस्या को हल करने के लिए HSSFPalette और HSSFColor कक्षाओं का उपयोग कर सकते हैं।
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFPalette palette = hwb.getCustomPalette();
// get the color which most closely matches the color you want to use
HSSFColor myColor = palette.findSimilarColor(255, 0, 0);
// get the palette index of that color
short palIndex = myColor.getIndex();
// code to get the style for the cell goes here
style.setFillForegroundColor(palIndex);
आप डिफ़ॉल्ट पैलेट में पहले से ही नहीं कस्टम रंग का उपयोग करना चाहते हैं, तो आप उन्हें पैलेट में जोड़ने के लिए यहाँ कुछ उदाहरण कोड है। HSSFPalette के लिए जावाडोक उन विधियों को परिभाषित करता है जिनका आप उपयोग करने के लिए उपयोग कर सकते हैं।
स्रोत
2012-06-07 01:19:17
आपको इंडेक्स() क्यों प्राप्त करने की आवश्यकता है? पिछड़े संगतता के लिए ?? इसे हटाने का प्रयास करें। – gtiwari333
यदि आप किसी सेल को शैली लागू करते हैं, तो क्या यह एक्सेल में लाल रंग के रूप में सही ढंग से दिखाई देता है? – Gagravarr
मुझे getindexed की आवश्यकता है क्योंकि विधि केवल एक छोटा मान स्वीकार करेगी। – Neets