我将其作为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>
我认为这就是您想要的,我只是向您展示可能性,我没有使用最佳代码实践,我只是在快速编程以产生输出。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)