2013-07-09 13 views
7

मैं अपाचे पोई और एक्सएलएसएक्स फ़ाइल के साथ काम कर रहा हूं। मैं गतिशील रूप से एक स्प्रेडशीट बनाने के लिए xssf कक्षाओं का उपयोग करता हूं। मैं पाश के लिए एक में सेल की शैली निर्धारित करना चाहते हैं, लेकिन यह काम करने के लिए प्रतीत नहीं होता ... यहाँ मेरी कोड है:सेटिंग सेल शैली काम नहीं कर रही

for(int i=1;i<=gc.getActualMaximum(GregorianCalendar.DAY_OF_MONTH);i++,gc.add(GregorianCalendar.DATE, 1),righe++){ 
     Row r = foglio.createRow(righe); 

     if(getDayOfWeek(gc)== 6 || getDayOfWeek(gc) == 7){ 
      XSSFCellStyle cs1 = wb.createCellStyle(); 
      cs1.setFillBackgroundColor(IndexedColors.YELLOW.getIndex()); 
      cs1.setFillPattern(CellStyle.SOLID_FOREGROUND); 
      XSSFFont f = wb.createFont(); 
      f.setBold(true); 
      f.setColor(IndexedColors.RED.getIndex()); 
      cs1.setFont(f); 
      Cell c1 = r.createCell(0); 
       c1.setCellValue(cost.getGiorni().get(getDayOfWeek(gc)-1).getNomeGiorno()); 
       c1.setCellStyle(cs1); 
      Cell c2 = r.createCell(1); 
       c2.setCellValue(i); 
       c2.setCellStyle(cs1); 
     }    
     r.createCell(0).setCellValue(cost.getGiorni().get(getDayOfWeek(gc)-1).getNomeGiorno()); 
     r.createCell(1).setCellValue(i); 

... इस मैं सिर्फ एक कोड के भाग ... मुझे समझ में नहीं आता कि क्यों काम नहीं कर रहा है। ऐसा लगता है कि सेलस्टाइल को अनदेखा किया गया है या ओवरराइट किया गया है ....

कोई सुराग?

उत्तर

4

सेल स्टाइल प्रति कार्यपुस्तिका हैं, और एक हार्ड सीमा है कि एक्सेल उन संख्याओं पर लगाता है जिन्हें फ़ाइल की अनुमति है, इसलिए आपको यह सुनिश्चित करना होगा कि आप लूप के बाहर एक बार सेल शैली बना लें।

आपका कोड तो कुछ ऐसा दिखाई देगा:

XSSFCellStyle cs1 = wb.createCellStyle(); 
cs1.setFillBackgroundColor(IndexedColors.YELLOW.getIndex()); 
cs1.setFillPattern(CellStyle.SOLID_FOREGROUND); 

XSSFFont f = wb.createFont(); 
f.setBold(true); 
f.setColor(IndexedColors.RED.getIndex()); 
cs1.setFont(f); 

for(int i=1;i<=gc.getActualMaximum(GregorianCalendar.DAY_OF_MONTH) i++,gc.add(GregorianCalendar.DATE, 1),righe++){ 
    Row r = foglio.createRow(righe); 

    if(getDayOfWeek(gc)== 6 || getDayOfWeek(gc) == 7){ 
     Cell c1 = r.createCell(0); 
     c1.setCellValue(cost.getGiorni().get(getDayOfWeek(gc)-1).getNomeGiorno()); 
     c1.setCellStyle(cs1); 
     Cell c2 = r.createCell(1); 
     c2.setCellValue(i); 
     c2.setCellStyle(cs1); 
    } 
} 

यदि आपको नहीं देख काफी आपकी अपेक्षा के अनुसार, सबसे अच्छा विकल्प के लिए एक सेल शैली के रूप में आप इसे Excel में चाहते हैं स्टाइल के साथ समस्या हो रही है, फ़ाइल को सहेजें, पीओआई में पढ़ें, और एक्सेल लिखे गए सेल स्टाइल की समीक्षा करें। कभी-कभी, एक्सेल कुछ अजीब चीजें कर सकता है जो कुछ उपयोग करने में लगते हैं, इसलिए जांच करें कि यह करने के लिए आपको क्या करना है!

+0

मैंने पहले से ही आपको विधि की कोशिश की है लेकिन कुछ हल नहीं करता है ... मैंने एक .xlsx मॉडल फ़ाइल बनाने के बारे में भी सोचा है, लेकिन मैं रनटाइम पर उपयोगकर्ता द्वारा परिभाषित कुछ मानदंडों के आधार पर 100% गतिशील स्प्रेडशीट का उत्पादन कर रहा हूं ... – Medioman92

+0

इसके अलावा यदि मैं पृष्ठभूमि सेट करने के लिए "इंडेक्सडॉलर" कक्षा का उपयोग करता हूं, तो यह हमेशा काले – Medioman92

+1

का उत्तर देता है, उत्तर के निचले हिस्से में मेरी सलाह देखें - इसे एक्सेल में चाहते हैं, इसे वापस पीओआई से पढ़ें, और काम करें शैली को बनाने के लिए आपको किन विकल्पों की आवश्यकता है – Gagravarr

6

आप निम्न विधि का उपयोग कर सकते हैं, शायद यह आपकी समस्या का समाधान करेगा।

public static void setCellColorAndFontColor(XSSFCell cell, IndexedColors FGcolor, IndexedColors FontColor){ 
    XSSFWorkbook wb = cell.getRow().getSheet().getWorkbook(); 
    CellStyle style = wb.createCellStyle(); 
    XSSFFont font = wb.createFont(); 
    font.setBold(true); 
    font.setColor(FontColor.getIndex()); 
    style.setFont(font); 
    style.setFillForegroundColor(FGcolor.getIndex()); 
    style.setFillPattern(CellStyle.SOLID_FOREGROUND); 
    cell.setCellStyle(style); 
} 

आप इस विधि बुला रहे हैं जब तरीका हो

setCellColorAndFontColor(cell, IndexedColors.BLACK, IndexedColors.WHITE); 

तरह शीट में काले सेल पृष्ठभूमि रंग के साथ बोल्ड & सफेद फ़ॉन्ट पाठ का रंग पैदा करेगा चाहिए।

+3

हालांकि प्रति सेल एक शैली तैयार करेगा, जो आपको नहीं करना चाहिए क्योंकि आप जल्दी से बाहर निकल जाएंगे - शैलियों कार्यपुस्तिका हैं! – Gagravarr

संबंधित मुद्दे