import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.collections.MapUtils;
import org.apache.poi.ss.formula.functions.T;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.dom.DOMDocument;

import com.gsoft.cos.core.util.Assert;
import com.gsoft.modules.infrastructureManagement.utils.execl.ColumnVO;

/**
 * @ClassName: TableUtil
 * @Description: excel工具类
 */
public class TableUtil {

public static String print(List<List<ColumnVO>> list, List<T> datas) {

return print(list, null, datas);
    }

@SuppressWarnings("unchecked")
    public static String print(List<List<ColumnVO>> list, String title,
            List<?> datas) {
        Document doc = new DOMDocument();
        doc.setXMLEncoding("UTF-8");
        Element table = doc.addElement("table");
        table.addAttribute("class", "print-table");
        if (Assert.isNotEmpty(title)) {
            Element caption = table.addElement("caption");
            caption.setText(title);
        }
        // 表头
        List<String> contains = new ArrayList<String>();
        Map<String, String> keyMap = new HashMap<String, String>();
        for (int i = 0; i < list.size(); i++) {
            List<ColumnVO> columns = list.get(i);
            int startColumn = 0;
            Element tr = table.addElement("tr");
            tr.addAttribute("class", "print-th");
            for (int j = 0; j < columns.size(); j++) {
                if (!contains.contains(startColumn + "," + i)) {
                    ColumnVO column = columns.get(j);
                    if ((Assert.isNotEmpty(column.getHidden()) && column
                            .getHidden()) || !column.isExported()) {
                        continue;
                    }
                    if (Assert.isNotEmpty(column.getField())) {
                        keyMap.put(String.valueOf(startColumn),
                                column.getField());
                    }
                    Element td = tr.addElement("td");
                    td.setText(column.getTitle());
                    int colspan = 1;
                    if ((Assert.isNotEmpty(column.getColspan()) && column
                            .getColspan() > 1)) {
                        colspan = column.getColspan();
                    }
                    int rowspan = 1;
                    if (Assert.isNotEmpty(column.getRowspan())
                            && column.getRowspan() > 1) {
                        rowspan = column.getRowspan();
                    }
                    if (colspan > 1) {
                        td.addAttribute("colspan", String.valueOf(colspan));
                    }
                    if (rowspan > 1) {
                        contains.add(startColumn + "," + (rowspan - 1));
                        td.addAttribute("rowspan", String.valueOf(rowspan));
                    }
                    startColumn += colspan;
                } else {
                    startColumn += 1;
                }
            }
        }

Object object = null;
        // 遍历集合
        if (datas != null) {
            for (int i = 0; i < datas.size(); i++) {
                object = datas.get(i);
                Element tr = table.addElement("tr");
                tr.addAttribute("class", "print-tr");
                Map<String, Object> map = new HashMap<String, Object>();
                if (!(object instanceof Map)) {
                    try {
                        map = BeanUtils.describe(object);
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                    } catch (InvocationTargetException e) {
                        e.printStackTrace();
                    } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                    }
                }

for (int j = 0; j < keyMap.size(); j++) {
                    String key = keyMap.get(String.valueOf(j));
                    String value = MapUtils.getString(map, key);
                    Element td = tr.addElement("td");
                    td.addAttribute("class", "print-td");
                    td.setText(value);
                }
            }
        }
        return table.asXML();
    }
}

easyui DataGrid 工具类之 TableUtil class的更多相关文章

  1. easyui DataGrid 工具类之 WorkbookUtil class

    /** * @Title: WorkbookUtil.java * @Description: excel工具类 * @date 2014年5月29日 上午10:36:42 * @version V1 ...

  2. easyui DataGrid 工具类之 util js

    var jq;                var tab;                var tabsIndex;                                /**     ...

  3. easyui DataGrid 工具类之 Utils class

    import java.lang.reflect.InvocationTargetException;import java.text.ParseException;import java.text. ...

  4. easyui DataGrid 工具类之 后台生成列

    @SuppressWarnings({ "rawtypes", "unchecked" })    public Map<String, Object&g ...

  5. easyui DataGrid 工具类之 列属性class

    public class ColumnVO { /**     * 列标题文本     */    private String title; /**     * 列字段名称     */    pr ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(8)-MVC与EasyUI DataGrid 分页

    系列目录 前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 EasyUI Datagrid在加载的时候会提交一些分页的信息到后台,我们需要根据这些信息来进行数据分页再次返回到前台 实 ...

  7. 控制EasyUI DataGrid高度

    这次要说的是控制EasyUI的高度,平时我公司的项目,用EasyUI较多,然后datagrid这个组件是用的非常多的.平时我们都是固定高度,常见代码如下:             <table  ...

  8. easyui datagrid标题列宽度自适应

    最近项目中使用easyui做前端界面,相信大部分使用过easyui datagrid的朋友有这么一个疑问:如果在columns中不设置width属性能不能写个方法让datagrid的头部标题和数据主体 ...

  9. 实现easyui datagrid在没有数据时显示相关提示内容

    本示例实现easyui datagrid加载/查询数据时,如果没有相关记录,则在datagrid中显示没有相关记录的提示信息,效果如下图所示 本实例要实现如下图所示的效果: 本示例easyui版本为1 ...

随机推荐

  1. sql小技巧

    --实际只会更新一条.可有效防止误操作.特别是操作线上正式数据时. UPDATE TOP(1) Table2 SET Culumn1='value'WHERE id IN(269102,269104) ...

  2. MySQL 主从配置

    mysql主从复制指两个服务器之间数据库的同步,当主服务器的数据进行了变更,从服务器也会自动更新,其过程是通过bin-log日志实现的,本质是binlog日志的传输. mysql主从分两个角色 1.主 ...

  3. zookeeper+jstorm的集群搭建

    zookeeper的配置: zookeeper有三种配置方式:单机式/伪分布式/集群式 其中伪分布式是在一台电脑上通过不同的端口来模拟分布式情形,需要N份配置文件和启动程序,而集群式是多个zookee ...

  4. CSS之viewport 2

    在这个迷你系列的文章里边我将会解释viewport,以及许多重要元素的宽度是如何工作的,比如<html>元素,也包括窗口和屏幕. 这篇文章我们来聊聊关于移动浏览器的内容.如果你对移动开发完 ...

  5. Linux-002-执行命令时,提示: -bash: {命令}: command not found

    首先,此文不适应未安装的命令. 起因: 进行系统环境变量配置时,路径分割符配置错误,错将":"配置为";". 现象: 任意用户执行命令时,提示:command ...

  6. spring-amqp 动态创建queue、exchange、binding

    pom.xml <!-- mq 依赖 --> <dependency> <groupId>com.rabbitmq</groupId> <arti ...

  7. ORA-03113: end-of-file on communication channel

    导致的原因,可能是异常断电导致文件状态不一致. SQL> startupORACLE instance started. Total System Global Area 1653518336 ...

  8. asio制作使用ssl通信的证书

    1,生成ca的keyopenssl genrsa -out ca.key 1024/2048 (with out password protected) openssl genrsa -des3 -o ...

  9. RabbitMQ系列之Centos 7安装RabbitMQ 3.6.1

    1.安装EPEL-7: rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm 2.安 ...

  10. ios-将代码创建的视图控件放入拖拽控件的下面

    如图所示 图片是拖拽上去的imageView,橘黄色控件是在代码中创建的添加上去的,此时黄色view在imageView 上方 调用方法bringSubviewToFront:试图将imageView ...