2010-05-10 11 views
38

बाहर आ रहा है मैं जावा में एक्सेल स्प्रेडशीट बनाने के लिए पीओआई का उपयोग कर रहा हूं। मैं एक शीर्ष लेख पंक्ति बनाने के लिए इस्तेमाल किया निम्नलिखित कोड है:HSSFCellStyle के लिए अग्रभूमि रंग सेट करना हमेशा काला

HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet = wb.createSheet("Report"); 

// some more code 

HSSFRow row = sheet.createRow(0); 

HSSFCell cell = row.createCell(cellNumber); 
HSSFCellStyle cellStyle = wb.createCellStyle(); 

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index); 
cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 

HSSFFont font = wb.createFont(); 
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 
font.setColor(HSSFColor.WHITE.index); 

cellStyle.setFont(font); 
cell.setCellStyle(cellStyle); 

मुद्दा मैं कर रहा हूँ कि सेल पर भरने पृष्ठभूमि रंग की स्थापना हमेशा कोई बात नहीं क्या रंग मैं लेने काला बाहर आता है, है। मैं क्या गलत कर रहा हूं? अगर मैं "setFillPattern" लाइन का उपयोग नहीं करता, तो कोई रंग बिल्कुल दिखाई नहीं देता है।

उत्तर

64

मुझे यह काम करने के लिए मिला। मुझे पृष्ठभूमि रंग का काम (??) बनाने के लिए अग्रभूमि रंग सेट करना पड़ा।

तो मैं बदल दिया है:

cellStyle.setFillBackgroundColor(HSSFColor.GREY_25_PERCENT.index); 

रहे हैं:

cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); 

और यह काम किया!

+5

आह, मुझे यह मिल गया। पृष्ठभूमि रंग बदलने के लिए मुझे अग्रभूमि रंग बदलने की जरूरत है - प्रतिभा! – Pakman

+2

निराशा के कई घंटे बचाए, ¿क्या कोई जानता है कि यह इस तरह क्यों काम करता है? – CGK

+4

मुझे लगता है कि सेल को पैटर्न के साथ चित्रित किया गया है जिसमें अग्रभूमि और पृष्ठभूमि पिक्सेल शामिल हैं। यदि आप SOLID_FOREGROUND का उपयोग करते हैं, तो केवल अग्रभूमि पिक्सेल दिखाई दे रहे हैं। यह रंग पाठ प्रस्तुत करने के लिए प्रयुक्त रंग से अलग है, जो फ़ॉन्ट के साथ सेट है। – Axel

5

आप अग्रभूमि रंग सेट कर रहे हैं,

cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); 

का उपयोग आप पृष्ठभूमि रंग स्थापित कर रहे हैं, तो का उपयोग

style.setFillPattern(FillPatternType.THICK_BACKWARD_DIAG); 

या

style.setFillPattern(FillPatternType.THIN_BACKWARD_DIAG); 

अग्रभूमि और पृष्ठभूमि रंग लगते हैं यदि आप पृष्ठभूमि भरने से पहले अग्रभूमि भरने के पैटर्न को सेट करते हैं तो 'स्टैक' (लाल + नीला = बैंगनी) तक ern, लेकिन दूसरी तरफ दौर नहीं। कई अन्य fill पैटर्न हैं जिन्हें आप चुन सकते हैं। ध्यान दें कि यदि आप डिफ़ॉल्ट भरण पैटर्न नहीं बदलते हैं तो रंग लागू नहीं किया जाएगा।

CellStyle.SOLID_FOREGROUND संस्करण 3.15+ में बहिष्कृत किया गया है। इसके बजाय FillPatternType.SOLID_FOREGROUND का उपयोग करें।

+0

'style.setFillForegroundColor (IndexedColors.GREY_25_PERCENT.getIndex()) के बारे में एक अच्छी व्याख्या; \t \t \t style.setFillPattern (FillPatternType.SOLID_FOREGROUND); 'जिसने मेरी मदद की, धन्यवाद +1): - – Yash