mysql数据库导出word⽂档_Java导出数据库表信息⽣成Word
⽂档
⼀、前⾔
最近看见朋友写了⼀个导出数据库⽣成word⽂档的业务,感觉很有意思,研究了⼀下,这⾥也拿出来与⼤家分享⼀波~
先来看看⽣成的word⽂档效果吧
下⾯我们也来⼀起简单的实现吧
⼆、Java 导出数据库表信息⽣成Word⽂档
温馨⼩提⽰:下⾯只是简单的展⽰⼀些主要代码,详情可参考⽂末给出的案例demo源码
基本环境
spring-boot 2.1.8
mybatis-plus 2.2.0
mysql 数据库
1、新增依赖
com.lowagie
itext
2.1.7
com.itextpdf
itext-asian
5.2.0
com.lowagie
itext-rtf
2.1.7
2、查询表数据信息
@Mapper
public interface TableMapper {
/**
* 获取指定数据库下所有表名和注释
*
* @param dbName:数据库名
* @return: java.util.List
*/
@Select("select table_name as name,table_comment as comment from information_schema.tables where table_schema =# {dbName} order by table_name")
List getAllTables(@Param("dbName") String dbName);
/**
* 获取指定表信息
*
* @param tableName:表
* @return: java.util.List
*/
@Select("SHOW FULL FIELDS FROM ${tableName}")
List getTable(@Param("tableName") String tableName);
}
3、⽣成word⽂档实现类
@Service
public class TableService implements ITableService {
@Autowired
private TableMapper tableMapper;
@Autowired
private TableToWordUtil tableToWordUtil;
@Override
public String getTableInfo() {
// 1、获取数据库所有表信息
List tables = AllTables(Constants.DATABASE);
// 2、⽣成⽂件名信息 - 年⽉⽇时分秒
String date = null;
try {
date = DateTimeUtils.dateFormat(new Date(), DateTimeUtils.PARSE_PATTERNS[12]);
} catch (ParseException e) {
e.printStackTrace();
}
String docFileName = Constants.FILE_PATH + "\\" + Constants.FILE_NAME + "-" + date + ".doc"; // 3、调⽤⼯具类⽣成⽂件
// 4、返回⽂件地址
String filePath = placeAll("\\\\", "/");
return filePath;
}
}
4、其中⽣成word⽂档⼯具类
@Service
public class TableToWordUtil {
@Autowired
TableMapper tableMapper;
/**
* ⽣成word⽂档
*
* @param tables:该数据库下所有表信息
* @param fileName:⽣成⽂件地址
* @param title:⽂件内容标题
* @return: void
*/
public void toWord(List tables, String fileName, String title) {
Document document = new Document(PageSize.A4);
try {
// 创建⽂件夹
mysql存储文档File dir = new File(Constants.FILE_PATH);
dir.mkdirs();
// 创建⽂件
File file = new File(fileName);
if (ists() && file.isFile()) {
file.delete();
}
// 写⼊⽂件信息
document.open();
Paragraph ph = new Paragraph();
Font f = new Font();
Paragraph p = new Paragraph(title, new Font(Font.NORMAL, 24, Font.BOLDITALIC, new Color(0, 0, 0))); p.setAlignment(1);
document.add(p);
ph.setFont(f);
for (int i = 0; i < tables.size(); i++) {
String table_name = (i).getName();
String table_comment = (i).getComment();
List fileds = (i).getName());
String all = "" + (i + 1) + " 表名称:" + table_name + "(" + table_comment + ")";
Table table = new Table(6);
document.add(new Paragraph(""));
table.setBorderWidth(1);
table.setPadding(0);
table.setSpacing(0);
//添加表头的元素,并设置表头背景的颜⾊
Color chade = new Color(176, 196, 222);
Cell cell = new Cell("编号");
addCell(table, cell, chade);
cell = new Cell("字段名");
addCell(table, cell, chade);
cell = new Cell("类型");
addCell(table, cell, chade);
cell = new Cell("是否⾮空");
addCell(table, cell, chade);
cell = new Cell("是否主键");
addCell(table, cell, chade);
cell = new Cell("注释");
addCell(table, cell, chade);
// 表格的主体
for (int k = 0; k < fileds.size(); k++) {
addContent(table, cell, (k + 1) + "");
addContent(table, cell, (k).getField());
addContent(table, cell, (k).getType());
addContent(table, cell, (k).getNull().equals("YES") ? "否" : "是"); addContent(table, cell, (k).getKey() != "" ? "是" : "否"); addContent(table, cell, (k).getComment());
}
Paragraph pheae = new Paragraph(all);
//写⼊表说明
document.add(pheae);
//⽣成表格
document.add(table);
}
document.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。