我最終加入到我原來的類實現這一點,創建的xls文件使用jsoup和apache POI。我能夠使用jsoup檢索所有html元素的'style'標籤的內容作爲字符串,然後解析這些字符串尋找font-family,font-size等的任何可以應用於Excel的格式。對於每個屬性,我必須弄清楚如何將特定的html樣式轉換爲POI中的cellStyle。這裏是一個使用rgb樣式的字體顏色示例:
private HSSFFont setFontColor(HSSFWorkbook wb, HSSFFont font, String colorCode) {
HSSFPalette palette = wb.getCustomPalette();
// if format is rgb(x,y,z) form, retrieve the 3 numbers within the
// parentheses
colorCode = colorCode.trim();
if (colorCode.toLowerCase().startsWith("rgb")) {
String rgbNumString = colorCode.substring(3, colorCode.length()).trim();
rgbNumString = rgbNumString.substring(1, rgbNumString.length()-1).trim();
String[] rgbNums = StringUtils.split(rgbNumString, ",");
int[] rgbInts = { Integer.parseInt(rgbNums[0].trim()),
Integer.parseInt(rgbNums[1].trim()),
Integer.parseInt(rgbNums[2].trim()) };
HSSFColor color = palette.findSimilarColor(rgbInts[0], rgbInts[1], rgbInts[2]);
short palIndex = color.getIndex();
font.setColor(palIndex);
return font;
}
return font;
}
我有一個項目在這裏:github.com/alanhay/html-exporter。正在進行中,但處理足夠的CSS子集以良好地格式化報告。還支持凍結窗格,多頁,公式。鏈接到閱讀我的頁面上的示例XLS。使用您建議使用JSoup/Apache POI的方法,但使用額外的CSS解析器通過塊或元素上定義的內聯樣式處理樣式。 –