java导出mysql数据表的结构生成word文档

使用sql查询表的结构是比较简单,其实这里难就是难在导出结构到word文档中。。。,使用poi-tl代码也简单

一、首先jdbc工具类,这个不多说了

public class SqlUtils {

	private static String url = "jdbc:mysql://localhost:3306";
	
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public static Connection getConnnection(String user,String password){
		try {
			return DriverManager.getConnection(SqlUtils.url, user, password);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static void closeConnection(Connection conn) throws SQLException{
		if(conn!=null){
			conn.close();			
		}
	}
	
	public static ResultSet getResultSet(Connection conn ,String sql){
		try {
			Statement stat = conn.createStatement();
			return stat.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
}

二、设置word表格的style

public class POITLStyle {

	public static Style getHeaderStyle(){
		Style style = new Style();
		style.setBold(true);
		style.setFontSize(14);
		style.setColor("000000");
		style.setFontFamily("宋体");
		return style;
	}
	
	public static TableStyle getHeaderTableStyle(){
		TableStyle style = new TableStyle();;
		style.setBackgroundColor("B7B7B7");
		return style;
	}
	
	public static Style getBodyStyle(){
		Style style = new Style();
		style.setBold(false);
		style.setFontSize(12);
		style.setColor("000000");
		style.setFontFamily("宋体");
		return style;
	}
	
	public static TableStyle getBodyTableStyle(){
		TableStyle style = new TableStyle();;
		style.setBackgroundColor("DEDEDE");
		return style;
	}
}

三、file文件转换工具类 

这个主要base64流就是word文件,就是根据模板生成我们需要的word文件,你们可以自己生成模板,就是简单的word文件

public class FileUtils {
	//base64文件table模板
	public static String tableFileString = "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";
	//主要模板
	public static String mainFileString = "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";
    //table的其他模板,这个比较好看(个人认为)
	public static String tableFileStringPro = "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";
	
	public static InputStream Base64ToInputStream(){
		ByteArrayInputStream stream = null;
		byte[] bs = Base64.getDecoder().decode(mainFileString);
		stream = new ByteArrayInputStream(bs);
		return stream;
	}
	
	public static File Base64ToFile(String path) throws IOException {
		byte[] bs = Base64.getDecoder().decode(tableFileStringPro);
		File file = new File(path);
		FileOutputStream stream = new FileOutputStream(file);
		stream.write(bs);
		stream.close();
		return file;
	}

四、主要文件

主要的class来了,如果不想看代码的话,直接拖到最后,我放在git上,里面有个jar包,直接java -jar xxx.jar命令就可以生成你想要的word文件了

/**
 * 把数据库中的表结构导出word中
 * @author MOSHUNWEI
 * @version 1.0
 */
public class App 
{
	private static Logger  log = Logger.getLogger(App.class);
    public static void main( String[] args ) throws IOException
    {
    	//使用jar的命令,参数有4个,如果没有4个直接退出,没得商量
    	if(args.length<4){
    		log.info("参数:");
    		log.info("-n=数据库名称");
    		log.info("-u=用户名");
    		log.info("-p=密码");
    		log.info("-d=文件输出路径");
    		System.exit(0);
    	}
    	
    	Map<String, String> map = Check(args);
    	
    	//默认生成的文件名
    	String outFile = map.get("-d")+"/数据库表结构.docx";
    	
    	//查询表的名称以及一些表需要的信息
    	String sql1 = "SELECT table_name, table_type , ENGINE,table_collation,table_comment, create_options FROM information_schema.TABLES WHERE table_schema='"+map.get("-n")+"'";
    	
    	//查询表的结构信息
    	String sql2 = "SELECT ordinal_position,column_name,column_type, column_key, extra ,is_nullable, column_default, column_comment,data_type,character_maximum_length "
    			+ "FROM information_schema.columns WHERE table_schema='"+map.get("-n")+"' and table_name='";
		
    	
		ResultSet rs = SqlUtils.getResultSet(SqlUtils.getConnnection(map.get("-u"), map.get("-p")),sql1);
		
		log.info("开始生成文件");
		List<Map<String, String>> list = getTableName(rs);
		RowRenderData header = getHeader();
		Map<String,Object> datas = new HashMap<String, Object>();
		datas.put("title", "数据结构表");
		List<Map<String,Object>> tableList = new ArrayList<Map<String,Object>>();
		int i = 0;
		for(Map<String, String> str : list){
			log.info(str);
			i++;
			String sql = sql2+str.get("table_name")+"'";
			ResultSet set = SqlUtils.getResultSet(SqlUtils.getConnnection(map.get("-u"), map.get("-p")),sql);
			List<RowRenderData> rowList = getRowRenderData(set);
			Map<String,Object> data = new HashMap<String,Object>();
			data.put("no", ""+i);
			data.put("table_comment",str.get("table_comment")+"");
			data.put("engine",str.get("engine")+"");
			data.put("table_collation",str.get("table_collation")+"");
			data.put("table_type",str.get("table_type")+"");
			data.put("name", new TextRenderData(str.get("table_name"), POITLStyle.getHeaderStyle()));
			data.put("table", new MiniTableRenderData(header, rowList));
			tableList.add(data);
		}

		datas.put("tablelist", new DocxRenderData(FileUtils.Base64ToFile(outFile), tableList));
		XWPFTemplate template = XWPFTemplate.compile(FileUtils.Base64ToInputStream()).render(datas);
		
		FileOutputStream out = null;
		try {
			out = new FileOutputStream(outFile);
			log.info("生成文件结束");
		} catch (FileNotFoundException e) {
			e.printStackTrace();
			log.info("生成文件失败");
		}finally {
			try {
				template.write(out);
				out.flush();
				out.close();
				template.close();
				
			} catch (IOException e) {
				e.printStackTrace();
			} 
		}
		
    }
    
    /**
     * 检查缺少的参数
     * @param args
     * @return
     */
    private static Map<String, String> Check(String[] args) {
    	Map<String, String> map = new HashMap<String, String>();
    	for(String str: args){
    		String[] split = str.split("=");
    		map.put(split[0], split[1]);
    	}
    	
    	if(!map.containsKey("-n")){
    		log.info("请输入数据库名称!");
    		System.exit(0);
    	}
    	if(!map.containsKey("-u")){
    		log.info("请输入数据库用户名!");
    		System.exit(0);
    	}
    	if(!map.containsKey("-p")){
    		log.info("请输入数据库密码!");
    		System.exit(0);
    	}
    	if(!map.containsKey("-d")){
    		log.info("请输入保存文件的目录!");
    		System.exit(0);
    	}
    	
    	return map;
	}

	/**
     * table的表头
     * @return RowRenderData
     */
    private static RowRenderData getHeader(){
    	RowRenderData header = RowRenderData.build(
				new TextRenderData("序号", POITLStyle.getHeaderStyle()),
				new TextRenderData("字段名称", POITLStyle.getHeaderStyle()),
				new TextRenderData("字段描述", POITLStyle.getHeaderStyle()),
				new TextRenderData("字段类型", POITLStyle.getHeaderStyle()),
				new TextRenderData("长度", POITLStyle.getHeaderStyle()),
				new TextRenderData("允许空", POITLStyle.getHeaderStyle()),
				new TextRenderData("缺省值", POITLStyle.getHeaderStyle()));
		header.setStyle(POITLStyle.getHeaderTableStyle());
		return header;
    }
    
    /**
     * 获取一张表的结构数据
     * @param set
     * @return List<RowRenderData>
     */
    private static List<RowRenderData> getRowRenderData(ResultSet set) {
    	List<RowRenderData> result = new ArrayList<RowRenderData>();
    	
    	try {
    		int i = 0;
			while(set.next()){
				i++;
				RowRenderData row = RowRenderData.build(
						new TextRenderData(set.getString("ordinal_position")+""),
						new TextRenderData(set.getString("column_name")+""),
						new TextRenderData(set.getString("column_comment")+""),
						new TextRenderData(set.getString("data_type")+""),
						new TextRenderData(set.getString("character_maximum_length")+""),
						new TextRenderData(set.getString("is_nullable")+""),
						new TextRenderData(set.getString("column_default")+"")
						);
				if(i%2==0){
					row.setStyle(POITLStyle.getBodyTableStyle());
					result.add(row);
				}else{
					result.add(row);
				}
			
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
    	
		return result;
	}

    /**
     * 获取数据库的所有表名及表的信息
     * @param rs
     * @return list
     */
    private static List<Map<String,String>> getTableName(ResultSet rs){
    	List<Map<String,String>> list = new ArrayList<Map<String,String>>();
    	
    	try {
			while(rs.next()){
				Map<String,String> result = new HashMap<String,String>();
				result.put("table_name", rs.getString("table_name")+"");
				result.put("table_type", rs.getString("table_type")+"");
				result.put("engine", rs.getString("engine")+"");
				result.put("table_collation", rs.getString("table_collation")+"");
				result.put("table_comment", rs.getString("table_comment")+"");
				result.put("create_options", rs.getString("create_options")+"");
				list.add(result);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}
    	
    	return list;
    }

}

接下来就是测试咯: 

run,然后在桌面上生成:

文件内容如下

最后perfect

github

https://github.com/yzliusha/MysqlTableStructure

猜你喜欢

转载自blog.csdn.net/qq_40150691/article/details/83023783