zoukankan      html  css  js  c++  java
  • ExcelToHtmlTable转换算法:将Excel转换成Html表格并展示(项目源码+详细注释+项目截图)

    功能概述

    Excel2HtmlTable的主要功能就是把Excel的内容以表格的方式,展现在页面中。
    Excel的多个Sheet对应页面的多个Tab选项卡。
    转换算法的难点在于,如何处理行列合并,将Excel的行列合并模型转换成Html表格的行列合并模型。

    背景故事

    因实际需要,需要将Excel展现在Web界面中。

    最初,想在网上找开源的东东,结果没有1个是想要的。有的特别复杂,有的只能在Windows平台,需要闭源的dll,最终还是得靠自己。

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

    要是不是自己实现一次,根本不能发现和解决一系列问题。

    最重要的经验就是:要努力克服自己的畏难情绪,不能怕麻烦。

     

    CSDN下载地址(免积分)http://download.csdn.net/download/fansunion/6352759

    相关截图

    Excel2HtmlTable效果图

    Excel模版

    项目结构

    下载包内容

    Excel2HtmlTable.zip:项目源码,1个完整的Eclipse项目,直接导入,Tomcat需要7.0。

    Excel2HtmlTable效果图.gif:Excel模版对应的Html表格

    Excel模版.gif:Excel模版内容

    项目结构.gif:项目的结构

    包和类说明

    程序包 cn.fansunion.excel2html

    ExcelToHtmlTable
    把Excel(XSSFWorkbook)转换成Html的Table。
    LoadReportServlet,跳转到报表展示页面
    QueryReport
    响应前端AJax请求,查询Excel报表,转化为Html-Table格式的报表。

     

    程序包 cn.fansunion.excel2html.model

    说明
    Col
    表格的列。
    DisplayDataModel
    展示界面用到的数据模型。
    Row
    表格的行。
    Table
    展示Html用的表格,一个表格由多个行组成。
    TableModel
    Html表格模型,封装了一个Html表格的一些属性。

    程序包 cn.fansunion.excel2html.util

     
    说明
    JsonUtils
    JSON工具类。
    ResponseUtils
    HTTP响应常用代码封装。
    TemplateLoader
    Excel模版加载器。
    TemplatePropertyReader
    属性读取器,读取配置文件属性。

     

    项目设计和实现思路

     启动项目,进入主页,点击链接,进入报表展示页。

     报表生成流程   

        

     // 获得模版
         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和空字符串等,每一种数据类型,每一种情况,都需要很好地处理。

    测试的时候,需要很多种不同风格内容的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

  • 相关阅读:
    POJ 1251 Jungle Roads
    1111 Online Map (30 分)
    1122 Hamiltonian Cycle (25 分)
    POJ 2560 Freckles
    1087 All Roads Lead to Rome (30 分)
    1072 Gas Station (30 分)
    1018 Public Bike Management (30 分)
    1030 Travel Plan (30 分)
    22. bootstrap组件#巨幕和旋转图标
    3. Spring配置文件
  • 原文地址:https://www.cnblogs.com/qitian1/p/6463570.html
Copyright © 2011-2022 走看看