导出文档显示对应上下角标

This commit is contained in:
CD
2022-12-22 16:49:00 +08:00
parent 26f87c21ac
commit 83b38e8d3b
2 changed files with 64 additions and 1 deletions
@@ -270,6 +270,41 @@ public class SarFileSplitItemsEOController extends BaseController<SarFileSplitIt
content = content.substring(0,content.lastIndexOf("\n"));
}
}
//处理上下角标
List<SplitFont> subList = new ArrayList<>();
List<SplitFont> supList = new ArrayList<>();
boolean handleCorner = false;
if (content.contains("<span class=sup>")) {
handleCornerMarkers(content, supList, "<span class=sup>","<span class=sub>");
}
if (content.contains("<span class=sub>")) {
handleCornerMarkers(content, subList, "<span class=sub>","<span class=sub>");
}
if (subList.size() > 0 || supList.size() > 0) {
content = content.replaceAll("<span class=sup>", "");
content = content.replaceAll("<span class=sub>", "");
content = content.replaceAll("</span>", "");
//设置角标font
HSSFFont fontSub = workbook.createFont();
fontSub.setTypeOffset(HSSFFont.SS_SUB);
HSSFFont fontSup = workbook.createFont();
fontSup.setTypeOffset(HSSFFont.SS_SUPER);
RichTextString richTextString = new HSSFRichTextString(content);
if (subList.size() > 0) {
for (SplitFont splitFont : subList) {
richTextString.applyFont(splitFont.getStartIndex(),splitFont.getEndIndex(),fontSub);
}
}
if (supList.size() > 0) {
for (SplitFont splitFont : supList) {
richTextString.applyFont(splitFont.getStartIndex(),splitFont.getEndIndex(),fontSup);
}
}
cell2.setCellValue(richTextString);
handleCorner = true;
}
if("TABLE".equals(valList.get(valRow).getValType())){
/* 连接跳转*/
CreationHelper createHelper = workbook.getCreationHelper();
@@ -287,7 +322,9 @@ public class SarFileSplitItemsEOController extends BaseController<SarFileSplitIt
cell2.setHyperlink(hyperlink1);// 链接
row1.getCell(2).setCellStyle(cellStyleLink);
}
cell2.setCellValue(content);
if (!handleCorner) {
cell2.setCellValue(content);
}
row1.createCell(3).setCellValue(exportDto.getResponsibleUnitShow());
@@ -414,6 +451,23 @@ public class SarFileSplitItemsEOController extends BaseController<SarFileSplitIt
}
}
private void handleCornerMarkers(String content, List<SplitFont> splitFontList, String label,String remove) {
content = content.replaceAll(remove, "");
String[] split = content.split(label);
split[0] = split[0].replaceAll("</span>", "");
int index = split[0].length();
for (int i = 1; i < split.length; i++) {
SplitFont splitFont = new SplitFont();
String text = split[i];
String cornerLabel = text.substring(0, text.indexOf("</span>"));
splitFont.setStartIndex(index);
splitFont.setEndIndex(index + cornerLabel.length());
splitFontList.add(splitFont);
text = text.replaceAll("</span>", "");
index = index + text.length();
}
}
@ApiOperation(value = "|SarFileSplitItemsEO|导入")
@PostMapping(value = "/importSplitItemsZip")
public ResponseMessage<SarFileSplitItemsEO> importSplitItemsZip(@RequestParam(value = "file", required = false) MultipartFile file,
@@ -0,0 +1,9 @@
package com.adc.da.slrs.standardSplit.entity;
import lombok.Data;
@Data
public class SplitFont {
Integer startIndex;
Integer endIndex;
}