• Java-----Excel转HTML


    尽管是转别人的(忘了哪转过来的了),但此处标为原创不是为了提高訪问量,也不是为了其它。仅仅是纯粹的认为有实际用途。希望能给很多其它有此需求的人看到并能帮到他们就足够了


    所需jar包:jxl.jar

    package cn.com.utils;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.InputStream;
    import java.util.HashMap;
    import java.util.Map;
    
    import jxl.Cell;
    import jxl.Range;
    import jxl.Sheet;
    import jxl.Workbook;
    import jxl.format.Alignment;
    import jxl.format.CellFormat;
    import jxl.format.Colour;
    import jxl.format.VerticalAlignment;
    
    public class ExcelTransformHtml {
    	/**
    	 * 获取Excel文件转换为HTML后的字符串,仅仅支持后缀为xls的Excel(主调方法)
    	 * @param sourcefile <span style="font-family: Arial, Helvetica, sans-serif;"> </span>Excel文件
    	 * @return 返回Excel转换后的HTML字符串
    	 * @throws Exception
    	 */
    	public static String getExcelInfo(File sourcefile) throws Exception {
    		StringBuffer sb = new StringBuffer();
    		InputStream is = new FileInputStream(sourcefile);
    		Workbook rwb = Workbook.getWorkbook(is);
    		Sheet sheet = rwb.getSheet(0);
    		int colnum = sheet.getColumns();
    		int rownum = sheet.getRows();
    		Map<String, String> map[] = getRowSpanColSpanMap(sheet);
    		sb.append("<table border='1' cellspacing='0'>");
    		for (int row = 0; row < rownum; row++) {
    			sb.append("<tr>");
    			for (int col = 0; col < colnum; col++) {
    				Cell cell = sheet.getCell(col, row);
    				String content = cell.getContents();
    				CellFormat cellFormat = cell.getCellFormat();
    				if (map[0].containsKey(row + "," + col)) {
    					String pointString = map[0].get(row + "," + col);
    					map[0].remove(row + "," + col);
    					int bottomeRow = Integer.valueOf(pointString.split(",")[0]);
    					int bottomeCol = Integer.valueOf(pointString.split(",")[1]);
    					int rowSpan = bottomeRow - row + 1;
    					int colSpan = bottomeCol - col + 1;
    					sb.append("<td rowspan= '" + rowSpan + "' colspan= '" + colSpan + "' ");
    				} else if (map[1].containsKey(row + "," + col)) {
    					map[1].remove(row + "," + col);
    					continue;
    				} else {
    					sb.append("<td ");
    				}
    				if (cellFormat != null) {
    					Alignment alignment = cellFormat.getAlignment();
    					sb.append("align='" + convertToHtmlGrammer(alignment) + "' ");
    					VerticalAlignment verticalAlignment = cellFormat.getVerticalAlignment();
    					sb.append("valign='" + convertToHtmlGrammer(verticalAlignment) + "' ");
    					// sb.append("style='color:" + convertToHtmlGrammer(cellFormat.getFont().getColour()) + ";");  //
    					Colour bgcolour = cellFormat.getBackgroundColour();
    					// sb.append("background-color:" + convertToHtmlGrammer(bgcolour) + ";");  //
    					// Colour bottomColour = cellFormat.getBorderColour(Border.BOTTOM);  //
    					// Colour leftColour = cellFormat.getBorderColour(Border.LEFT);
    					// Colour rightColour = cellFormat.getBorderColour(Border.RIGHT);
    					// Colour topColour = cellFormat.getBorderColour(Border.TOP);
    					
    					// System.out.print("bottomColour:" +
    					// bottomColour.getDescription());
    					// System.out.print(" leftColour:" +
    					// leftColour.getDescription());
    					// System.out.print(" rightColour:" +
    					// rightColour.getDescription());
    					// System.out.println(" topColour:" +
    					// topColour.getDescription());
    					
    					// sb.append("border-color:" + convertToHtmlGrammer(bottomColour) + ";");  // 
    					sb.append("' ");
    				}
    				sb.append(">");
    				if (content == null || "".equals(content.trim())) {
    					sb.append("   ");
    				} else {
    					sb.append(content);
    				}
    				sb.append("</td>");
    			}
    			sb.append("</tr>");
    		}
    		sb.append("</table>");
    		rwb.close();
    		is.close();
    		return sb.toString();
    	}
    
    	@SuppressWarnings("unchecked")
    	private static Map<String, String>[] getRowSpanColSpanMap(Sheet sheet) {
    		Map<String, String> map0 = new HashMap<String, String>();
    		Map<String, String> map1 = new HashMap<String, String>();
    		Range[] range = sheet.getMergedCells();
    		for (int i = 0; i < range.length; i++) {
    			Cell topCell = range[i].getTopLeft();
    			Cell bottomCell = range[i].getBottomRight();
    			int topRow = topCell.getRow();
    			int topCol = topCell.getColumn();
    			int bottomRow = bottomCell.getRow();
    			int bottomCol = bottomCell.getColumn();
    			map0.put(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;
    	}
    
    	private static String convertToHtmlGrammer(Alignment alignment) {
    		String align = "left";
    		switch (alignment.getValue()) {
    		case 1:
    			align = "left";
    			break;
    		case 2:
    			align = "center";
    			break;
    		case 3:
    			align = "right";
    			break;
    		case 5:
    			align = "justify";
    			break;
    		default:
    			break;
    		}
    		return align;
    	}
    
    	private static String convertToHtmlGrammer(VerticalAlignment verticalAlignment) {
    		String valign = "middle";
    		switch (verticalAlignment.getValue()) {
    		case 1:
    			valign = "middle";
    			break;
    		case 2:
    			valign = "bottom";
    			break;
    		case 3:
    			valign = "top";
    			break;
    		default:
    			break;
    		}
    		return valign;
    	}
    
    	/*private static String convertToHtmlGrammer(Colour colour) {
    		StringBuffer sb = new StringBuffer("");
    		if (colour != null && !"default background".equalsIgnoreCase(colour.getDescription())) {
    			sb.append("#");
    			sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getRed())));
    			sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getGreen())));
    			sb.append(fillWithZero(Integer.toHexString(colour.getDefaultRGB().getBlue())));
    		}
    		return sb.toString();
    	}*/
    
    	private static String fillWithZero(String str) {
    		if (str != null && str.length() < 2) {
    			return "0" + str;
    		}
    		return str;
    	}
    }
    



  • 相关阅读:
    Repeater1绑定数据,编辑数据的一些参考文章
    UrlRewritingNet 完美实现 ASP.NET 2.0 中的URL重写(映射) (转)
    asp.net下linkbutton的前后台使用方法
    sqlserver 中判断是否数字,是否汉字的方法
    asp.net中Excel导入(使用微软OLEDB驱动)
    asp.net获取URL和IP地址
    警告: 程序集绑定日志记录被关闭。
    301永久重定向asp.net实现方法
    Net程序如何防止被注入
    C++实现wc.exe程序
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5204461.html
Copyright © 2020-2023  润新知