使用Apache POI从Excel中获取HTML格式化的单元格值

使用Apache POI从Excel中获取HTML格式化的单元格值,第1张

使用Apache POI从Excel中获取HTML格式化的单元格值

我将其作为unipre粘贴到xls文件的单元格A1中:

<html><p>This is a test. Will this text be <b>bold</b> or <i>italic</i></p></html>

此html行产生以下内容:

这是一个测验。该文字是 粗体 还是 斜体

我的代码

public class ExcelWithHtml {    // <html><p>This is a test. Will this text be <b>bold</b> or    // <i>italic</i></p></html>    public static void main(String[] args) throws FileNotFoundException, IOException {        new ExcelWithHtml()     .readFirstCellOfXSSF("/Users/rcacheira/testeHtml.xlsx");    }    boolean inBold = false;    boolean inItalic = false;    public void readFirstCellOfXSSF(String filePathName) throws FileNotFoundException, IOException {        FileInputStream fis = new FileInputStream(filePathName);        XSSFWorkbook wb = new XSSFWorkbook(fis);        XSSFSheet sheet = wb.getSheetAt(0);        String cellHtml = getHtmlFormatedCellValueFromSheet(sheet, "A1");        System.out.println(cellHtml);        fis.close();    }    public String getHtmlFormatedCellValueFromSheet(XSSFSheet sheet, String cellName) {        CellReference cellReference = new CellReference(cellName);        XSSFRow row = sheet.getRow(cellReference.getRow());        XSSFCell cell = row.getCell(cellReference.getCol());        XSSFRichTextString cellText = cell.getRichStringCellValue();        String htmlCode = "";        // htmlCode = "<html>";        for (int i = 0; i < cellText.numFormattingRuns(); i++) { try {     htmlCode += getFormatFromFont(cellText.getFontAtIndex(i)); } catch (NullPointerException ex) { } try {     htmlCode += getFormatFromFont(cellText  .getFontOfFormattingRun(i)); } catch (NullPointerException ex) { } int indexStart = cellText.getIndexOfFormattingRun(i); int indexEnd = indexStart + cellText.getLengthOfFormattingRun(i); htmlCode += cellText.getString().substring(indexStart, indexEnd);        }        if (inItalic) { htmlCode += "</i>"; inItalic = false;        }        if (inBold) { htmlCode += "</b>"; inBold = false;        }        // htmlCode += "</html>";        return htmlCode;    }    private String getFormatFromFont(XSSFFont font) {        String formatHtmlCode = "";        if (font.getItalic() && !inItalic) { formatHtmlCode += "<i>"; inItalic = true;        } else if (!font.getItalic() && inItalic) { formatHtmlCode += "</i>"; inItalic = false;        }        if (font.getBold() && !inBold) { formatHtmlCode += "<b>"; inBold = true;        } else if (!font.getBold() && inBold) { formatHtmlCode += "</b>"; inBold = false;        }        return formatHtmlCode;    }}

我的输出

This is a test. Will this text be <b>bold</b> or <i>italic</i>

我认为这就是您想要的,我只是向您展示可能性,我没有使用最佳代码实践,我只是在快速编程以产生输出。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5426967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存