easyui DataGrid 工具类之 TableUtil class
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的更多相关文章
- easyui DataGrid 工具类之 WorkbookUtil class
/** * @Title: WorkbookUtil.java * @Description: excel工具类 * @date 2014年5月29日 上午10:36:42 * @version V1 ...
- easyui DataGrid 工具类之 util js
var jq; var tab; var tabsIndex; /** ...
- easyui DataGrid 工具类之 Utils class
import java.lang.reflect.InvocationTargetException;import java.text.ParseException;import java.text. ...
- easyui DataGrid 工具类之 后台生成列
@SuppressWarnings({ "rawtypes", "unchecked" }) public Map<String, Object&g ...
- easyui DataGrid 工具类之 列属性class
public class ColumnVO { /** * 列标题文本 */ private String title; /** * 列字段名称 */ pr ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(8)-MVC与EasyUI DataGrid 分页
系列目录 前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 EasyUI Datagrid在加载的时候会提交一些分页的信息到后台,我们需要根据这些信息来进行数据分页再次返回到前台 实 ...
- 控制EasyUI DataGrid高度
这次要说的是控制EasyUI的高度,平时我公司的项目,用EasyUI较多,然后datagrid这个组件是用的非常多的.平时我们都是固定高度,常见代码如下: <table ...
- easyui datagrid标题列宽度自适应
最近项目中使用easyui做前端界面,相信大部分使用过easyui datagrid的朋友有这么一个疑问:如果在columns中不设置width属性能不能写个方法让datagrid的头部标题和数据主体 ...
- 实现easyui datagrid在没有数据时显示相关提示内容
本示例实现easyui datagrid加载/查询数据时,如果没有相关记录,则在datagrid中显示没有相关记录的提示信息,效果如下图所示 本实例要实现如下图所示的效果: 本示例easyui版本为1 ...
随机推荐
- [dpdk] 熟悉SDK与初步使用 (三)(IP Fragmentation源码分析)
对例子IP Fragmentation的熟悉,使用,以及源码分析. 功能: 该例子的功能有二: 一: 将IP分片? 二: 根据路由表,做包转发. 路由表如下: IP_FRAG: Socket : ad ...
- status bar、navigationBar、tableView吸顶view设置
1. 隐藏navigationBar self.navigationController.navigationBar.hidden = YES; 2. status bar设置 -(void)view ...
- oracle+servlet+extjs4 分页表格布局示例代码
Log.java package com.example.entity; import java.util.Date; public class Log { private int id; priva ...
- Karma+Jasmine实现自动化单元测试
1.Karma介绍 Karma是Testacular的新名字,在2012年google开源了Testacular,2013年Testacular改名为Karma.Karma是一个让人感到非常神秘的名字 ...
- shell计算小问题
1.shell处理两数相加时报错: req_all=$(($hits+$misses)) error: invalid arithmetic operator (error token is &quo ...
- Spring操作指南-IoC基础环境配置(基于注解自动装配)
项目源码:http://code.taobao.org/p/LearningJavaEE/src/LearningSpring001%20-%20Automatically%20wiring%20be ...
- Issue 2:Introduction 方法论
1 清晰的思路 论文投稿完毕,彻底完事儿后,原本很反感的论文书写过程也有了些许心得:论文就是科研工作的文字总结,知识再提炼的过程. 想要写好Introduction,脑子里的一条主线必须清楚. 1.1 ...
- javascript中的对象,原型,原型链和面向对象
一.javascript中的属性.方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做 ...
- 使用TreeView 使用多选功能
1.要用TreeView多选就要显示复选框,TreeView默认不显示复选框,显示复选框: TreeView2.ShowCheckBoxes = TreeNodeTypes.All; 初始化TreeV ...
- jQuery的13个优点
1.轻量级 JQuery非常轻巧,采用Dean Edwards编写的Packer压缩后,大小不到30KB,如果使用Min版并且在服务器端启用Gzip压缩后,大小只有18KB. gzip: 每天一个li ...