package com.hm.service;
import com.hm.bean.ColumnInfo;
import com.hm.bean.DataDirectory;
import com.hm.dao.DataDirectoryDAO;
import com.hm.util.POIWordUtil;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@Service
public class DataDirectoryService {
private static Logger log = Logger.getLogger(DataDirectoryService.class);
@Resource
DataDirectoryDAO dataDirectoryDAO;
/**
* 生成word版本数据字典的调用入口
*
* @param dataDirectory
*/
public void generateDataDirectory(DataDirectory dataDirectory) {
if (dataDirectory.getTableHeader().size() == 0) {
log.info("改错了吧,不要随便编辑字段宽度");
return;
}
log.info("阿西吧!我要放大招了");
Map<String, String> tableCommentMap = dataDirectoryDAO.getTableComment(dataDirectory.getDatabaseName());
Map<String, List<String>> tableColumnsMap = dataDirectoryDAO.getTableColumnsInfo(dataDirectory);
generatedoc(dataDirectory, tableColumnsMap, tableCommentMap);
}
private void generatedoc(DataDirectory dataDirectory, Map<String, List<String>> tableMap, Map<String, String> tableCommentMap) {
String databaseName = dataDirectory.getDatabaseName();
String filePath = dataDirectory.getBaseFielPath() + databaseName + "数据库字典.docx";
OutputStream out = null;
try {
XWPFDocument doc = new XWPFDocument();
//设置标题
POIWordUtil.setTitle(doc, databaseName + "数据库字典", 20, ParagraphAlignment.CENTER);
//换行三次
POIWordUtil.nextLine(doc, 3);
Iterator iterators = tableMap.entrySet().iterator();
while (iterators.hasNext()) {
Map.Entry entry = (Map.Entry) iterators.next();
String table_name = (String) entry.getKey();
List<String> columnList = (List<String>) entry.getValue();
String tableNameStr = table_name;
if (StringUtils.isNotEmpty(tableCommentMap.get(table_name))) {
tableNameStr += "【" + tableCommentMap.get(table_name) + "】";
}
//插入表名
POIWordUtil.newParagraphText(doc, tableNameStr);
POIWordUtil.nextLine(doc, 0);
}
Iterator iterator = tableMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry entry = (Map.Entry) iterator.next();
String table_name = (String) entry.getKey();
List<String> columnList = (List<String>) entry.getValue();
String tableNameStr = table_name;
if (StringUtils.isNotEmpty(tableCommentMap.get(table_name))) {
tableNameStr += "【" + tableCommentMap.get(table_name) + "】";
}
//插入表名
POIWordUtil.newParagraphText(doc, tableNameStr);
//创建指定行列的表格
XWPFTable table = POIWordUtil.createTable(doc, columnList.size() + 1, dataDirectory.getTableHeader().size());
//设置表头,列宽
XWPFTableRow rowHeader = table.getRow(0);
Iterator headeriterator = dataDirectory.getTableHeader().entrySet().iterator();
for (int i = 0; headeriterator.hasNext(); i++) {
Map.Entry headerEntry = (Map.Entry) headeriterator.next();
ColumnInfo columnInfo = (ColumnInfo) headerEntry.getValue();
String width = (int) (9000 * ((double) columnInfo.getWidthPercent() / 90)) + "";
setTableCell(rowHeader, i, columnInfo.getDesc(), width);
}
//插入单元格文本
for (int i = 0; i < columnList.size(); i++) {
String[] columninfos = columnList.get(i).split("@");
XWPFTableRow row = table.getRow(i + 1);
for (int j = 0; j < columninfos.length; j++) {
setTableCell(row, j, columninfos[j], "0");
}
}
POIWordUtil.nextLine(doc, 1);
}
log.info("你好有缘人,快去你自己设置的路径看看吧!!!");
out = new FileOutputStream(new File(filePath));
doc.write(out);
} catch (Exception e) {
log.error("", e);
}
}
public static void setTableCell(XWPFTableRow row, int CellPos, String text, String width) {
XWPFTableCell cell = row.getCell(CellPos);
POIWordUtil.setTableCellTextCenter(cell);
if (!"0".equals(width)) {
POIWordUtil.setTableCellWidth(cell, width);
}
cell.setText(text);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
生成数据库数据字典的工具源码,docx,mysql , 即下即用,非常滴方便 导入源码 main修改存储路径 数据库名称 db文件配置数据库账号密码 总之非常简单 简单的不要不要的 格式如下:csdn表格显示不出来 导出的是带表格的 ***数据库字典 t_activity【活动信息表】 t_activity_citys【活动城市关联表】 t_activity_merchant【活动关联商户表】 t_activity_mode【活动优惠方式表】 t_ad【广告信息表】 t_ad_citys【广告信息城市关联表】 t_coupon_merchant【优惠券关联商户表】 字段名 数据类型 允许为空 字段说明 默认值 键值 id bigint(20) NO 主键 - PRI merchant_id bigint(20) NO 商户主键 - - coupon_id bigint(20) NO 优惠券主键 - - creat_time datetime NO 创建时间 - - update_time datetime YES 修改时间 - - is_enable enum('1','2') NO 是否禁用 1、否 2、是 1 -
资源推荐
资源详情
资源评论
收起资源包目录
DataDirectory.rar (108个子文件)
112fc0c1fee3f48a7ee4a01371ffa20fc7d3b6 165B
14ba14fec05c6da7686ad54dca93705d36db64 634B
372dae2fd2603ce1b93d7a8226d99e088ab4c3 318B
4764e4f1597e881270cbed82f153622697c0cb 306B
48f0b2e8d6b2115e47cc1cba93e29b2945f004 186B
493750a72e9ecb38ed6939e1b8f2d055fb2ff1 679B
542c7bbfc5fb54737ba806a353ff25e8efd9d8 44B
629e8ac2faeba72a846be8dd7cc02bb1e57a64 83B
66edbf3db0a6e12a6bf278daa6e1f89ce14338 75B
81cb8c7915ca01a80b8884dfbf8410b697b9a3 56B
84e60d493f23c4f7745b3561bd7aa6b2f7b930 162B
86e6fab557474caca14935d507c192b631af2b 205B
8c4d3436b6b92854f093c4490f6b85aaca0cf9 1KB
938a8eba84df55a1110c4e9aef6838c264b7ba 167B
b05ae0ee7f84d6deba60b411199d394d740a7a 663B
b7bc89499d2f24999be489602876cb37e535e0 46B
b85d395ef930058ee05559d483edc2051e65c5 6KB
ba303717d4e0ea46cb91ddaa8b4d1e5143a062 49B
bfb738b637f5856f4f861dda8212bddc1335ca 44B
c1e7bc45940a6adecabcf51a9e673b53c9cb98 76B
c79274bdb43b5acf03e3719543019d495d88cb 316B
DataDirectoryService.class 6KB
DataDirectoryDAO.class 6KB
POIWordUtil.class 5KB
DataDirectory.class 3KB
DataDirectoryGenerateMain.class 2KB
ColumnNameEnum.class 1KB
ColumnInfo.class 819B
COMMIT_EDITMSG 7B
config 334B
dbb9553fa67a2f25b6e8596a345d89ee70065e 79B
description 73B
e89387ac7a8f4e14baddf6521d3f904f00db0f 163B
edfcb35d686a7e2af91462eea1e85bb5c06884 45B
exclude 240B
.gitattributes 68B
.gitignore 145B
HEAD 333B
HEAD 189B
HEAD 32B
HEAD 23B
pack-cbf9bc002cc33a8d517d768e4e7fc4db6735a336.idx 6KB
DataDirectory.iml 3KB
index 7KB
DataDirectoryService.java 5KB
DataDirectoryDAO.java 5KB
POIWordUtil.java 2KB
DataDirectory.java 2KB
DataDirectoryGenerateMain.java 2KB
ColumnInfo.java 775B
ColumnNameEnum.java 503B
info.log 3KB
error.log 0B
master 333B
master 144B
master 41B
master 41B
.name 17B
pack-cbf9bc002cc33a8d517d768e4e7fc4db6735a336.pack 51KB
packed-refs 337B
jdbc.properties 340B
jdbc.properties 340B
pre-rebase.sample 5KB
update.sample 4KB
fsmonitor-watchman.sample 3KB
pre-commit.sample 2KB
prepare-commit-msg.sample 1KB
pre-push.sample 1KB
commit-msg.sample 896B
pre-receive.sample 544B
applypatch-msg.sample 478B
pre-applypatch.sample 424B
post-update.sample 189B
workspace.xml 32KB
applicationContext.xml 3KB
applicationContext.xml 3KB
pom.xml 2KB
log4j.xml 2KB
log4j.xml 2KB
Project_Default.xml 1KB
Maven__org_springframework_spring_expression_4_2_5_RELEASE.xml 682B
Maven__org_springframework_spring_context_4_2_5_RELEASE.xml 661B
compiler.xml 653B
Maven__org_springframework_spring_beans_4_2_5_RELEASE.xml 647B
Maven__org_springframework_spring_core_4_2_5_RELEASE.xml 640B
Maven__org_springframework_spring_aop_4_2_5_RELEASE.xml 633B
Maven__org_apache_commons_commons_collections4_4_1.xml 629B
Maven__com_mchange_mchange_commons_java_0_2_11.xml 622B
Maven__org_apache_poi_poi_ooxml_schemas_3_17.xml 599B
Maven__mysql_mysql_connector_java_5_1_10.xml 598B
Maven__commons_logging_commons_logging_1_2.xml 582B
Maven__org_apache_poi_poi_scratchpad_3_17.xml 578B
Maven__commons_codec_commons_codec_1_10.xml 567B
Maven__org_apache_poi_ooxml_schemas_1_3.xml 564B
Maven__org_apache_xmlbeans_xmlbeans_2_3_0.xml 563B
Maven__com_github_virtuald_curvesapi_1_04.xml 563B
Maven__commons_lang_commons_lang_2_5.xml 549B
Maven__org_apache_poi_poi_ooxml_3_17.xml 543B
Maven__aopalliance_aopalliance_1_0.xml 538B
Maven__com_mchange_c3p0_0_9_5_2.xml 517B
共 108 条
- 1
- 2
资源评论
你给我的感觉很特别。
- 粉丝: 3
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功