数据表
CREATE TABLE `f_form` (
`id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
`org_id` bigint(32) DEFAULT NULL COMMENT '机构id',
`title` varchar(255) DEFAULT NULL COMMENT '表单标题',
`state` int(1) DEFAULT NULL COMMENT '状态(0待开始1收集中2已结束)',
`founder` varchar(255) DEFAULT NULL COMMENT '创建人',
`description` text COMMENT '表单介绍',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`start_Time` datetime DEFAULT NULL COMMENT '开始时间',
`end_Time` datetime DEFAULT NULL COMMENT '结束时间',
`del` int(1) DEFAULT NULL COMMENT '删除(0未删除1已删除)',
`vp` int(11) DEFAULT NULL COMMENT '表单浏览量vp',
`url` varchar(255) DEFAULT NULL COMMENT '表单地址',
`copy_count` int(11) DEFAULT NULL COMMENT '复制数',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8 COMMENT='表单表';
CREATE TABLE `f_form_flied_config` (
`id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
`form_id` bigint(32) DEFAULT NULL COMMENT '表单id',
`org_id` bigint(32) DEFAULT NULL COMMENT '机构id',
`type` int(11) DEFAULT NULL COMMENT 'type (0,默认字段1,单行文本框配置 2多行文本框配置3下拉列表配置4多选项配置5单选项配置6文件图片7日期)',
`data_name` varchar(255) DEFAULT NULL COMMENT '数据库字段名',
`show_name` varchar(255) DEFAULT NULL COMMENT '展示字段名',
`default_name` varchar(255) DEFAULT NULL COMMENT '默认字段名',
`is_required` int(11) DEFAULT NULL COMMENT '是否必填(0:必填,1:非必填)',
`is_only` int(11) DEFAULT NULL COMMENT 'type=1,0(0 唯一,1 不唯一)',
`prompt_massage` varchar(255) DEFAULT NULL COMMENT '提示信息',
`sort` int(11) DEFAULT NULL COMMENT '排序',
`perset1` int(11) DEFAULT NULL COMMENT '待定义',
`perset2` varchar(1000) DEFAULT NULL COMMENT 'type=3:下拉列表内容 ;type=4:多选项内容;type=5:单选项内容',
`perset3` varchar(255) DEFAULT NULL COMMENT '待定义',
`perset4` varchar(255) DEFAULT NULL COMMENT '待定义',
PRIMARY KEY (`id`),
KEY `FK_Reference_25` (`form_id`) USING BTREE,
CONSTRAINT `FK_Reference_25` FOREIGN KEY (`form_id`) REFERENCES `f_form` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=334 DEFAULT CHARSET=utf8 COMMENT='表单字段配置表';
CREATE TABLE `f_form_data` (
`id` bigint(32) NOT NULL AUTO_INCREMENT COMMENT '主键',
`form_id` bigint(32) DEFAULT NULL COMMENT '表单id',
`org_id` bigint(32) DEFAULT NULL COMMENT '机构id',
`commit_time` datetime DEFAULT NULL COMMENT '提交时间',
`name` varchar(255) DEFAULT NULL COMMENT '姓名',
`email` varchar(255) DEFAULT NULL COMMENT '邮箱',
`mobile` varchar(255) DEFAULT NULL COMMENT '手机号',
`sex` varchar(255) DEFAULT NULL COMMENT '性别',
`birthday` varchar(255) DEFAULT NULL COMMENT '出生日期',
`id_card` varchar(255) DEFAULT NULL COMMENT '身份证',
`addr` varchar(255) DEFAULT NULL COMMENT '地址',
`xing_zuo` varchar(255) DEFAULT NULL COMMENT '星座',
`leader` varchar(255) DEFAULT NULL COMMENT '负责人',
`another_mobile` varchar(255) DEFAULT NULL COMMENT '备用手机号',
`another_email` varchar(255) DEFAULT NULL COMMENT '备用邮箱',
`position` varchar(255) DEFAULT NULL COMMENT '职务',
`department` varchar(255) DEFAULT NULL COMMENT '部门',
`zhifubao_code` varchar(255) DEFAULT NULL COMMENT '支付宝账号',
`qq_code` varchar(255) DEFAULT NULL COMMENT 'qq',
`weixin` varchar(255) DEFAULT NULL COMMENT '微信号',
`weibo_code` varchar(255) DEFAULT NULL COMMENT '微博',
`taobao_code` varchar(255) DEFAULT NULL COMMENT '淘宝账号',
`contacts_description` varchar(255) DEFAULT NULL COMMENT '描述',
`company_name` varchar(255) DEFAULT NULL COMMENT '机构名称',
`address` varchar(255) DEFAULT NULL COMMENT '机构地址',
`fax` varchar(255) DEFAULT NULL COMMENT '传真',
`work_phone` varchar(255) DEFAULT NULL COMMENT '单位电话',
`zip_code` varchar(255) DEFAULT NULL COMMENT '邮编',
`url` varchar(255) DEFAULT NULL COMMENT 'url',
`companyContact_person` varchar(255) DEFAULT NULL COMMENT '机构联系人',
`company_description` varchar(255) DEFAULT NULL COMMENT '机构描述',
`filed1` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed2` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed3` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed4` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed5` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed6` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed7` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed8` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '扩展字段1',
`filed9` varchar(255) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL COMMENT '扩展字段1',
`filed10` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed11` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed12` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed13` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed14` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
`filed15` varchar(255) DEFAULT NULL COMMENT '扩展字段1',
PRIMARY KEY (`id`),
KEY `FK_Reference_24` (`form_id`),
CONSTRAINT `FK_Reference_24` FOREIGN KEY (`form_id`) REFERENCES `f_form` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=229 DEFAULT CHARSET=utf8 COMMENT='表单字段表';
/**
- 动态导出工具类
*/
public class ExportExcel {
/**
*
*
* @param fileName 文件名
* @param headers 表格属性列名数组
* @param dataset 需要显示的数据集合
* @param pattern 如果有时间数据,设定输出格式。默认为"yyy-MM-dd"
* @throws IOException
*/
@SuppressWarnings("deprecation")
public static HSSFWorkbook exportExcel(HttpServletRequest request, HttpServletResponse response, String fileName,
String[] headers, List<Object[]> dataset, String pattern) throws IOException {
// 设置请求
response.setHeader("Content-disposition",
"attachment;filename=" + URLEncoder.encode(fileName + ".xls", "UTF-8"));
response.setContentType("application/msexcel;charset=UTF-8");
// 创建一个工作薄
HSSFWorkbook workbook = new HSSFWorkbook();
// 生成一个表格
HSSFSheet sheet = workbook.createSheet("表单导出");
// 产生表格标题行
HSSFRow row = sheet.createRow(0);
for (short i = 0; i < headers.length; i++) {
HSSFCell cell = row.createCell(i);
HSSFRichTextString text = new HSSFRichTextString(headers[i]);
cell.setCellValue(text);
}
// 遍历集合数据,产生数据行
Iterator<Object[]> it = dataset.iterator();
int index = 0;
while (it.hasNext()) {
index++;
// 从第1行开始创建
row = sheet.createRow(index);
Object[] obj = (Object[]) it.next();
for (short i = 0; i < obj.length; i++) {
HSSFCell cell = row.createCell(i);
Object value = obj[i];
String textValue = null;
if (!"".equals(value) && value != null) {
if (value instanceof Integer) {
int intValue = (Integer) value;
cell.setCellValue(intValue);
} else if (value instanceof Float) {
float fValue = (Float) value;
cell.setCellValue(fValue);
} else if (value instanceof Double) {
double dValue = (Double) value;
cell.setCellValue(dValue);
} else if (value instanceof Long) {
long longValue = (Long) value;
cell.setCellValue(longValue);
} else if (value instanceof Date) {
Date date = (Date) value;
if (null == pattern || pattern.equals("")) {
pattern = "yyyy-MM-dd";
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
textValue = sdf.format(date);
cell.setCellValue(textValue);
} else {
// 其它数据类型都当作字符串简单处理
textValue = value.toString();
// 设置单元格的值
cell.setCellValue(textValue);
}
} else {
cell.setCellValue("");
}
}
}
// 让列宽随着导出的列长自动适应
for (int colNum = 0; colNum < headers.length; colNum++) {
int columnWidth = sheet.getColumnWidth(colNum) / 256;
for (int rowNum = 0; rowNum < sheet.getLastRowNum(); rowNum++) {
HSSFRow currentRow;
// 当前行未被使用过
if (sheet.getRow(rowNum) == null) {
currentRow = sheet.createRow(rowNum);
} else {
currentRow = sheet.getRow(rowNum);
}
if (currentRow.getCell(colNum) != null) {
HSSFCell currentCell = currentRow.getCell(colNum);
if (currentCell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
int length = currentCell.getStringCellValue() != null
? currentCell.getStringCellValue().getBytes().length : 10;
if (columnWidth < length) {
columnWidth = length;
}
}
}
}
if (colNum == 0) {
sheet.setColumnWidth(colNum, (columnWidth - 2) * 256);
} else {
sheet.setColumnWidth(colNum, (columnWidth + 4) * 256);
}
}
OutputStream outputStream = response.getOutputStream();// 打开流
workbook.write(outputStream);// HSSFWorkbook写入流
workbook.close();// HSSFWorkbook关闭
outputStream.flush();// 刷新流
outputStream.close();// 关闭流
return workbook;
}
}
/**
* 表单导出
*
* @param response
* @param export
* @param request
*/
@RequestMapping("****")
public void exportExcel(HttpServletRequest request, HttpServletResponse response) {
try {
Map<String, Object> paramMap = RequestUtils.convertRequestToMap(request);
//表单id
Long formId = getLong(paramMap, "formId");
// 条件
String condition = getString(paramMap, "condition");
// 表头
ArrayList<String> excelHeader = new ArrayList<String>();
//根据表单id查出表头
List<Map<String, Object>> list1 = fFormService.findFFromFliedConfig(formId);
for (Map<String, Object> map : list1) {
String showName = map.get("showName").toString();
excelHeader.add(showName);
}
String[] arrString = (String[]) excelHeader.toArray(new String[excelHeader.size()]);
// 对应表单数据
List<Map<String, Object>> fromDataList = fFormService.findFFormData1(formId, condition);
List<Object[]> dataList = new ArrayList<Object[]>();
ArrayList<String> datal = null;
for (Map<String, Object> map : fromDataList) {
datal = new ArrayList<String>();
for (Map<String, Object> map1 : list1) {
String dataName = map1.get("dataName").toString();
String data = map.get(dataName).toString();
datal.add(data);
}
Object[] array = datal.toArray(new String[datal.size()]);
dataList.add(array);
}
ExportExcel.exportExcel(request, response, "表单导出", arrString, dataList, "yyyy-MM-dd HH:mm :ss");
} catch (Exception e) {
e.printStackTrace();
}