ExcelToHtmlTable轉換演算法:將Excel轉換成Html表格並展示(項目源碼+詳細注釋+項目截圖)

來源:互聯網
上載者:User

功能概述

Excel2HtmlTable的主要功能就是把Excel的內容以表格的方式,展現在頁面中。
Excel的多個Sheet對應頁面的多個Tab選項卡。
轉換演算法的痛點在於,如何處理行列合并,將Excel的行列合并模型轉換成Html表格的行列合并模型。

背景故事

因實際需要,需要將Excel展現在Web介面中。

最初,想在網上找開源的東東,結果沒有1個是想要的。有的特別複雜,有的只能在Windows平台,需要閉源的dll,最終還是得靠自己。

人不逼迫自己,真是想偷懶,不能出成果。

要是不是自己實現一次,根本不能發現和解決一系列問題。

最重要的經驗就是:要努力克服自己的畏難情緒,不能怕麻煩。

 

CSDN(免積分):http://download.csdn.net/download/fansunion/6352759

相關

下載包內容

Excel2HtmlTable.zip:項目源碼,1個完整的Eclipse項目,直接匯入,Tomcat需要7.0。

Excel2HtmlTable.gif:Excel模版對應的Html表格

Excel模版.gif:Excel模版內容

項目結構.gif:項目的結構

包和類說明

程式包 cn.fansunion.excel2html
把Excel(XSSFWorkbook)轉換成Html的Table。
Servlet,跳轉到報表展示頁面
響應前端AJax請求,查詢Excel報表,轉化為Html-Table格式的報表。

 

程式包 cn.fansunion.excel2html.model
說明
表格的列。
展示介面用到的資料模型。
表格的行。
展示Html用的表格,一個表格由多個行組成。
Html表格模型,封裝了一個Html表格的一些屬性。
程式包 cn.fansunion.excel2html.util

 
說明
JSON工具類。
HTTP響應常用代碼封裝。
Excel模版載入器。
屬性讀取器,讀取設定檔屬性。

 

項目設計和實現思路

 啟動項目,進入首頁,點選連結,進入報表展示頁。

 報表產生流程   

    

 // 獲得模版     XSSFWorkbook dataWorkbook = getTemplateWorkbook();      // 構造展示模型資料     List<TableModel> tableModelList = buildTableModelList(dataWorkbook);      //構造最終展示需要的資料模型     DisplayDataModel model = new DisplayDataModel();     model.setTableModelList(tableModelList);      //構造和發送JSON格式的資料      String beanToJSON = JsonUtils.beanToJSON(model);      ResponseUtils.setResponseHeaders(response);      ResponseUtils.sendJSONData(response, beanToJSON);   // 獲得Excel模版    private XSSFWorkbook getTemplateWorkbook() throws FileNotFoundException,            IOException, InvalidFormatException {        XSSFWorkbook workbook = TemplateLoader.buildSimpleWorkbook();        return workbook;    } // 構造資料模型,在介面展示    private List<TableModel> buildTableModelList(XSSFWorkbook dataWorkbook) {        ExcelToHtmlTable excelToHtmlTable = new ExcelToHtmlTable(dataWorkbook);        //init方法的思路,就是遍曆Excel的每一個sheet、每一行、每一列,根據Excel的行列合并結構產生Html對應的行列合并結構        excelToHtmlTable.init();        List<TableModel> tableModelList = excelToHtmlTable.getTableModelList();        return tableModelList;    } 


更多資訊請參考項目源碼。

特別說明

如果沒有詳細的注釋,代碼很難維護的。

主要是很多代碼是處理Excel儲存格的null和Null 字元串等,每一種資料類型,每一種情況,都需要很好地處理。

測試的時候,需要很多種不同風格內容的Excel。

另外,這個項目是我花了4個小時的時間,單獨從項目中抽取出來的,有些地方的命名可能有點奇怪。

如果想完全理解這個演算法,除了自己認真研究源碼外,沒有其它的方法,不要指望作者本人一點點地講解清晰。

下一步計劃

將這個演算法,封裝成為一個單獨的Jar包。

今後,如果有需要,直接加入jar包,調用API就好了。

一個開發人員在實踐中,一定要逐步積累可複用的方法、類、組件,如果每次都重新編碼,實現重複的功能,只能當碼農。

如何運行本程式

上次寫了 Struts2SpringHibernate整合樣本,一個HelloWorld版的線上書店(項目源碼+詳盡注釋+單元測試)

http://blog.csdn.net/fansunion/article/details/12215233

有同學遇到了問題,有的不知道怎麼運行,所以這次需要說明一下。

 

這個項目的源碼是一個 Eclipse項目,需要匯入到Eclipse的工作空間中。

添加Server,Tomcat7,啟動後,訪問首頁(預設是index.jsp),然後點擊 首頁上的連結 就可以看到 報表了。

 

sdsada8小時前 1樓 lz難道不知道excel有webapp嗎?另外,找個wysiwyg的html編輯器,直接粘貼複製可行嗎?  答:

項目原來用的是Excel,查看報表,首先需要下載下來。

現在要求在Web介面中展示。

Excel裡有大量的公式,先把資料從NoSQL資料庫填充到Excel,然後讓Excel自動計算公式,最後把Excel展現到Web介面中。

  

原文參見:http://FansUnion.cn/articles/2634

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.