2013-03-17 13 views
8

kimse excel bir hücrenin belirli metnin rengini değiştirmek için nasıl biliyor mu. Apache poi kullanıyorum ve tüm hücrenin metin rengini değiştirmeyi öğrendim. Ama sadece belirli bir metin istiyorum.Apache poi kullanarak belirli bir metin rengini excel sayfasının aynı hücresinde nasıl değiştirilir?

Ör: A1 hücresi Yeşil olmak mavi ve "Dünya" olması "Merhaba" istemek Hello World sahiptir. Bunu nasıl yaparım?

+0

@BrianRogers sayesinde birden çok renk olabilir. –

cevap

11

anahtar hücrenin değerini ayarlamak için HSSFRichTextString nesne kullanıyor. Bu nesne, bir startIndex, endingIndex ve bir Yazı tipi kabul eden bir applyFont yöntemine sahiptir. Böylece, istediğiniz renklere sahip yazı tipleri oluşturabilir, ardından bunları applyFont() kullanarak hücre değerinin bölümlerine uygulayabilirsiniz. İşte

ben birlikte kaldırımlı bazı örnek kodu (tamamen denenmemiş) 'dir:

// Set up a rudimentary worksheet with a cell in it 
HSSFWorkbook wb = new HSSFWorkbook(); 
HSSFSheet sheet = wb.createSheet(“sheet1”); 
HSSFRow row = sheet.createRow(0); 
HSSFCell cell = row.createCell(0); 

// Set up fonts 
HSSFFont blueFont = workbook.createFont(); 
blueFont.setColor(HSSFColor.BLUE.index); 

HSSFFont greenFont = workbook.createFont(); 
greenFont.setColor(HSSFColor.GREEN.index); 

// create a cell style and assign the first font to it 
HSSFCellStyle style = workbook.createCellStyle(); 
style.setFont(blueFont); 

// assign the style to the cell 
cell.setCellStyle(style); 

// override the parts of the text that you want to 
// color differently by applying a different font. 
HSSFRichTextString richString = new HSSFRichTextString("Hello, World!"); 
richString.applyFont(6, 13, greenFont); 
cell.setCellValue(richString); 
+0

İlginç bir şekilde, Hello'in rengini geçersiz kılmak istiyorsanız bu işe yaramaz. Dünyayı değiştirirseniz tam olarak aynı kod parçası çalışır! Hello'in rengi geçersiz kılınmıştır, ancak Dünya onun stilini kaybeder. – Achow

+0

Yazı tiplerini açıkça uygularsanız sabittir - richString.applyFont (blueFont); richString.applyFont (2, 5, greenFont); xlsx dosyaları için – Achow

+1

orada bir aynı şekilde çalışır ki [XSSFRichTextString] (https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFRichTextString.html) karşılığıdır. – jamsandwich

-1

öncelikle bu hat kodunuzda eklenecektir

//////////////////////Excel Header Style///////////////////////// 
     HSSFCellStyle headerlabelcs = wb.createCellStyle(); 
     headerlabelcs.setFillForegroundColor(HSSFColor.PALE_BLUE.index); 
     headerlabelcs.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 
     headerlabelcs.setBorderLeft((short)1); 
     headerlabelcs.setBorderRight((short)1); 

     HSSFFont headerlabelfont = wb.createFont(); 
     headerlabelfont.setFontHeightInPoints((short)12); 
     headerlabelfont.setFontName("Calibri"); 
     headerlabelfont.setColor(HSSFColor.BLACK.index); 
     headerlabelfont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 
     headerlabelcs.setFont(headerlabelfont); 
       //////////////////////Excel Header Style///////////////////////// 

sonra eklemek bir stil oluşturmak At

sheet.getRow(rowIndex).getCell(0).setCellStyle(headerlabelcs); 
bir hücre onaylamak için
+1

Bu çözüm OP'nin sorduğu şeyi yapmaz. Metnin kısımlarını tek bir hücrede iki farklı renge ayarlamak istiyor. –

+0

Ardından metne bağlı olarak stili değiştirin – Biswajit

İlgili konular