读取 Excel(POI) 转 HTML

来源:互联网 发布:医疗器械软件描述范例 编辑:程序博客网 时间:2024/05/18 18:01
不知道大家有没有遇到把Excel 表格里面的内容输出到页面中的情况,反正小弟最近遇到了这种需求,就是Excel 里面有啥样式情况,那么网页中就是什么情况,由于Excel表格有很多,都在同一个文件夹下面,所以还需要遍历文件夹下所有的Excel 文件才行。
需求和图片效果请大家看下图:
这是Excel里面的样式以及内容,有单元格的合并,有边框,还有不同的颜色。
对应网页:

代码结构:可以建一个 java web 工程,也可以直接新建一个java 工程,我建的 java web 工程。

源代码:
POIReadExcel
package com.marvel.excel1129;/** * @功能描述 POI 读取 Excel 转 HTML 支持 03xls 和 07xlsx 版本 包含样式 * @创建时间 2016-11-29 * @作者 marvel */public class POIReadExcel {/**     * 测试     * @param args     */    public static String mains(String path) {        InputStream is = null;        String htmlExcel = null;        try {            File sourcefile = new File(path);            is = new FileInputStream(sourcefile);            Workbook wb = WorkbookFactory.create(is);// 此WorkbookFactory在POI-3.10版本中使用需要添加dom4j            if (wb instanceof XSSFWorkbook) {                XSSFWorkbook xWb = (XSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(xWb, true);            } else if (wb instanceof HSSFWorkbook) {                HSSFWorkbook hWb = (HSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(hWb, true);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                is.close();            } catch (IOException e) {                e.printStackTrace();            }        }return htmlExcel;    }    /**     * 程序入口方法     *      * @param filePath     *            文件的路径     * @param isWithStyle     *            是否需要表格样式 包含 字体 颜色 边框 对齐方式     * @return     *         <table>     *         ...     *         </table>     *         字符串     */    public String readExcelToHtml(String filePath, boolean isWithStyle) {        InputStream is = null;        String htmlExcel = null;        try {            File sourcefile = new File(filePath);            is = new FileInputStream(sourcefile);            Workbook wb = WorkbookFactory.create(is);            if (wb instanceof XSSFWorkbook) {                XSSFWorkbook xWb = (XSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(xWb, isWithStyle);            } else if (wb instanceof HSSFWorkbook) {                HSSFWorkbook hWb = (HSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(hWb, isWithStyle);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                is.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return htmlExcel;    }    public static String getExcelInfo(Workbook wb, boolean isWithStyle) {        StringBuffer sb = new StringBuffer();        Sheet sheet = wb.getSheetAt(0);// 获取第一个Sheet的内容        int lastRowNum = sheet.getLastRowNum();        Map<String, String> map[] = getRowSpanColSpanMap(sheet);        sb.append("<table style='border-collapse:collapse;' width='100%'>");        Row row = null; // 兼容        Cell cell = null; // 兼容        for (int rowNum = sheet.getFirstRowNum(); rowNum <= lastRowNum; rowNum++) {            row = sheet.getRow(rowNum);            if (row == null) {                sb.append("<tr><td >  </td></tr>");                continue;            }            sb.append("<tr>");            int lastColNum = row.getLastCellNum();            for (int colNum = 0; colNum < lastColNum; colNum++) {                cell = row.getCell(colNum);                if (cell == null) { // 特殊情况 空白的单元格会返回null                    sb.append("<td> </td>");                    continue;                }                String stringValue = getCellValue(cell);                if (map[0].containsKey(rowNum + "," + colNum)) {                    String pointString = map[0].get(rowNum + "," + colNum);                    map[0].remove(rowNum + "," + colNum);                    int bottomeRow = Integer.valueOf(pointString.split(",")[0]);                    int bottomeCol = Integer.valueOf(pointString.split(",")[1]);                    int rowSpan = bottomeRow - rowNum + 1;                    int colSpan = bottomeCol - colNum + 1;                    sb.append("<td rowspan= '" + rowSpan + "' colspan= '" + colSpan + "' ");                } else if (map[1].containsKey(rowNum + "," + colNum)) {                    map[1].remove(rowNum + "," + colNum);                    continue;                } else {                    sb.append("<td ");                }                // 判断是否需要样式                if (isWithStyle) {                    dealExcelStyle(wb, sheet, cell, sb);// 处理单元格样式                }                sb.append(">");                if (stringValue == null || "".equals(stringValue.trim())) {                    sb.append("   ");                } else {                    // 将ascii码为160的空格转换为html下的空格( )                if(stringValue.contains("x")){                sb.append("<input type='text' id='"+stringValue+"' name='"+stringValue+"' value='' />");
                }else{                sb.append(stringValue.replace(String.valueOf((char) 160), " "));                }                }                sb.append("</td>");            }            sb.append("</tr>");        }        sb.append("</table>");        return sb.toString();    }    private static Map<String, String>[] getRowSpanColSpanMap(Sheet sheet) {        Map<String, String> map0 = new HashMap<String, String>();        Map<String, String> map1 = new HashMap<String, String>();        int mergedNum = sheet.getNumMergedRegions();        CellRangeAddress range = null;        for (int i = 0; i < mergedNum; i++) {            range = (CellRangeAddress) sheet.getMergedRegion(i);            int topRow = range.getFirstRow();            int topCol = range.getFirstColumn();            int bottomRow = range.getLastRow();            int bottomCol = range.getLastColumn();            map0.put(topRow + "," + topCol, bottomRow + "," + bottomCol);            // System.out.println(topRow + "," + topCol + "," + bottomRow + ","            // + bottomCol);            int tempRow = topRow;            while (tempRow <= bottomRow) {                int tempCol = topCol;                while (tempCol <= bottomCol) {                    map1.put(tempRow + "," + tempCol, "");                    tempCol++;                }                tempRow++;            }            map1.remove(topRow + "," + topCol);        }        Map[] map = { map0, map1 };        return map;    }    /**     * 获取表格单元格Cell内容     *      * @param cell     * @return     */    private static String getCellValue(Cell cell) {        String result = new String();        switch (cell.getCellType()) {        case Cell.CELL_TYPE_NUMERIC:// 数字类型            if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式                SimpleDateFormat sdf = null;                if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {                    sdf = new SimpleDateFormat("HH:mm");                } else {// 日期                    sdf = new SimpleDateFormat("yyyy-MM-dd");                }                Date date = cell.getDateCellValue();                result = sdf.format(date);            } else if (cell.getCellStyle().getDataFormat() == 58) {                // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");                double value = cell.getNumericCellValue();                Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value);                result = sdf.format(date);            } else {                double value = cell.getNumericCellValue();                CellStyle style = cell.getCellStyle();                DecimalFormat format = new DecimalFormat();                String temp = style.getDataFormatString();                // 单元格设置成常规                if (temp.equals("General")) {                    format.applyPattern("#");                }                result = format.format(value);            }            break;        case Cell.CELL_TYPE_STRING:// String类型            result = cell.getRichStringCellValue().toString();            break;        case Cell.CELL_TYPE_BLANK:            result = "";            break;        default:            result = "";            break;        }        return result;    }    /**     * 处理表格样式     *      * @param wb     * @param sheet     * @param cell     * @param sb     */    private static void dealExcelStyle(Workbook wb, Sheet sheet, Cell cell, StringBuffer sb) {        CellStyle cellStyle = cell.getCellStyle();        if (cellStyle != null) {            short alignment = cellStyle.getAlignment();            sb.append("align='" + convertAlignToHtml(alignment) + "' ");// 单元格内容的水平对齐方式            short verticalAlignment = cellStyle.getVerticalAlignment();            sb.append("valign='" + convertVerticalAlignToHtml(verticalAlignment) + "' ");// 单元格中内容的垂直排列方式            if (wb instanceof XSSFWorkbook) {                XSSFFont xf = ((XSSFCellStyle) cellStyle).getFont();                short boldWeight = xf.getBoldweight();                sb.append("style='");                sb.append("font-weight:" + boldWeight + ";"); // 字体加粗                sb.append("font-size: " + xf.getFontHeight() / 2 + "%;"); // 字体大小                int columnWidth = sheet.getColumnWidth(cell.getColumnIndex());                sb.append("width:" + columnWidth + "px;");                XSSFColor xc = xf.getXSSFColor();                if (xc != null && !"".equals(xc)) {                    sb.append("color:#" + xc.getARGBHex().substring(2) + ";"); // 字体颜色                }                XSSFColor bgColor = (XSSFColor) cellStyle.getFillForegroundColorColor();                if (bgColor != null && !"".equals(bgColor)) {                    sb.append("background-color:#" + bgColor.getARGBHex().substring(2) + ";"); // 背景颜色                }                sb.append(getBorderStyle(0, cellStyle.getBorderTop(),                        ((XSSFCellStyle) cellStyle).getTopBorderXSSFColor()));                sb.append(getBorderStyle(1, cellStyle.getBorderRight(),                        ((XSSFCellStyle) cellStyle).getRightBorderXSSFColor()));                sb.append(getBorderStyle(2, cellStyle.getBorderBottom(),                        ((XSSFCellStyle) cellStyle).getBottomBorderXSSFColor()));                sb.append(getBorderStyle(3, cellStyle.getBorderLeft(),                        ((XSSFCellStyle) cellStyle).getLeftBorderXSSFColor()));            } else if (wb instanceof HSSFWorkbook) {                HSSFFont hf = ((HSSFCellStyle) cellStyle).getFont(wb);                short boldWeight = hf.getBoldweight();                short fontColor = hf.getColor();                sb.append("style='");                HSSFPalette palette = ((HSSFWorkbook) wb).getCustomPalette(); // 类HSSFPalette用于求的颜色的国际标准形式                HSSFColor hc = palette.getColor(fontColor);                sb.append("font-weight:" + boldWeight + ";"); // 字体加粗                sb.append("font-size: " + hf.getFontHeight() / 2 + "%;"); // 字体大小                String fontColorStr = convertToStardColor(hc);                if (fontColorStr != null && !"".equals(fontColorStr.trim())) {                    sb.append("color:" + fontColorStr + ";"); // 字体颜色                }                int columnWidth = sheet.getColumnWidth(cell.getColumnIndex());                sb.append("width:" + columnWidth + "px;");                short bgColor = cellStyle.getFillForegroundColor();                hc = palette.getColor(bgColor);                String bgColorStr = convertToStardColor(hc);                if (bgColorStr != null && !"".equals(bgColorStr.trim())) {                    sb.append("background-color:" + bgColorStr + ";"); // 背景颜色                }                sb.append(getBorderStyle(palette, 0, cellStyle.getBorderTop(), cellStyle.getTopBorderColor()));                sb.append(getBorderStyle(palette, 1, cellStyle.getBorderRight(), cellStyle.getRightBorderColor()));                sb.append(getBorderStyle(palette, 3, cellStyle.getBorderLeft(), cellStyle.getLeftBorderColor()));                sb.append(getBorderStyle(palette, 2, cellStyle.getBorderBottom(), cellStyle.getBottomBorderColor()));            }            sb.append("' ");        }    }    /**     * 单元格内容的水平对齐方式     *      * @param alignment     * @return     */    private static String convertAlignToHtml(short alignment) {        String align = "left";        switch (alignment) {        case CellStyle.ALIGN_LEFT:            align = "left";            break;        case CellStyle.ALIGN_CENTER:            align = "center";            break;        case CellStyle.ALIGN_RIGHT:            align = "right";            break;        default:            break;        }        return align;    }    /**     * 单元格中内容的垂直排列方式     *      * @param verticalAlignment     * @return     */    private static String convertVerticalAlignToHtml(short verticalAlignment) {        String valign = "middle";        switch (verticalAlignment) {        case CellStyle.VERTICAL_BOTTOM:            valign = "bottom";            break;        case CellStyle.VERTICAL_CENTER:            valign = "center";            break;        case CellStyle.VERTICAL_TOP:            valign = "top";            break;        default:            break;        }        return valign;    }    private static String convertToStardColor(HSSFColor hc) {        StringBuffer sb = new StringBuffer("");        if (hc != null) {            if (HSSFColor.AUTOMATIC.index == hc.getIndex()) {                return null;            }            sb.append("#");            for (int i = 0; i < hc.getTriplet().length; i++) {                sb.append(fillWithZero(Integer.toHexString(hc.getTriplet()[i])));            }        }        return sb.toString();    }    private static String fillWithZero(String str) {        if (str != null && str.length() < 2) {            return "0" + str;        }        return str;    }    static String[] bordesr = { "border-top:", "border-right:", "border-bottom:", "border-left:" };    static String[] borderStyles = { "solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid ",            "solid ", "solid", "solid", "solid", "solid", "solid" };    private static String getBorderStyle(HSSFPalette palette, int b, short s, short t) {        if (s == 0)            return bordesr[b] + borderStyles[s] + "#d0d7e5 1px;";        String borderColorStr = convertToStardColor(palette.getColor(t));        borderColorStr = borderColorStr == null || borderColorStr.length() < 1 ? "#000000" : borderColorStr;        return bordesr[b] + borderStyles[s] + borderColorStr + " 1px;";    }    private static String getBorderStyle(int b, short s, XSSFColor xc) {        if (s == 0)            return bordesr[b] + borderStyles[s] + "#d0d7e5 1px;";        if (xc != null && !"".equals(xc)) {            String borderColorStr = xc.getARGBHex();// t.getARGBHex();            borderColorStr = borderColorStr == null || borderColorStr.length() < 1 ? "#000000"                    : borderColorStr.substring(2);            return bordesr[b] + borderStyles[s] + borderColorStr + " 1px;";        }        return "";    }}package com.marvel.excel1129;/** * @功能描述 POI 读取 Excel 转 HTML 支持 03xls 和 07xlsx 版本 包含样式 * @创建时间 2016-11-29 * @作者 marvel */public class POIReadExcel {/**     * 测试     *      * @param args     */    public static String mains(String path) {        InputStream is = null;        String htmlExcel = null;        try {            File sourcefile = new File(path);            is = new FileInputStream(sourcefile);            Workbook wb = WorkbookFactory.create(is);// 此WorkbookFactory在POI-3.10版本中使用需要添加dom4j            if (wb instanceof XSSFWorkbook) {                XSSFWorkbook xWb = (XSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(xWb, true);            } else if (wb instanceof HSSFWorkbook) {                HSSFWorkbook hWb = (HSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(hWb, true);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                is.close();            } catch (IOException e) {                e.printStackTrace();            }        }return htmlExcel;    }    /**     * 程序入口方法     *      * @param filePath     *            文件的路径     * @param isWithStyle     *            是否需要表格样式 包含 字体 颜色 边框 对齐方式     * @return     *         <table>     *         ...     *         </table>     *         字符串     */    public String readExcelToHtml(String filePath, boolean isWithStyle) {        InputStream is = null;        String htmlExcel = null;        try {            File sourcefile = new File(filePath);            is = new FileInputStream(sourcefile);            Workbook wb = WorkbookFactory.create(is);            if (wb instanceof XSSFWorkbook) {                XSSFWorkbook xWb = (XSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(xWb, isWithStyle);            } else if (wb instanceof HSSFWorkbook) {                HSSFWorkbook hWb = (HSSFWorkbook) wb;                htmlExcel = POIReadExcel.getExcelInfo(hWb, isWithStyle);            }        } catch (Exception e) {            e.printStackTrace();        } finally {            try {                is.close();            } catch (IOException e) {                e.printStackTrace();            }        }        return htmlExcel;    }    public static String getExcelInfo(Workbook wb, boolean isWithStyle) {        StringBuffer sb = new StringBuffer();        Sheet sheet = wb.getSheetAt(0);// 获取第一个Sheet的内容        int lastRowNum = sheet.getLastRowNum();        Map<String, String> map[] = getRowSpanColSpanMap(sheet);        sb.append("<table style='border-collapse:collapse;' width='100%'>");        Row row = null; // 兼容        Cell cell = null; // 兼容        for (int rowNum = sheet.getFirstRowNum(); rowNum <= lastRowNum; rowNum++) {            row = sheet.getRow(rowNum);            if (row == null) {                sb.append("<tr><td >  </td></tr>");                continue;            }            sb.append("<tr>");            int lastColNum = row.getLastCellNum();            for (int colNum = 0; colNum < lastColNum; colNum++) {                cell = row.getCell(colNum);                if (cell == null) { // 特殊情况 空白的单元格会返回null                    sb.append("<td> </td>");                    continue;                }                String stringValue = getCellValue(cell);                if (map[0].containsKey(rowNum + "," + colNum)) {                    String pointString = map[0].get(rowNum + "," + colNum);                    map[0].remove(rowNum + "," + colNum);                    int bottomeRow = Integer.valueOf(pointString.split(",")[0]);                    int bottomeCol = Integer.valueOf(pointString.split(",")[1]);                    int rowSpan = bottomeRow - rowNum + 1;                    int colSpan = bottomeCol - colNum + 1;                    sb.append("<td rowspan= '" + rowSpan + "' colspan= '" + colSpan + "' ");                } else if (map[1].containsKey(rowNum + "," + colNum)) {                    map[1].remove(rowNum + "," + colNum);                    continue;                } else {                    sb.append("<td ");                }                // 判断是否需要样式                if (isWithStyle) {                    dealExcelStyle(wb, sheet, cell, sb);// 处理单元格样式                }                sb.append(">");                if (stringValue == null || "".equals(stringValue.trim())) {                    sb.append("   ");                } else {                    // 将ascii码为160的空格转换为html下的空格( )                if(stringValue.contains("x")){                sb.append("<input type='text' id='"+stringValue+"' name='"+stringValue+"' value='' />");                }else{                sb.append(stringValue.replace(String.valueOf((char) 160), " "));                }                }                sb.append("</td>");            }            sb.append("</tr>");        }        sb.append("</table>");        return sb.toString();    }    private static Map<String, String>[] getRowSpanColSpanMap(Sheet sheet) {        Map<String, String> map0 = new HashMap<String, String>();        Map<String, String> map1 = new HashMap<String, String>();        int mergedNum = sheet.getNumMergedRegions();        CellRangeAddress range = null;        for (int i = 0; i < mergedNum; i++) {            range = (CellRangeAddress) sheet.getMergedRegion(i);            int topRow = range.getFirstRow();            int topCol = range.getFirstColumn();            int bottomRow = range.getLastRow();            int bottomCol = range.getLastColumn();            map0.put(topRow + "," + topCol, bottomRow + "," + bottomCol);            // System.out.println(topRow + "," + topCol + "," + bottomRow + ","            // + bottomCol);            int tempRow = topRow;            while (tempRow <= bottomRow) {                int tempCol = topCol;                while (tempCol <= bottomCol) {                    map1.put(tempRow + "," + tempCol, "");                    tempCol++;                }                tempRow++;            }            map1.remove(topRow + "," + topCol);        }        Map[] map = { map0, map1 };        return map;    }    /**     * 获取表格单元格Cell内容     *      * @param cell     * @return     */    private static String getCellValue(Cell cell) {        String result = new String();        switch (cell.getCellType()) {        case Cell.CELL_TYPE_NUMERIC:// 数字类型            if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式                SimpleDateFormat sdf = null;                if (cell.getCellStyle().getDataFormat() == HSSFDataFormat.getBuiltinFormat("h:mm")) {                    sdf = new SimpleDateFormat("HH:mm");                } else {// 日期                    sdf = new SimpleDateFormat("yyyy-MM-dd");                }                Date date = cell.getDateCellValue();                result = sdf.format(date);            } else if (cell.getCellStyle().getDataFormat() == 58) {                // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58)                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");                double value = cell.getNumericCellValue();                Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(value);                result = sdf.format(date);            } else {                double value = cell.getNumericCellValue();                CellStyle style = cell.getCellStyle();                DecimalFormat format = new DecimalFormat();                String temp = style.getDataFormatString();                // 单元格设置成常规                if (temp.equals("General")) {                    format.applyPattern("#");                }                result = format.format(value);            }            break;        case Cell.CELL_TYPE_STRING:// String类型            result = cell.getRichStringCellValue().toString();            break;        case Cell.CELL_TYPE_BLANK:            result = "";            break;        default:            result = "";            break;        }        return result;    }    /**     * 处理表格样式     *      * @param wb     * @param sheet     * @param cell     * @param sb     */    private static void dealExcelStyle(Workbook wb, Sheet sheet, Cell cell, StringBuffer sb) {        CellStyle cellStyle = cell.getCellStyle();        if (cellStyle != null) {            short alignment = cellStyle.getAlignment();            sb.append("align='" + convertAlignToHtml(alignment) + "' ");// 单元格内容的水平对齐方式            short verticalAlignment = cellStyle.getVerticalAlignment();            sb.append("valign='" + convertVerticalAlignToHtml(verticalAlignment) + "' ");// 单元格中内容的垂直排列方式            if (wb instanceof XSSFWorkbook) {                XSSFFont xf = ((XSSFCellStyle) cellStyle).getFont();                short boldWeight = xf.getBoldweight();                sb.append("style='");                sb.append("font-weight:" + boldWeight + ";"); // 字体加粗                sb.append("font-size: " + xf.getFontHeight() / 2 + "%;"); // 字体大小                int columnWidth = sheet.getColumnWidth(cell.getColumnIndex());                sb.append("width:" + columnWidth + "px;");                XSSFColor xc = xf.getXSSFColor();                if (xc != null && !"".equals(xc)) {                    sb.append("color:#" + xc.getARGBHex().substring(2) + ";"); // 字体颜色                }                XSSFColor bgColor = (XSSFColor) cellStyle.getFillForegroundColorColor();                if (bgColor != null && !"".equals(bgColor)) {                    sb.append("background-color:#" + bgColor.getARGBHex().substring(2) + ";"); // 背景颜色                }                sb.append(getBorderStyle(0, cellStyle.getBorderTop(),                        ((XSSFCellStyle) cellStyle).getTopBorderXSSFColor()));                sb.append(getBorderStyle(1, cellStyle.getBorderRight(),                        ((XSSFCellStyle) cellStyle).getRightBorderXSSFColor()));                sb.append(getBorderStyle(2, cellStyle.getBorderBottom(),                        ((XSSFCellStyle) cellStyle).getBottomBorderXSSFColor()));                sb.append(getBorderStyle(3, cellStyle.getBorderLeft(),                        ((XSSFCellStyle) cellStyle).getLeftBorderXSSFColor()));            } else if (wb instanceof HSSFWorkbook) {                HSSFFont hf = ((HSSFCellStyle) cellStyle).getFont(wb);                short boldWeight = hf.getBoldweight();                short fontColor = hf.getColor();                sb.append("style='");                HSSFPalette palette = ((HSSFWorkbook) wb).getCustomPalette(); // 类HSSFPalette用于求的颜色的国际标准形式                HSSFColor hc = palette.getColor(fontColor);                sb.append("font-weight:" + boldWeight + ";"); // 字体加粗                sb.append("font-size: " + hf.getFontHeight() / 2 + "%;"); // 字体大小                String fontColorStr = convertToStardColor(hc);                if (fontColorStr != null && !"".equals(fontColorStr.trim())) {                    sb.append("color:" + fontColorStr + ";"); // 字体颜色                }                int columnWidth = sheet.getColumnWidth(cell.getColumnIndex());                sb.append("width:" + columnWidth + "px;");                short bgColor = cellStyle.getFillForegroundColor();                hc = palette.getColor(bgColor);                String bgColorStr = convertToStardColor(hc);                if (bgColorStr != null && !"".equals(bgColorStr.trim())) {                    sb.append("background-color:" + bgColorStr + ";"); // 背景颜色                }                sb.append(getBorderStyle(palette, 0, cellStyle.getBorderTop(), cellStyle.getTopBorderColor()));                sb.append(getBorderStyle(palette, 1, cellStyle.getBorderRight(), cellStyle.getRightBorderColor()));                sb.append(getBorderStyle(palette, 3, cellStyle.getBorderLeft(), cellStyle.getLeftBorderColor()));                sb.append(getBorderStyle(palette, 2, cellStyle.getBorderBottom(), cellStyle.getBottomBorderColor()));            }            sb.append("' ");        }    }    /**     * 单元格内容的水平对齐方式     *      * @param alignment     * @return     */    private static String convertAlignToHtml(short alignment) {        String align = "left";        switch (alignment) {        case CellStyle.ALIGN_LEFT:            align = "left";            break;        case CellStyle.ALIGN_CENTER:            align = "center";            break;        case CellStyle.ALIGN_RIGHT:            align = "right";            break;        default:            break;        }        return align;    }    /**     * 单元格中内容的垂直排列方式     *      * @param verticalAlignment     * @return     */    private static String convertVerticalAlignToHtml(short verticalAlignment) {        String valign = "middle";        switch (verticalAlignment) {        case CellStyle.VERTICAL_BOTTOM:            valign = "bottom";            break;        case CellStyle.VERTICAL_CENTER:            valign = "center";            break;        case CellStyle.VERTICAL_TOP:            valign = "top";            break;        default:            break;        }        return valign;    }    private static String convertToStardColor(HSSFColor hc) {        StringBuffer sb = new StringBuffer("");        if (hc != null) {            if (HSSFColor.AUTOMATIC.index == hc.getIndex()) {                return null;            }            sb.append("#");            for (int i = 0; i < hc.getTriplet().length; i++) {                sb.append(fillWithZero(Integer.toHexString(hc.getTriplet()[i])));            }        }        return sb.toString();    }    private static String fillWithZero(String str) {        if (str != null && str.length() < 2) {            return "0" + str;        }        return str;    }    static String[] bordesr = { "border-top:", "border-right:", "border-bottom:", "border-left:" };    static String[] borderStyles = { "solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid ", "solid ",            "solid ", "solid", "solid", "solid", "solid", "solid" };    private static String getBorderStyle(HSSFPalette palette, int b, short s, short t) {        if (s == 0)            return bordesr[b] + borderStyles[s] + "#d0d7e5 1px;";        String borderColorStr = convertToStardColor(palette.getColor(t));        borderColorStr = borderColorStr == null || borderColorStr.length() < 1 ? "#000000" : borderColorStr;        return bordesr[b] + borderStyles[s] + borderColorStr + " 1px;";    }    private static String getBorderStyle(int b, short s, XSSFColor xc) {        if (s == 0)            return bordesr[b] + borderStyles[s] + "#d0d7e5 1px;";        if (xc != null && !"".equals(xc)) {            String borderColorStr = xc.getARGBHex();// t.getARGBHex();            borderColorStr = borderColorStr == null || borderColorStr.length() < 1 ? "#000000"                    : borderColorStr.substring(2);            return bordesr[b] + borderStyles[s] + borderColorStr + " 1px;";        }        return "";    }}
这是BianLiExcelToHtml 
package com.marvel.excel1129;/** * 遍历文件夹下面的所有Excel表格 * 读出来表格,并把表格里面的内容都写到 网页中去 * @作者 Marvel * @创建时间 2016-11-29 * */public class BianLiExcelToHtml {public static void main(String [] args) throws Exception{//这个是存放着excel 表格的文件夹String path = "D:\\marvel_excel\\";//这个是存放生成 html 页面的文件夹String toPath = "D:\\marvel_html\\";//把生成的文件放到 WebRoot 下面//String toPath = "D:\\MyEclipse2014\\projects\\excel1129\\WebRoot\\";String paths = null;String name = null;String str = null;File file = new File(path) ;//获取该文件夹下面的所有文件File [] files = file.listFiles() ;//通过循环处理每一个 excel 表格文件for(int i=0;i<files.length ; i++){paths =files[i]+"";//excel的全路径//把Excel里面读出的内容都存到字符串中去str = POIReadExcel.mains(paths);//HTML 文件的名字name = files[i].getName().replace("xls", "html");//生成 html 页面的路径paths = toPath+name;//创建一个文本文件File f = new File(paths);if(!f.exists()){f.createNewFile();}FileWriter fw = new FileWriter(f);PrintWriter pw = new PrintWriter(fw);//把内容存到文本文件中去pw.append(str);pw.flush();pw.close();}}}
我记得以前是可以保留java代码的样式的,那样比这好看多了,不过大家可以可以考到自己 IDE里面去看就行了。



0 0