在使用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