java poi对excel处理 用jsp显示处理

java poi对excel处理 用jsp显示处理

package cn.hnedu.util;

import java.io.File;
import java.io.FileInputStream;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import oracle.net.aso.r;

import org.apache.openjpa.lib.conf.StringValue;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPalette;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.util.CellRangeAddress;

import bsh.org.objectweb.asm.Label;

/**
 * poi-3.7
 *
 * @author Administrator
 *
 */
public class ExcelUtils {

 public ExcelUtils() {
  
 }
   
 private int sumWidth;
 
 public static void main(String args[]) {
  ExcelUtils eu = new ExcelUtils();
  // String filepath="E:\\myproject\\eipplugin\\test.xls";
  String filepath = "D:\\1.xls";
  HSSFWorkbook workbook = eu.readExcelFile(filepath);
  String exceltitle = eu.getFirstRowContent(workbook, 0);
  // System.out.println(exceltitle);
  // StringBuffer htmlsource=eu.excelToHtmlSource(workbook, 0);
  StringBuffer htmlsource = eu.excelToHtmlJs(workbook, 0);
  StringBuffer htmlbuf = new StringBuffer("");
  htmlbuf.append(eu.headerHtmlStart(exceltitle));

  htmlbuf.append(htmlsource);

  htmlbuf.append(eu.headerHtmlEnd());

  // htmlbuf.append(eu.excelToHtmlSource(workbook, 0));

  htmlbuf.append(eu.bodyHtml());
  htmlbuf.append(eu.bodyHtmlEnd());

  try {
   FileUtils.writeFile("E:\\excel\\小学\\excel3.html", htmlbuf);
  } catch (Exception e) {
   e.printStackTrace();
  }
  // System.out.println(htmlsource);
 }

 public StringBuffer headerHtmlStart(String title) {
  StringBuffer sb = new StringBuffer("");
  sb.append("<html>\n");
  sb.append("<head>\n");
  sb
    .append("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=gb2312\" />\n");
  sb.append("<META HTTP-EQUIV=\"pragma\" CONTENT=\"no-cache\">\n");
  sb
    .append("<META HTTP-EQUIV=\"Cache-Control\" CONTENT=\"no-cache, must-revalidate\">\n");
  sb.append("<META HTTP-EQUIV=\"expires\" CONTENT=\"0\">\n");

  sb.append("<title>" + title + "</title>\n");
 // sb.append("<link href=\"js/style.css\" rel=\"stylesheet\" type=\"text/css\" />\n");
  sb.append("<SCRIPT type=\"text/javascript\" src=\"js/jquery-1.3.2.min.js\"></SCRIPT>\n");
  sb.append("<script type=\"text/javascript\" src=\"js/scripts-pack.js\"></script>\n");
  sb.append("<script type=\"text/javascript\" src=\"js/jquery-ui-1.7.2.custom.min.js\"></script>\n");
  sb.append("<script type=\"text/javascript\" src=\"js/jquery.chromatable.js\"></script>\n");
  return sb;
 }

 public StringBuffer headerHtmlEnd() {
  StringBuffer sb = new StringBuffer("");
  sb.append("</head>\n");
  sb.append("<body>\n");// 进入页面就刷新下

  return sb;
 }

 public StringBuffer bodyHtml() {
  StringBuffer sb = new StringBuffer("");
  sb.append("<a id=\"deldata\" href=\"#\">查看全部结果</a>\n");
  sb.append("<br/>\n");
  sb.append("<table id='exceltitletable' width=\""+this.getSumWidth()+"\"   border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
  sb.append("</table>\n");
  sb.append("<table id='exceltable'  width=\""+this.getSumWidth()+"\"  border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");

  sb.append("<thead>  \n");//width=\""+this.getSumWidth()+"\"  width=\""+this.getSumWidth()+"\"
  sb.append("</thead>\n");
  sb.append("<tbody>\n");
  sb.append("</tbody>\n");
  sb.append("</table>\n");
  return sb;
 }

 public StringBuffer bodyHtml(HSSFWorkbook workbook, int sheetindex) {
  int trwidth = this.getTrWidth(workbook, sheetindex);
  StringBuffer sb = new StringBuffer("");
  sb.append("<a id=\"deldata\" href=\"#\">查看全部结果</a>\n");
  sb.append("<br/>\n");
  sb
    .append("<table id='exceltitletable' border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");
  sb.append("</table>\n");
  sb.append("<table id='exceltable' ");
  sb.append("border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");

  sb.append("<thead>  \n");
  sb.append("</thead>\n");
  sb.append("<tbody>\n");
  sb.append("</tbody>\n");
  sb.append("</table>\n");
  return sb;
 }

 public StringBuffer bodyHtmlEnd() {
  StringBuffer sb = new StringBuffer("");
  sb.append("</body>\n");
  sb.append("</html>\n");
  return sb;
 }

 private int getTdWidth(Sheet sheet, int startCol, int endCol) {
  int tdwidth = 0;
  for (int i = startCol; i <= endCol; i++) {
   int tempwidth = sheet.getColumnWidth(i) / 32;
   tdwidth = tdwidth + tempwidth;

  }
  return tdwidth;
 }

 public StringBuffer excelToHtmlJs(HSSFWorkbook workbook, int sheetindex) {
  StringBuffer sb = new StringBuffer("");

  HSSFSheet sheet = workbook.getSheetAt(sheetindex);
 
  int lastRowNum = sheet.getLastRowNum();
  System.out.println("lastRowNum=" + lastRowNum);
  Map<String, String> map[] = getRowSpanColSpanMap(sheet);
  
  HSSFRow row1 = null;
  HSSFCell cell1 = null;
  int lastColNums=0;
  for (int rowNum = sheet.getFirstRowNum(),i=0; rowNum <= lastRowNum; rowNum++,i++) {
   row1 = (HSSFRow) sheet.getRow(rowNum);
   
   if ( !" ".equals(row1)) {
     lastColNums = row1.getLastCellNum();
    int sumWidth=0;// 求头部的总width
    System.out.println("lastColNums:"+lastColNums);
   }
   
           // break;
   
   
  for (int colNum = 0,j=0; colNum < lastColNums; colNum++,j++) {
    cell1 = row1.getCell(colNum);
    int tdwidth = sheet.getColumnWidth(colNum) / 32;
    //求头的总的width
    // System.out.println("tdwidth="+tdwidth);
     sumWidth+=tdwidth;  
     this.setSumWidth(sumWidth);
     System.out.println("tdwidth="+tdwidth);
     
     
    }
  break;
  }
  
  sb.append("<script type=\"text/javascript\">\n");
  int sum=this.getSumWidth();//
  System.out.println("sum="+sum);
  sb.append(" $(document).ready(function(){\n");
  sb.append(" $(\"#exceltable\").chromatable({\n");
  sb.append(" width: '"+sum+"px',\n"); // specify 100%, auto, or a fixed pixel amount
  sb.append(" height: \"400px\",\n");
  sb.append(" scrolling: \"yes\"\n"); // must have the jquery-1.3.2.min.js script installed to use
  sb.append(" });\n");
  sb.append(" });\n");
  sb.append("  $(document).ready(function() {\n");
  
  

  // sb.append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");

  HSSFRow row = null;

  HSSFCell cell = null;
  // System.out.println(sheet.getPhysicalNumberOfRows());
  List rangennumList = this.getRangeRows(sheet);
  int rangenum = rangennumList.size();
  System.out.println("Srangenum=" + rangenum);
  
  if(rangenum==2){
   rangenum+=1;
  }
  if(rangenum==3){
    rangenum+=1;
  }
  
  if(rangenum==7){
     rangenum-=2;
   }
      if (rangenum==12) {
  rangenum-=6;
    }
      if (rangenum==13) {
    rangenum-=7;
      }
      if (rangenum==8) {
      rangenum-=3;
      }
      if(rangenum==11){
       rangenum-=5;
      }
      if(rangenum==10){
       rangenum-=4;
      }
      if(rangenum==9){
       rangenum-=3;
      }
      if(rangenum==14){
       rangenum-=8;
      }
      if(rangenum==18){
       rangenum/=3;
      }
      if(rangenum==15){
       rangenum-=9;
      }
      if(rangenum==16){
       rangenum-=10;
      }
      if(rangenum==17){
       rangenum-=12;
      }
     

  System.out.println("Trangenum=" + rangenum);
  
  

  for (int rowNum = sheet.getFirstRowNum(); rowNum <= lastRowNum; rowNum++) {
   StringBuffer strbuf = new StringBuffer("");
   int trwidth = 0;
   row = (HSSFRow) sheet.getRow(rowNum);
   if (row == null) {

    strbuf.append("<tr><td > &nbsp;</td></tr>");

    continue;
   }

   strbuf.append("<tr>");
   int lastColNum = row.getLastCellNum();
   //int sumWidth=0;// 求头部的总width
   System.out.println("lastColNum:"+lastColNum);
   for (int colNum = 0; colNum < lastColNum; colNum++) {

    cell = row.getCell(colNum);
    int tdwidth = sheet.getColumnWidth(colNum) / 32;
    if (cell == null) {
     cell = row.createCell(colNum);
     cell.setCellValue("");
     // strbuf.append("<td>&nbsp;</td>");
     // continue;
    }
    
   
    
    HSSFCellStyle cellStyle = cell.getCellStyle();
    cellStyle.setWrapText(true);     
    cell.setCellStyle(cellStyle);
    String stringValue = getCellValue(cell);
    // String stringValue = this.getStringCellValue(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;
     strbuf.append("<td width=\""
       + getTdWidth(sheet, colNum, bottomeCol)
       + "\" rowspan=\"" + rowSpan + "\" colspan=\""
       + colSpan + "\" ");
    
     // System.out.print(getTdWidth(sheet,colNum,bottomeCol)+",");
    } else if (map[1].containsKey(rowNum + "," + colNum)) {

     map[1].remove(rowNum + "," + colNum);

     continue;

    } else {
     // System.out.print(tdwidth+",");
     if ("甲".equals(stringValue) || "乙".equals(stringValue)) {
      int tdwidths=tdwidth-10;
      strbuf.append("<th  filter-type=\"ddl\" width=\""
        + (tdwidths) + "\" ");
     } else if("&nbsp;".equals(stringValue)|| " ".equals(stringValue)) {
      strbuf.append("<td");
     }else{
      strbuf.append("<td width=\"" + tdwidth + "\" ");
      
     }
    
    }
    

    if (cellStyle != null) {

     short alignment = cellStyle.getAlignment();

     strbuf.append("align=\"" + convertAlignToHtml(alignment)
       + "\" ");

     short verticalAlignment = cellStyle.getVerticalAlignment();
     strbuf.append("valign=\""
       + convertVerticalAlignToHtml(verticalAlignment)
       + "\" ");

     HSSFFont hf = cellStyle.getFont(workbook);

     short boldWeight = hf.getBoldweight();

     short fontColor = hf.getColor();

     strbuf.append("style=\"");

     HSSFPalette palette = workbook.getCustomPalette(); // 类HSSFPalette用于求的颜色的国际标准形式

     HSSFColor hc = palette.getColor(fontColor);
     // System.out.println(boldWeight);
     // sb.append("font-weight:" + boldWeight + ";"); //字体加粗

     // sb.append("font-size: " + hf.getFontHeight()/2 + "%;");
     // //字体大小
     strbuf.append("font-size: " + hf.getFontHeightInPoints()
       + "pt;");
     strbuf.append("font-family:" + hf.getFontName() + ";");

     String fontColorStr = convertToStardColor(hc);

     if (fontColorStr != null && !"".equals(fontColorStr.trim())) {

      strbuf.append("color:" + fontColorStr + ";"); // 字体颜色
     }

     short bgColor = cellStyle.getFillForegroundColor();

     hc = palette.getColor(bgColor);

     String bgColorStr = convertToStardColor(hc);

     if (bgColorStr != null && !"".equals(bgColorStr.trim())) {

      strbuf.append("background-color:" + bgColorStr + ";"); // 背景颜色
     }

     short borderColor = cellStyle.getBottomBorderColor();
     short bordertop = cellStyle.getBorderTop();
     short borderleft = cellStyle.getBorderLeft();
     short borderright = cellStyle.getBorderRight();
     short borderbottom = cellStyle.getBorderBottom();
     short colorbottom = cellStyle.getBottomBorderColor();
     short colortop = cellStyle.getTopBorderColor();
     short colorleft = cellStyle.getLeftBorderColor();
     short colorright = cellStyle.getRightBorderColor();
     String borstyletop = this
       .convertBorderStyleToHtml(bordertop);
     String borstyleleft = this
       .convertBorderStyleToHtml(borderleft);
     String borstyleright = this
       .convertBorderStyleToHtml(borderright);
     String borstylebottom = this
       .convertBorderStyleToHtml(borderbottom);
     String bortopcolor = this
       .convertBorderColorToHtml(colortop);
     String borleftcolor = this
       .convertBorderColorToHtml(colorleft);
     String borrightcolor = this
       .convertBorderColorToHtml(colorright);
     String borbottomcolor = this
       .convertBorderColorToHtml(colorbottom);
     // System.out.print(borstyletop+"-"+borstyleleft+"-"+borstyleright+"-"+borstylebottom+",");

     strbuf.append("border-top:"
       + this.getBorderStyle(borstyletop, bortopcolor)
       + ";");
     strbuf.append("border-left:"
       + this.getBorderStyle(borstyleleft, borleftcolor)
       + ";");
     strbuf.append("border-right:"
       + this.getBorderStyle(borstyleright, borrightcolor)
       + ";");
     strbuf.append("border-bottom:"
       + this.getBorderStyle(borstylebottom,
         borbottomcolor) + ";");

     // sb.append("border:" +
     // this.convertBorderStyleToHtml(bordertop)+" "+
     // convertBorderColorToHtml(colorbottom)+ ";");
     // String

     hc = palette.getColor(borderColor);

     String borderColorStr = convertToStardColor(hc);

     if (borderColorStr != null
       && !"".equals(borderColorStr.trim())) {

     }

     strbuf.append("\" ");
    }

    strbuf.append(">");
    if (stringValue == null || "".equals(stringValue.trim())) {

     strbuf.append(" &nbsp; ");
    } else  {
                  // System.out.println("StringValue="+stringValue);
                   strbuf.append(stringValue.replaceAll("\\s*", "")+" ");
    /* strbuf.append(" "
       + stringValue.replace(String.valueOf((char) 160),
         "&nbsp;") + " ");*/

    }

    if ("甲".equals(stringValue) || "乙".equals(stringValue)) {
     strbuf.append("</th>");
    } else {
     strbuf.append("</td>");
    }

   }
   
    
   
  
   strbuf.append("</tr>");

   if (rowNum < rangenum) {
    // System.out.println("rowNumText="+rowNum);
    sb.append("$('#exceltitletable').append('" + strbuf.toString()
      + "');\n");
   } else if (rowNum == rangenum) {
    sb.append("$('#exceltable thead').append('" + strbuf.toString()
      + "');\n");
   } else {
    sb.append("$('#exceltable tbody').append('" + strbuf.toString()
      + "');\n");
   }

  }

  // sb.append("</table>\n");
  System.out.println("sumwidth="+this.getSumWidth());//取出总宽度的行数
  
  sb.append("var options1 = {\n");
  sb.append("    additionalFilterTriggers: [ ],\n");
  sb.append("    clearFiltersControls: [$('#deldata')],\n");
  sb.append("    matchingRow: function(state, tr, textTokens) {  \n");
  sb.append("      if (!state || !state.id) { return true; }\n");
  sb.append("var val =  tr.children('td:eq(2)').text();\n");
  sb.append("  switch (state.id) {   \n");
  sb.append("   default: return true;\n");
  sb.append("  }\n");
  sb.append(" }\n");
  sb.append("};\n");
  sb.append("$('#exceltable').tableFilter(options1);\n");
  sb.append("});\n");
  
 
  sb.append("</script>\n");

  // System.out.println(sb.toString());
  return sb;
 }

 @Override
 public String toString() {
  return "ExcelUtils []";
 }

 public int getTrWidth(HSSFWorkbook workbook, int sheetindex) {
  int trwidth = 0;
  Sheet sheet = workbook.getSheetAt(sheetindex);
  int lastRowNum = sheet.getLastRowNum();
  HSSFRow row = (HSSFRow) sheet.getRow(lastRowNum);
  if (row != null) {
   int lastColNum = row.getLastCellNum();
   for (int colNum = 0; colNum < lastColNum; colNum++) {
    HSSFCell cell = row.getCell(colNum);
    int tdwidth = sheet.getColumnWidth(colNum) / 32;
    trwidth = trwidth + tdwidth;
   }
  }
  return trwidth;
 }

 public StringBuffer excelToHtmlSource(HSSFWorkbook workbook, int sheetindex) {
  StringBuffer sb = new StringBuffer();

  Sheet sheet = workbook.getSheetAt(sheetindex);

  int lastRowNum = sheet.getLastRowNum();
  System.out.println("lastRowNum=" + lastRowNum);
  Map<String, String> map[] = getRowSpanColSpanMap(sheet);

  sb.append("<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n");

  HSSFRow row = null;

  HSSFCell cell = null;

  // System.out.println(sheet.getPhysicalNumberOfRows());
  for (int rowNum = sheet.getFirstRowNum(); rowNum <= lastRowNum; rowNum++) {
   row = (HSSFRow) sheet.getRow(rowNum);

   if (row == null) {

    sb.append("<tr><td > &nbsp;</td></tr>\n");

    continue;
   }

   sb.append("<tr>\n");

   int lastColNum = row.getLastCellNum();

   System.out.print(lastColNum + ":lastcolnum");

   System.out.print(rowNum + ":");
   for (int colNum = 0; colNum < lastColNum; colNum++) {

    cell = row.getCell(colNum);
    int tdwidth = sheet.getColumnWidth(colNum) / 32;
    if (cell == null) {
     sb.append("<td>&nbsp;</td>\n");

     continue;
    }

    String stringValue = getCellValue(cell);
    // System.out.print(colNum+"-");
    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 {
     // System.out.print(tdwidth+",");
     sb.append("<td width='" + tdwidth + "' ");
    }

    HSSFCellStyle cellStyle = cell.getCellStyle();
    cellStyle.setWrapText(true);   

    if (cellStyle != null) {

     short alignment = cellStyle.getAlignment();

     sb.append("align='" + convertAlignToHtml(alignment) + "' ");

     short verticalAlignment = cellStyle.getVerticalAlignment();

     sb.append("valign='"
       + convertVerticalAlignToHtml(verticalAlignment)
       + "' ");

     HSSFFont hf = cellStyle.getFont(workbook);

     short boldWeight = hf.getBoldweight();

     short fontColor = hf.getColor();

     sb.append("style='");

     HSSFPalette palette = workbook.getCustomPalette(); // 类HSSFPalette用于求的颜色的国际标准形式

     HSSFColor hc = palette.getColor(fontColor);
     // System.out.println(boldWeight);
     // sb.append("font-weight:" + boldWeight + ";"); //字体加粗

     // sb.append("font-size: " + hf.getFontHeight()/2 + "%;");
     // //字体大小
     sb.append("font-size: " + hf.getFontHeightInPoints()
       + "pt;");
     sb.append("font-family:" + hf.getFontName() + ";");

     String fontColorStr = convertToStardColor(hc);

     if (fontColorStr != null && !"".equals(fontColorStr.trim())) {

      sb.append("color:" + fontColorStr + ";"); // 字体颜色
     }

     short bgColor = cellStyle.getFillForegroundColor();

     hc = palette.getColor(bgColor);

     String bgColorStr = convertToStardColor(hc);

     if (bgColorStr != null && !"".equals(bgColorStr.trim())) {

      sb.append("background-color:" + bgColorStr + ";"); // 背景颜色
     }

     short borderColor = cellStyle.getBottomBorderColor();
     short bordertop = cellStyle.getBorderTop();
     short borderleft = cellStyle.getBorderLeft();
     short borderright = cellStyle.getBorderRight();
     short borderbottom = cellStyle.getBorderBottom();
     short colorbottom = cellStyle.getBottomBorderColor();
     short colortop = cellStyle.getTopBorderColor();
     short colorleft = cellStyle.getLeftBorderColor();
     short colorright = cellStyle.getRightBorderColor();
     String borstyletop = this
       .convertBorderStyleToHtml(bordertop);
     String borstyleleft = this
       .convertBorderStyleToHtml(borderleft);
     String borstyleright = this
       .convertBorderStyleToHtml(borderright);
     String borstylebottom = this
       .convertBorderStyleToHtml(borderbottom);
     String bortopcolor = this
       .convertBorderColorToHtml(colortop);
     String borleftcolor = this
       .convertBorderColorToHtml(colorleft);
     String borrightcolor = this
       .convertBorderColorToHtml(colorright);
     String borbottomcolor = this
       .convertBorderColorToHtml(colorbottom);
     // System.out.print(borstyletop+"-"+borstyleleft+"-"+borstyleright+"-"+borstylebottom+",");

     sb.append("border-top:"
       + this.getBorderStyle(borstyletop, bortopcolor)
       + ";");
     sb.append("border-left:"
       + this.getBorderStyle(borstyleleft, borleftcolor)
       + ";");
     sb.append("border-right:"
       + this.getBorderStyle(borstyleright, borrightcolor)
       + ";");
     sb.append("border-bottom:"
       + this.getBorderStyle(borstylebottom,
         borbottomcolor) + ";");

     // sb.append("border:" +
     // this.convertBorderStyleToHtml(bordertop)+" "+
     // convertBorderColorToHtml(colorbottom)+ ";");
     // String

     hc = palette.getColor(borderColor);

     String borderColorStr = convertToStardColor(hc);

     if (borderColorStr != null
       && !"".equals(borderColorStr.trim())) {

      // sb.append("border-color:" + borderColorStr + ";");
      // //边框颜色
     }

     sb.append("' ");
    }

    sb.append(">");

    if (stringValue == null || "".equals(stringValue.trim())) {

     sb.append(" &nbsp; ");
    } else {

     sb.append(stringValue.replace(String.valueOf((char) 160),
       "&nbsp;"));

    }

    sb.append("</td>\n");

   }
   // System.out.println("");
   sb.append("</tr>\n");
  }

  sb.append("</table>\n");

  // System.out.println(sb.toString());
  return sb;
 }

 public static String getHex(String strHex) {
  if (strHex.length() > 0) {
   String[] a = strHex.split(":");
   strHex = "";
   for (int n = 0; n < a.length; n++) {
    if (a[n].length() > 0) {
     if (a[n].length() < 2) {
      strHex += "0" + a[n];
     } else

     {
      strHex += a[n].substring(0, 2);
     }
    }
   }
  }
  return strHex.length() > 0 ? strHex : null;

 }

 @SuppressWarnings("unchecked")
 private 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();
  // System.out.println("mergedNum="+mergedNum);
  CellRangeAddress range = null;

  for (int i = 0; i < mergedNum; i++) {

   range = 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;
 }

 private String convertAlignToHtml(short alignment) {

  String align = "left";

  switch (alignment) {

  case HSSFCellStyle.ALIGN_LEFT:
   align = "left";
   break;
  case HSSFCellStyle.ALIGN_CENTER:
   align = "center";
   break;
  case HSSFCellStyle.ALIGN_RIGHT:
   align = "right";
   break;

  default:
   break;
  }

  return align;
 }

 private String getBorderStyle(String bortype, String borcolor) {
  String borstyle = "";
  if ("thin".equals(bortype)) {
   borstyle = "1px solid " + borcolor;
  } else if ("medium".equals(bortype)) {
   borstyle = "2px solid " + borcolor;
  } else if ("double".equals(bortype)) {
   borstyle = "double solid " + borcolor;
  } else if ("dotted".equals(bortype)) {
   borstyle = "1px dotted " + borcolor;
  } else if ("dashed".equals(bortype)) {
   borstyle = "1px dashed " + borcolor;
  }
  return borstyle;
 }

 private String convertBorderStyleToHtml(short bordertype) {
  String type = "none";
  switch (bordertype) {

  case HSSFCellStyle.BORDER_THIN:
   type = "thin";
   break;
  case HSSFCellStyle.BORDER_DOTTED:
   type = "dotted";
   break;
  case HSSFCellStyle.BORDER_DASHED:
   type = "dashed";
   break;
  case HSSFCellStyle.BORDER_NONE:
   type = "none";
   break;
  case HSSFCellStyle.BORDER_MEDIUM:
   type = "medium";
   break;
  case HSSFCellStyle.BORDER_DOUBLE:
   type = "double";
   break;

  default:
   break;
  }

  return type;
 }

 private String convertBorderColorToHtml(short bordercolor) {
  String type = "black";

  switch (bordercolor) {
  case HSSFColor.BLACK.index:
   type = "black";
   break;
  case HSSFColor.BLUE.index:
   type = "blue";
   break;
  case HSSFColor.RED.index:
   type = "red";
   break;

  default:
   break;
  }

  return type;
 }

 private String convertVerticalAlignToHtml(short verticalAlignment) {

  String valign = "middle";

  switch (verticalAlignment) {

  case HSSFCellStyle.VERTICAL_BOTTOM:
   valign = "bottom";
   break;
  case HSSFCellStyle.VERTICAL_CENTER:
   valign = "center";
   break;
  case HSSFCellStyle.VERTICAL_TOP:
   valign = "top";
   break;
  default:
   break;
  }

  return valign;
 }

 private 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 String fillWithZero(String str) {

  if (str != null && str.length() < 2) {

   return "0" + str;
  }
  return str;
 }

 /**
  * 获取Cell的内容
  *
  * @param cell
  * @return
  */
 public String getStringCellValue(HSSFCell cell) {
  String cellvalue = "";
  if (cell == null) {
   return "";
  }
  switch (cell.getCellType()) {
  case HSSFCell.CELL_TYPE_STRING:
   cellvalue = cell.getStringCellValue();
   break;
  case HSSFCell.CELL_TYPE_NUMERIC:
   cellvalue = String.valueOf(cell.getNumericCellValue());
   break;
  case HSSFCell.CELL_TYPE_BOOLEAN:
   cellvalue = String.valueOf(cell.getBooleanCellValue());
   break;
  case HSSFCell.CELL_TYPE_BLANK:
   cellvalue = "";
   break;
  default:
   cellvalue = "";
   break;
  }
  if (!StringUtils.hasText(cellvalue)) {
   return "";
  }
  return cellvalue;
 }

 private String getCellValue(HSSFCell cell) {

  switch (cell.getCellType()) {

  case HSSFCell.CELL_TYPE_NUMERIC:

   DecimalFormat format = new DecimalFormat("#0.##");

   return format.format(cell.getNumericCellValue());
   // return String.valueOf(cell.getNumericCellValue());

  case HSSFCell.CELL_TYPE_STRING:

   return cell.getStringCellValue();

   // case HSSFCell.CELL_TYPE_FORMULA:
   //   
   // return cell.getCellFormula();

  default:
   return "";
  }
 }

 /**
  * 读取excel
  *
  * @param filepath
  *            excel文件地址
  * @return HSSFWorkbook
  */
 public HSSFWorkbook readExcelFile(String filepath) {
  HSSFWorkbook workbook = null;
  try {
   FileInputStream input = new FileInputStream(new File(filepath));
   POIFSFileSystem fs = new POIFSFileSystem(input);
   workbook = new HSSFWorkbook(fs);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return workbook;
 }

 /**
  * 获取某Sheet,第一行的内容
  *
  * @param workbook
  * @param sheetindex
  * @return
  */
 public String getFirstRowContent(HSSFWorkbook workbook, int sheetindex) {
  String exceltitle = "";
  if (workbook != null) {
   HSSFSheet sheet = workbook.getSheetAt(sheetindex);
   int firstrownum = sheet.getFirstRowNum();
   HSSFRow row = sheet.getRow(firstrownum);
   short fcellnum = row.getFirstCellNum();
   short lcellnum = row.getLastCellNum();
   for (int j = fcellnum; j < lcellnum; j++) {
    HSSFCell cell = row.getCell(j);
    exceltitle += getStringCellValue(cell);
   }
  }
  return exceltitle;
 }

 public CellRangeAddress getRange(HSSFSheet sheet) {
  if (sheet != null) {
   int rangenum = sheet.getNumMergedRegions();
   for (int m = 0; m < rangenum; m++) {
    CellRangeAddress range = sheet.getMergedRegion(m);
   }
  }
  return null;
 }

 public List getRangeRows(HSSFSheet sheet) {
  if (sheet != null) {
   int rangenum = sheet.getNumMergedRegions();//找到当前sheet单元格中共有多少个合并区域 
   //System.out.println("RangenNum="+rangenum);
   ArrayList list = new ArrayList();
   if (rangenum > 0) {
    for (int i = 0; i < rangenum; i++) {
     CellRangeAddress range = sheet.getMergedRegion(i);//一个合并单元格代表 CellRangeAddress  
     list.add(range.getFirstRow());
     list.add(range.getLastRow());
     list.add(range.getLastColumn());
     list.add(range.getFirstColumn());
    
     // range.
     // range.isInRange(rowInd, colInd)()

    }
    Collections.sort(list);
    this.removeDuplicateWithOrder(list);
    return list;
   }
  }
  return null;
 }
 
 public int getSumWidth(int sum){
  return sum;
 }

 /** List order maintained **/
 public static void removeDuplicateWithOrder(ArrayList arlList) {
  Set set = new HashSet();
  List newList = new ArrayList();
  for (Iterator iter = arlList.iterator(); iter.hasNext();) {
   Object element = iter.next();
   if (set.add(element))
    newList.add(element);
  }
  arlList.clear();
  arlList.addAll(newList);
 }

 public java.awt.Color toAWTColor(int R, int G, int B, int A) {
  return new java.awt.Color(R, G, B, A);
 }

 public int toRGB(int R, int G, int B) {
  return R << 16 | G << 8 | B;
 }

 public String getTdString(HSSFCell cell) {
  String tdstr = "";

  return tdstr;
 }
 
 public int getSumWidth() {
  return sumWidth;
 }

 public void setSumWidth(int sumWidth) {
  this.sumWidth = sumWidth;
 }


}

你可能感兴趣的:(java poi对excel处理 用jsp显示处理)