excel列头样例: "test1" , "test2", //详细代码 private static final Pattern scriptPattern = Pattern.compile("<(su[b|p])>([^<>]+)>"); public RichTextString getRichTextHeader(String value){ Matcher scriptMatcher = scriptPattern.matcher(value); String label,labelContent, labelName, temp = value; int start,end; Listlist = new ArrayList<>(); Workbook workbook = new SXSSFWorkbook(); while(scriptMatcher.find()){ Font ft = workbook.createFont(); label = scriptMatcher.group(0); //一组标签,如:a labelName = scriptMatcher.group(1); // 标签名字,如:sub/sup labelContent = scriptMatcher.group(2); // 标签之间的内容,如:a start = temp.indexOf(label);//这个标签的起始位置 end = start + labelContent.length(); //这个标签的内容长度 temp = temp.replace(label, labelContent); // 替换一组标签为标签之间的内容 if(StringUtils.isEmpty(temp)){ continue; } if("sub".equalsIgnoreCase(labelName)){ ft.setTypeOffset(HSSFFont.SS_SUB); //下标 }else{ ft.setTypeOffset(HSSFFont.SS_SUPER); //上标 } list.add(new scriptFont(start,end,ft)); } RichTextString richTextString; if(list.size() > 0){ richTextString = new XSSFRichTextString(temp); for(scriptFont scriptFont: list){ richTextString.applyFont(scriptFont.getStart(),scriptFont.getEnd(),scriptFont.getFt()); } }else{ richTextString = new XSSFRichTextString(value); } return richTextString; } //然后把上面的设置给cell的value,如下所示: cell.setCellValue(getRichTextHeader("test1")); //scriptFont类如下: @Data @AllArgsConstructor public class scriptFont{ public int start; public int end; public Font ft; } 以上代码支持XSSFWorkbook, 而SXSSFWorkbook大数据量下载的不支持,因为流格式数据不是放在共享内存里面的
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)