提问人:user2755407 提问时间:11/13/2023 更新时间:11/14/2023 访问量:32
使用 Apache poi 在 Excel 工作表的单个单元格中插入多个 para 标签
Insert Multi para tags in a single cell in Excel sheet using Apache poi
问:
我有一个输入如下:
<p style="font-family:Caveat;">This is Caveat</p><p style="font-family:Arial;">This is Arial text</p>
我想使用 apache poi 在单个单元格中插入两个 para 标签元素,如下所示。
.我从网上尝试了几个例子,但我可以找到任何合适的解决方案。谁能帮我解决它?
答:
1赞
Axel Richter
11/13/2023
#1
Excel 单元格不包含文本段落。单元格只能包含具有不同文本格式的单个文本运行。为此,您将需要单元格中的 RichTextString 内容。
单元格内容也可能包含换行符。但是,只有当单元格样式设置为换行文本时,换行符才会生效。
使用 XSSFRichTextString,可以使用方法 XSSFRichTextString.append 使用不同的字体附加不同的字符串。
需要在工作簿级别创建不同的字体。单元格样式相同。
完整示例:
import org.apache.poi.xssf.usermodel.*;
import java.io.FileOutputStream;
class RichTextTest {
public static void main(String[] args) throws Exception {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFCellStyle wrapTextCellStyle = wb.createCellStyle();
wrapTextCellStyle.setWrapText(true);
XSSFFont fontTNR = wb.createFont();
fontTNR.setFontName("Times New Roman");
XSSFFont fontArial = wb.createFont();
fontArial.setFontName("Arial");
XSSFRichTextString richString = new XSSFRichTextString();
richString.append("This is Times New Roman", fontTNR);
richString.append("\n");
richString.append("This is Arial", fontArial);
XSSFSheet sheet = wb.createSheet("Sheet1");
XSSFRow row = sheet.createRow(0);
XSSFCell cell = row.createCell(0);
cell.setCellValue(richString);
cell.setCellStyle(wrapTextCellStyle);
sheet.setColumnWidth(0, 25*256);
try ( FileOutputStream fileOut = new FileOutputStream("./workbook.xlsx"); ) {
wb.write(fileOut);
}
}
}
评论
0赞
user2755407
11/14/2023
如果我有一个带有 <br> 标签的文本,例如 <p style=“font-family:Caveat;”>这是 <br>Caveat</p><p style=“font-family:Arial;”>这是Arial文本</p>??我们是否也需要为此附加 \n?
1赞
Axel Richter
11/14/2023
@user2755407:Excel单元格内容与HTML完全无关。Excel 单元格内容中没有段落。所以换行的唯一方法是换行。\n
评论