在使用Apache的POI库生成EXCEL文件时,经常会遇到这样的情况:使用不同的格式格式化一个单元格中的内容,比如说:一个单元格的内容是“first, second”,现在要分别使用红色带删除线格式化"first", 使用蓝色格式化“second",在这种情况下可以使用HSSFRichText来实现这一目的,下面的代码简单的示例了上述需求的实现:
//创建工作簿 HSSFWorkbook wb = new HSSFWorkbook(); //创建工作表 HSSFSheet sheet = wb.createSheet(); //为工作表添加行 HSSFRow row = sheet.createRow(0); //添加单元格 HSSFCell cell = row.createCell(0); //创建字体 HSSFFont ftRed = wb.createFont(); ftRed.setStrikeout(true); ftRed.setColor(HSSFColor.RED.index); HSSFFont ftBlue = wb.createFont(); ftBlue.setColor(HSSFColor.BLUE.index); //往单元格中写入的内容,并使用ft格式化"second"单词 String[] subStr = { "first", "second" }; String sText = subStr[0] + "," + subStr[1]; HSSFRichTextString textString = new HSSFRichTextString(sText); textString.applyFont( sText.indexOf(subStr[0]), sText.indexOf(subStr[0]) + subStr[0].length(), ftRed ); textString.applyFont( sText.indexOf(subStr[1]), sText.indexOf(subStr[1]) + subStr[1].length(), ftBlue ); cell.setCellValue(textString);
上述代码片段的生成效果为:
Apache文档对HSSFRichTextString的说明文档:https://poi.apache.org/apidocs/org/apache/poi/hssf/usermodel/HSSFRichTextString.html