java 如何使用apache poi更改excel表的同一单元格中的特定文本颜色?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15456884/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to change the specific text color in a same cell of excel sheet using apache poi?
提问by user001
Does anyone know how to change the color of the particular text of a cell in excel. I am using apache poi and I could find out to change the text color of entire cell. But I want only a particular text.
有谁知道如何更改excel中单元格特定文本的颜色。我正在使用 apache poi,我可以找到更改整个单元格的文本颜色。但我只想要一个特定的文本。
Eg: Cell A1 has Hello World I want "Hello" to be in blue and "World" to be in green. How do I do this?
例如:单元格 A1 有 Hello World 我希望“Hello”为蓝色,“World”为绿色。我该怎么做呢?
回答by Brian Rogers
The key is using the HSSFRichTextStringobject to set the value of the cell. This object has an applyFontmethod which accepts a startingIndex, endingIndex and a Font. Thus, you can create fonts having the colors you want, then apply them to parts of the cell value using applyFont().
关键是使用HSSFRichTextString对象来设置单元格的值。这个对象有一个applyFont方法,它接受一个开始索引、结束索引和一个字体。因此,您可以创建具有所需颜色的字体,然后使用 applyFont() 将它们应用到单元格值的一部分。
Here is some example code I cobbled together (completely untested):
这是我拼凑的一些示例代码(完全未经测试):
// 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);
回答by Biswajit
At first create a style
首先创建一个样式
//////////////////////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/////////////////////////
add then this line will be added in your code
添加然后此行将添加到您的代码中
sheet.getRow(rowIndex).getCell(0).setCellStyle(headerlabelcs);