Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用ApachePOI更改excel工作表的同一单元格中的特定文本颜色?_Java_Excel_Apache Poi - Fatal编程技术网

Java 如何使用ApachePOI更改excel工作表的同一单元格中的特定文本颜色?

Java 如何使用ApachePOI更改excel工作表的同一单元格中的特定文本颜色?,java,excel,apache-poi,Java,Excel,Apache Poi,有人知道如何在excel中更改单元格特定文本的颜色吗。 我正在使用ApachePOI,我可以发现如何更改整个单元格的文本颜色。但我只想要一个特定的文本 A1单元有Hello World 我希望“你好”是蓝色的,“世界”是绿色的。 如何执行此操作?关键是使用对象设置单元格的值。此对象有一个接受起始索引、结束索引和字体的方法。因此,您可以创建具有所需颜色的字体,然后使用applyFont()将其应用于单元格值的部分 下面是我拼凑的一些示例代码(完全未经测试): 首先创建一个样式 //////////

有人知道如何在excel中更改单元格特定文本的颜色吗。 我正在使用ApachePOI,我可以发现如何更改整个单元格的文本颜色。但我只想要一个特定的文本

A1单元有Hello World 我希望“你好”是蓝色的,“世界”是绿色的。 如何执行此操作?

关键是使用对象设置单元格的值。此对象有一个接受起始索引、结束索引和字体的方法。因此,您可以创建具有所需颜色的字体,然后使用applyFont()将其应用于单元格值的部分

下面是我拼凑的一些示例代码(完全未经测试):


首先创建一个样式

//////////////////////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/////////////////////////   
添加,则这一行将添加到您的代码中

sheet.getRow(rowIndex).getCell(0).setCellStyle(headerlabelcs);

@BrianRogers感谢您确认一个单元格可以有多种颜色。此解决方案不符合OP的要求。他想将单个单元格中的部分文本设置为两种不同的颜色,然后根据文本更改样式有趣的是,如果要覆盖Hello的颜色,这是行不通的。如果您修改World,则完全相同的代码段可以工作!Hello的颜色被alrite覆盖,但World失去了它的风格。如果显式地应用字体richString.applyFont(blueFont),它是固定的;applyFont(2,5,绿色字体);对于xlsx文件,有一种等效的方法也可以用同样的方法工作;applyFont(6,13,绿色字体);cell.setCellValue(richString);我也有同样的担忧。但到目前为止,我还无法接触到我的代码,但我很好奇能尽快测试它……希望这能奏效
sheet.getRow(rowIndex).getCell(0).setCellStyle(headerlabelcs);