使用Apache POI 1将HTML格式化单元格值转换为Excel

时间:2014-07-09 08:11:30

标签: java apache-poi itext aspose xssf

我想在Excel单元格中显示Html Formatted值。 html标记包含无序,有序和子弹,斜体和下划线和段落。

我想将html标记标记传递给显示apache poi excel的单元格值的格式化值。

XSSFWorkbook workBook = null; 
String value = "<html>My String</html>"; 
workBook = new XSSFWorkbook (); 
XSSFCell cell = row.createCell(columnIndex); 
XSSFRichTextString textString = new XSSFRichTextString (value); 
cell.setCellValue(value); 

输入数据:

   <ul>
    <li> Iam <strong>Bold </strong> and Iam <u>Underlined </u> </li>
    <li> Just a Normal Text </li>
    <li> Iam <b> Bold </b> <em>and italic </em> <u> and underlined </u> </li>
  </ul>

预期产出:

Iam Bold 和Iam Italic
   Iam Bold 和Iam Italic 和带下划线的
  只是普通文字

任何api提供,Aspose或Itext或其他一些api。

2 个答案:

答案 0 :(得分:0)

我在Aspose担任社交媒体开发人员,使用Aspose.Cells for Java可以轻松实现您想要的结果。请查看以下代码。

//Instantiate the workbook object                                                                       
Workbook workbook = new Workbook();                                                                     

//Get first worksheet of workbook                                                                       
Worksheet worksheet1 = workbook.getWorksheets().get(0);                                                 

//Get Cells in a Worksheet                                                                              
Cells cells = worksheet1.getCells();                                                                    

//Get the individual cell                                                                               
Cell cell = cells.get("A1");                                                                            

String htmlstring = "<ul><li> I am <strong>Bold </strong> and Iam <u>Underlined </u> " +                
        "</li><li> Just a Normal Text </li>" +                                                          
"<li> Iam <b> Bold </b> <i>and italic </i> <u> and underlined </u></li></ul>";                          

//Setting Cell Style                                                                                    
Style style = new Style();                                                                              
style.setHorizontalAlignment(TextAlignmentType.LEFT);                                                   
style.setTextWrapped(true);                                                                             
cell.setStyle(style);                                                                                   

//Set HTML string as Cell Text                                                                          
cell.setHtmlString(htmlstring);                                                                         

worksheet1.autoFitColumns();                                                                            
worksheet1.autoFitRows();                                                                               

//Save the workbook.                                                                                    
workbook.save("c:\\HtmlStringtest.xlsx");                                                         

答案 1 :(得分:-2)

您可以通过创建和设置XSSFFont来格式化POI中的字符串。 https://poi.apache.org/apidocs/org/apache/poi/xssf/usermodel/XSSFFont.html 在那里你可以使用setBold(true)等等。

您只需将字体应用于XSSFRichTextString即可。您也可以将字体仅应用于字符串的某些部分。

XSSFWorkbook wb=new XSSFWorkbook();
XSSFFont font = wb.createFont();
font.setBold( true );
font.setItalic( true );
new XSSFRichTextString().applyFont( font );

在字符串中使用HTML似乎是不可能的