使用 Apache poi 在 Excel 工作表的单个单元格中插入多个 para 标签

问题描述 投票:0回答:1

我的输入如下:

<p style="font-family:Caveat;">This is Caveat</p><p style="font-family:Arial;">This is Arial text</p>

我想使用 apache poi 将两个 para 标签元素插入到一个单元格中,如下所示。

.我尝试了网上的一些例子,但我可以找到任何合适的解决方案。任何人都可以帮助我解决它吗?

java apache-poi java-17
1个回答
0
投票

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);
  }

 }
}
© www.soinside.com 2019 - 2024. All rights reserved.