में रंग पैलेट तक पहुंच एक्सेल दस्तावेज़ों में पीओआई, कोशिकाओं और फोंट का उपयोग करते समय रंग की जानकारी होती है जो हमेशा आरजीबी मान नहीं लौटाती है और यह अक्सर केवल एक सूचकांक मान प्रदान करती है। अनुक्रमित मूल्य रंग प्राप्त करने के लिए कुछ के खिलाफ देखा जाना चाहिए। एक HSSFWorkbook (xls) में उपलब्ध करने के लिए एक विधि पैलेट प्राप्त करने के लिए है:XSSFWorkbook
InputStream in = new FileInputStream("sheet.xls");
HSSFWorkbook wb = new HSSFWorkbook(in);
wb.getCustomPalette();
जब एक XSSFWorkbook (xlsx) तक पहुंचने में कोई ऐसी कोई विधि नहीं है और वास्तव में मैं संबंधित वर्गों में कहीं भी कोई पैलेट जानकारी पा सकते हैं । मैं एक्सएसएसफ़ॉन्ट और सेल से इंडेक्स वैल्यू प्राप्त करने में सक्षम हूं, लेकिन रंग "नाम" के रूप में इतना पाने का एकमात्र तरीका इंडेक्सडॉलर्स एनम के खिलाफ मेल खाना है। यह मुझे एक ही मूल समस्या पर लौटाता है; मेरे पास अभी भी उपयोग करने के लिए कोई आरजीबी मूल्य नहीं है।
InputStream in = new FileInputStream("sheet.xlsx");
XSSFWorkbook wb = new XSSFWorkbook (in);
wb.getCustomPalette(); <-- fail!
मैं CellStyle के माध्यम से XSSFColor हो रही है, इसलिए जैसे:
CellStyle style = cell.getCellStyle();
XSSFColor color = style.getFillBackgroundColorColor();
IndexedColors के माध्यम से एक रंग का नाम पाने के लिए:
for (IndexedColors c : IndexedColors.values()) { if (c.index == indexColor){ System.out.println("Color: " + c.name()); } }
इसी प्रकार के प्रश्न: How do I get the (Java Apache POI HSSF) Background Color for a given cell?
संदर्भ: http://poi.apache.org/spreadsheet/quick-guide.html#CustomColors
अद्यतन 1: मुझे कुछ ऐसा लगता है जो अंत में काम करता है। XSSFColor की यह विधि एआरजीबी हेक्स कोड देता है और इसके साथ मैं आरजीबी मान (स्पष्ट रूप से) निर्धारित कर सकता हूं। मुझे उम्मीद है कि यह एक ही मुद्दे वाले किसी के लिए x घंटे की संख्या को बचाने में मदद करता है।
((XSSFColor) color).getARGBHex())
2 अद्यतन: मेरी बेचैनी को ज्यादा, मैं पाया है कि कुछ कोशिकाओं पृष्ठभूमि ARGBHex डेटा वाली XSSFColor नहीं लौटाते हैं। इसके लिए एक काम की तलाश में है।
मुझे एक सेल स्टाइल मिला है जो एक एक्सएसएसएफसीओलर देता है जो केवल इंडेक्स() प्राप्त करने के लिए एक गैर-शून्य मान देता है। यही कारण है कि मुझे पैलेट लुकअप की आवश्यकता है; इंडेक्स वैल्यू का मतलब है कि इसके खिलाफ मूल्य का उपयोग करने के लिए कुछ भी नहीं है। –