首頁 web前端 html教學 Excel 转成 Html Excel 预览_html/css_WEB-ITnose

Excel 转成 Html Excel 预览_html/css_WEB-ITnose

Jun 24, 2016 am 11:44 AM

基于Poi demo做的,效果还不错,这里给大家分享下,先看看效果




效果基本上一致,这里说下如何做的

1.合并单元格的处理

    

/**

      * 根据合并输出内容,处理合并单元格事情

      * @param formatAsString

      */

     private void handerMergedString(String formatAsString) {

         String[] strArr = formatAsString.split( ":" );

         int startCol = strArr[0].charAt(0) - 65;

         int startRol = Integer.valueOf(strArr[0].substring(1));

         int endCol = strArr[1].charAt(0) - 65;

         int endRol = Integer.valueOf(strArr[1].substring(1));

         mergedCache.put(startRol +  "_"  + startCol,  new  Integer[] { endRol - startRol + 1,

                 endCol - startCol + 1 });

         for  (int i = startRol; i 

             for  (int j = startCol; j 

                 notNeedCread.add(i +  "_"  + j);

             }

         }

         notNeedCread.remove(startRol +  "_"  + startCol);

     }

把整个sheet的合并单元格,存放起来,然后便利的时候判断下,给td写写 rowspan和colsopan 就可以了,相对比较简单


2.CSS的设置

private void styleContents(CellStyle style) {

         if  (style.getAlignment() != 2) {

             styleOut( "text-align" , style.getAlignment(), ALIGN);

             styleOut( "vertical-align" , style.getAlignment(), VERTICAL_ALIGN);

         }

         helper.colorStyles(style, out);

     }

 

     private void fontStyle(Font font) {

         if  (font.getBoldweight() >= Font.BOLDWEIGHT_BOLD)

             out.format( "  font-weight: bold;%n" );

         if  (font.getItalic())

             out.format( "  font-style: italic;%n" );

         out.format( "  font-family: %s;%n" , font.getFontName());

 

         int fontheight = font.getFontHeightInPoints();

         if  (fontheight == 9) {

             fontheight = 10;

         }

         out.format( "  font-size: %dpt;%n" , fontheight);

         helper.styleColor(out,  "color" , getColor(font));

     }


从cellStyle 里面吧值获取出来,然后填写到css当中,已经font的css,这个理font和style要区分因为后面复杂的单元格要迭代设置的font,另外

03和07版本很多不同的东西,需要分开设置


3.值的获取--比较重要和复杂的

public String getHtmlValue(Cell cell) {

         if  (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()

             || Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {

             cell.setCellType(Cell.CELL_TYPE_STRING);

             return  cell.getStringCellValue();

         }  else  if  (Cell.CELL_TYPE_STRING == cell.getCellType()) {

             if  (cell.getRichStringCellValue().numFormattingRuns() == 0) {

                 return  XmlEscapers.xmlContentEscaper().escape(cell.getStringCellValue());

             }  else  if  (is07) {

                 return  getXSSFRichString((XSSFRichTextString) cell.getRichStringCellValue());

             }  else  {

                 return  getHSSFRichString((HSSFRichTextString) cell.getRichStringCellValue());

             }

         }

         return  "" ;

     }


判断cell类型,然后设置值,如果是String,需要判断是不是复杂的text,如果是,需要按照03,和07分别处理,迭代列类型列表然后输出


总的来说比自己想想的容易的多


使用方法---只能一个sheet一个sheet的输出

/**

  * Excel 变成界面

  * @author JueYue

  * @date 2015年5月10日 上午11:51:48

  */

public final class ExcelToHtmlUtil {

 

     private ExcelToHtmlUtil() {

     }

 

     /**

      * 转换成为Table

      * @param wb Excel

      * @return

      */

     public static String toTableHtml(Workbook wb) {

         return  new  ExcelToHtmlServer(wb,  false , 0).printPage();

     }

 

     /**

      * 转换成为Table

      * @param wb Excel

      * @param sheetNum sheetNum

      * @return

      */

     public static String toTableHtml(Workbook wb, int sheetNum) {

         return  new  ExcelToHtmlServer(wb,  false , sheetNum).printPage();

     }

 

     /**

      * 转换成为完整界面

      * @param wb Excel

      * @param sheetNum sheetNum

      * @return

      */

     public static String toAllHtml(Workbook wb) {

         return  new  ExcelToHtmlServer(wb,  true , 0).printPage();

     }

 

     /**

      * 转换成为完整界面

      * @param wb Excel

      * @param sheetNum sheetNum

      * @return

      */

     public static String toAllHtml(Workbook wb, int sheetNum) {

         return  new  ExcelToHtmlServer(wb,  true , sheetNum).printPage();

     }

 

}



源码地址EasyPoi

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
2 週前 By 尊渡假赌尊渡假赌尊渡假赌
倉庫:如何復興隊友
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗? 公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗? Mar 04, 2025 pm 12:32 PM

公眾號網頁更新緩存難題:如何避免版本更新後舊緩存影響用戶體驗?

如何使用HTML5表單驗證屬性來驗證用戶輸入? 如何使用HTML5表單驗證屬性來驗證用戶輸入? Mar 17, 2025 pm 12:27 PM

如何使用HTML5表單驗證屬性來驗證用戶輸入?

如何高效地在網頁中為PNG圖片添加描邊效果? 如何高效地在網頁中為PNG圖片添加描邊效果? Mar 04, 2025 pm 02:39 PM

如何高效地在網頁中為PNG圖片添加描邊效果?

HTML5中跨瀏覽器兼容性的最佳實踐是什麼? HTML5中跨瀏覽器兼容性的最佳實踐是什麼? Mar 17, 2025 pm 12:20 PM

HTML5中跨瀏覽器兼容性的最佳實踐是什麼?

< datalist>的目的是什麼。 元素? < datalist>的目的是什麼。 元素? Mar 21, 2025 pm 12:33 PM

< datalist>的目的是什麼。 元素?

< meter>的目的是什麼。 元素? < meter>的目的是什麼。 元素? Mar 21, 2025 pm 12:35 PM

< meter>的目的是什麼。 元素?

< iframe>的目的是什麼。 標籤?使用時的安全考慮是什麼? < iframe>的目的是什麼。 標籤?使用時的安全考慮是什麼? Mar 20, 2025 pm 06:05 PM

< iframe>的目的是什麼。 標籤?使用時的安全考慮是什麼?

> gt;的目的是什麼 元素? > gt;的目的是什麼 元素? Mar 21, 2025 pm 12:34 PM

> gt;的目的是什麼 元素?

See all articles