`
itace
  • 浏览: 181267 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mysql+poi导出数据库设计文档

 
阅读更多

 

 

 

package com.chipmunk.word;

import java.io.FileOutputStream;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;

import org.apache.poi.hslf.model.textproperties.FontAlignmentProp;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import org.apache.poi.xwpf.usermodel.TextAlignment;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.XWPFTable;
import org.apache.poi.xwpf.usermodel.XWPFTableCell;
import org.apache.poi.xwpf.usermodel.XWPFTableRow;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTHeight;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTString;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTbl;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTcPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTrPr;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTVerticalJc;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STShd;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STVerticalJc;

import com.chipmunk.db.MysqlDAO;
import com.chipmunk.db.StringUtil;

public class WordTable {

	
	public static void main(String[] args) throws Exception {
		String path = "E:\\temp\\word\\1.docx";
		XWPFDocument doc = new XWPFDocument();
		
		
		MysqlDAO dao = new MysqlDAO();
		String sql = "select * from TABLES where TABLE_SCHEMA='mydb'";
		String sql2 = "select * from COLUMNS where TABLE_SCHEMA='mydb' and TABLE_NAME=?";
		List<Map<String, Object>> list = dao.query(sql, null);
		for (Map<String, Object> map : list) {
//			System.out.println(map);
			String TABLE_NAME = StringUtil.toString(map.get("TABLE_NAME"));
			String ENGINE = StringUtil.toString(map.get("ENGINE"));
			String TABLE_COMMENT = StringUtil.toString(map.get("TABLE_COMMENT"));
			System.out.println(TABLE_NAME);
			System.out.println(ENGINE);
			System.out.println(TABLE_COMMENT);
			Object[]params = {TABLE_NAME};
			List<Map<String, Object>> list2 = dao.query(sql2, params);
			
			XWPFParagraph p1 = doc.createParagraph();
//	        p1.setAlignment(ParagraphAlignment.CENTER);
//	        p1.setVerticalAlignment(TextAlignment.TOP);
	        XWPFRun r1 = p1.createRun();
	        r1.setBold(true);
	        r1.setText(" ");
	        r1.setFontFamily("Courier");
	        r1.setTextPosition(60);
	        
	        XWPFParagraph p2 = doc.createParagraph();
	        p1.setAlignment(ParagraphAlignment.LEFT);
	        p1.setFontAlignment(1);
	        p1.setVerticalAlignment(TextAlignment.TOP);
	        XWPFRun r2 = p2.createRun();
	        r2.setBold(true);
	        r2.setText(TABLE_NAME+":"+TABLE_COMMENT);
	        r2.setFontFamily("Courier");
	        r2.setTextPosition(20);
	        
			XWPFTable table = doc.createTable(list2.size()+1, 5);
			
			CTTbl tbl = table.getCTTbl();
			
			CTTblPr tblPr = tbl.getTblPr() == null ? tbl.addNewTblPr() : tbl.getTblPr();
			
			CTString styleStr = tblPr.addNewTblStyle();
			styleStr.setVal("StyledTable");
			
			CTTblWidth tblWidth = tblPr.isSetTblW() ? tblPr.getTblW() : tblPr.addNewTblW();  
			tblWidth.setW(BigInteger.valueOf(8000));
			tblWidth.setType(STTblWidth.DXA);  
			
			List<XWPFTableRow> rows = table.getRows();
			for (int i = 0; i < rows.size(); i++) {
				XWPFTableRow row = rows.get(i);
				CTTrPr trPr = row.getCtRow().addNewTrPr();
				CTHeight ht = trPr.addNewTrHeight();
				ht.setVal(BigInteger.valueOf(360L));
				List<XWPFTableCell> cells = row.getTableCells();
				
				if (i==0) {
					for (int j = 0; j < cells.size(); j++) {
						XWPFTableCell cell = cells.get(j);
						CTTcPr tcpr = cell.getCTTc().addNewTcPr();
						CTVerticalJc va = tcpr.addNewVAlign();
						va.setVal(STVerticalJc.CENTER);
						CTShd ctshd = tcpr.addNewShd();
						ctshd.setColor("auto");
						ctshd.setVal(STShd.CLEAR);
						XWPFParagraph para = cell.getParagraphs().get(0);
						XWPFRun rh = para.createRun();
						
						ctshd.setFill("E0E0E0");
						
						String text_cell = "";
						
						if (j == 0) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1700));
							tcwidth.setType(STTblWidth.DXA);
							text_cell = "字段名称";
						}else if (j == 1) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1700));
							tcwidth.setType(STTblWidth.DXA);
							text_cell = "字段类型";
						}else if (j == 2) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1000));
							tcwidth.setType(STTblWidth.DXA);
							text_cell = "字段默认值";
						}else if (j == 3) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1000));
							tcwidth.setType(STTblWidth.DXA);
							text_cell = "字段非空";
						}else if (j == 4) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(2600));
							tcwidth.setType(STTblWidth.DXA);
							text_cell = "字段含义";
						}
						
						rh.setText(text_cell);
						rh.setBold(true);
						para.setAlignment(ParagraphAlignment.CENTER);
						
					}
				}else {
					Map<String, Object> fields = list2.get(i-1);
					
					for (int j = 0; j < cells.size(); j++) {
						XWPFTableCell cell = cells.get(j);
						CTTcPr tcpr = cell.getCTTc().addNewTcPr();
						CTVerticalJc va = tcpr.addNewVAlign();
						va.setVal(STVerticalJc.CENTER);
						CTShd ctshd = tcpr.addNewShd();
						ctshd.setColor("auto");
						ctshd.setVal(STShd.CLEAR);
						XWPFParagraph para = cell.getParagraphs().get(0);
						XWPFRun rh = para.createRun();
						
						if (i % 2 == 0)
							ctshd.setFill("F0F0F0");
						else
							ctshd.setFill("FFFFFF");
						
						String text_cell = "";
						if (j==0) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1700));
							tcwidth.setType(STTblWidth.DXA);
							String COLUMN_NAME = StringUtil.toString(fields.get("COLUMN_NAME"));
							text_cell = COLUMN_NAME;
						}else if (j==1) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1700));
							tcwidth.setType(STTblWidth.DXA);
							String COLUMN_TYPE = StringUtil.toString(fields.get("COLUMN_TYPE"));
							text_cell = COLUMN_TYPE;
						}else if (j==2) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1000));
							tcwidth.setType(STTblWidth.DXA);
							String COLUMN_DEFAULT = StringUtil.toString(fields.get("COLUMN_DEFAULT"));
							text_cell = COLUMN_DEFAULT;
						}else if (j==3) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(1000));
							tcwidth.setType(STTblWidth.DXA);
							String IS_NULLABLE = StringUtil.toString(fields.get("IS_NULLABLE"));
							text_cell = IS_NULLABLE;
						}else if (j==4) {
							CTTblWidth tcwidth = tcpr.addNewTcW();
							tcwidth.setW(BigInteger.valueOf(3400));
							tcwidth.setType(STTblWidth.DXA);
							String COLUMN_COMMENT = StringUtil.toString(fields.get("COLUMN_COMMENT"));
							text_cell = COLUMN_COMMENT;
							
						}
						rh.setText(text_cell);
						para.setAlignment(ParagraphAlignment.LEFT);
					}
				}
				
			}
//			for (Map<String, Object> map2 : list2) {
//				System.out.println(map2);
//			}
			
		}
		
		FileOutputStream out = new FileOutputStream(path);
		doc.write(out);
		out.close();
	}
}

 依赖jar包

 

  • 大小: 7.3 KB
分享到:
评论

相关推荐

    mysql数据库结构导出至word

    MySQL数据库结构导出至Word是一项常见的需求,尤其是在数据库设计、文档整理或项目交接时。这个myeclipse源码提供了一种解决方案,使得开发者能够方便地将数据库的表结构、索引、约束等信息导出为Word文档,便于共享...

    MySql 和Oracle 数据库结构导出Word

    本项目主要关注如何将这两个数据库的结构导出为Word文档,这在数据库设计、文档整理或迁移过程中非常实用。 MySQL是一款开源、免费的关系型数据库管理系统,以其简单易用和高效性能而闻名。它支持SQL标准,并且提供...

    导出数据库word设计文档

    "导出数据库word设计文档"是一个常见的需求,它可以帮助我们记录数据库结构,便于团队协作和项目维护。下面将详细介绍这个过程涉及的知识点。 首先,我们需要连接到MySQL数据库。MySQL是一款流行的开源关系型数据库...

    基于Java+POI的教师监考任务信息检索系统设计.zip

    2. 数据库设计:选择合适的数据库管理系统,如MySQL,存储教师信息、监考任务详情等。设计合理的数据库表结构,确保数据的一致性和完整性。 3. 控制器层:使用Spring MVC框架,创建控制器类来处理HTTP请求,包括...

    java毕业设计之Word自动出题系统源码(ssm后端+mysql+前端+说明文档).zip

    - **Word文档处理**:利用Java的Apache POI库或其他类似工具,动态生成Word文档,包括题目、选项、答案及分数。 **6. 前端界面:** - **用户界面**:使用HTML、CSS和JavaScript构建友好的用户界面,实现页面的展示...

    java生成数据库字典表mysql doc-generator

    Java生成数据库字典表MySQL Doc-Generator是一款实用的工具,旨在帮助开发者将MySQL数据库中的表结构信息导出为Word文档,方便进行数据库设计文档的整理和分享。这个工具简化了手动编写数据库字典表的过程,提高了...

    OFFICE在线测试系统(SpringBoot、SpringData、MySQL、POI).zip

    这个项目作为毕设课题,为学习者提供了实际操作的机会,涵盖了后端开发、数据库设计、文件处理等多个方面。通过研究和实现这个系统,学生可以深入理解Spring全家桶的使用,了解如何在实际项目中利用MySQL进行数据...

    ssh整合poi导入导出Excel

    5. 使用Hibernate或JDBC将数据存入MySQL数据库。 在提供的工程中,可能包含了Action类,用于处理HTTP请求,Controller类用于控制业务逻辑,Service类处理具体的导入导出操作,而DAO(数据访问对象)类则负责与...

    Struts2+IText动态导出Word示例源码

    总之,这个示例展示了Struts2、IText和Excel(POI)在实际项目中的整合应用,提供了动态生成和导出Word文档的能力,同时也能处理Excel数据的导入与导出,对提升企业级应用的数据处理能力大有裨益。

    连接数据库,根据数据库表格式导出excel数据字段内容及注释

    在IT行业中,数据库管理和数据导出是至关重要的任务,尤其在项目需求分析、设计和开发阶段。本项目名为"连接数据库,根据数据库表格式导出excel数据字段内容及注释",它提供了一种便捷的方式来获取数据库表的信息,...

    读取Excel文件并导入mysql数据库

    这篇文档将聚焦于如何使用Java编程语言来读取Excel文件,并将其内容导入到MySQL数据库中。这个过程涉及到几个关键的技术点,包括Java对Excel文件的处理、数据库连接以及数据操作。 首先,Java提供了多种库来处理...

    软件开发概要设计文档

    ### 软件开发概要设计文档 - 电商系统 #### 一、概要 本文档旨在为快乐买网上商城的软件开发提供一套全面而详尽的概要设计指南。通过对项目的整体架构、功能模块、界面设计、数据库设计等多个方面进行细致规划,...

    课程设计基于springboot+vue的学生宿舍管理系统源码+数据库

    这可能是通过使用Apache POI库来处理Excel文件,或者使用PDFkit生成PDF文档,将宿舍管理数据以结构化的格式导出。 6. **项目结构**: 文件名`ssshglxt-master`暗示了项目采用Git进行版本控制,并且是项目的主分支...

    教师综合评价系统文档源码数据库

    【标题】:“教师综合评价系统文档源码数据库”是一个基于SSM框架的项目,它包含了实现教师综合评价功能的相关源代码、文档以及数据库设计。这个项目对于那些正在学习SSM框架,尤其是想要深入理解框架实际应用的...

    基于Java、POI、JDBC的信息管理系统.zip

    4. **信息系统分析与设计**:这是软件工程的一个关键阶段,主要包括需求分析、系统架构设计、数据库设计、界面设计等步骤。在这个过程中,开发者需要理解用户的需求,定义系统功能,选择合适的架构模式,设计数据...

    apache poi 例子

    总结来说,Apache POI 提供了一套完整的API,让Java开发者能够方便地读写Excel文件,并与MySQL等数据库集成,实现数据的导入导出。通过熟练掌握Apache POI,你可以创建复杂的Excel报告,进行数据处理和分析,提高...

    Structs2+Spring+hibernate+jdom+junit+读取excel+serve2005+oracle+mysql 架包

    POI提供了API,可以方便地操作Excel的行、列、公式等,对于数据导入导出、数据分析等场景非常实用。 7. **Servlet 2.5**:Servlet是Java EE的一部分,用于扩展Web服务器的功能。Servlet 2.5是其一个版本,定义了...

    EAP.rar_.eap_EAP_Java Word_数据库 word

    2. **数据库操作**: 可能使用了如MySQL、Oracle或SQL Server等数据库,需要了解基本的SQL语法和数据库设计原理。 3. **Apache POI**: 这是一个开源API,用于读取、写入和修改Microsoft Office格式的文件,包括Word...

    自定义生产数据表字段说明文档

    系统设计应具有良好的扩展性,允许添加更多数据库驱动,以支持MySQL、SQL Server、PostgreSQL等其他数据库系统。这可能涉及到编写新的数据库适配器,遵循统一的接口来实现不同的数据库操作。 6. **文件生成与导出*...

Global site tag (gtag.js) - Google Analytics