将oracle数据库中指定的多张表结构导入word
读库操作
/**
@Author zw
@DATE 2019/8/7 17:24
@VERSION 1.0.0
**/
@Service
public class SaveTemplateServiceImpl {@Autowired
private WordExport wordExport;private String file = “config/jdbc.json”;
public Map<String,DataSource> dataSourceMap = new HashMap<String,DataSource>();
public List tableEntities = new ArrayList();
@Data
public class TableInfo{
private String tablename;
private String remark;
private String dataSourceId;
}@Data
public class TableEntity{
private String column_name = “”;
private String data_type = “”;
private String data_length = “”;
private String nullAble = “true”;
private String comments = “”;
}public void init(){
try {
String databasesString = IOUtils.toString(new FileInputStream(file), “UTF-8”);
JSONObject jsonObject = JSONObject.fromObject(databasesString);
JSONArray jsonArray = jsonObject.getJSONArray(“datasources”);
for (int i = 0;i<jsonArray.size();i++){
JSONObject jsObject = jsonArray.getJSONObject(i);
Map.Entry entry = getDataSourceEntry(jsObject);
dataSourceMap.put(String.valueOf(entry.getKey()),(DataSource) entry.getValue());
}JSONArray tableArray = jsonObject.getJSONArray("tables");for (int i = 0;i<tableArray.size();i++){JSONObject object = tableArray.getJSONObject(i);String tableName = object.getString("tablename").toUpperCase();String remark = object.getString("remark");String datasourceId = object.getString("datasource_id");TableInfo tableInfo = new TableInfo();tableInfo.setTablename(tableName);tableInfo.setDataSourceId(datasourceId);tableInfo.setRemark(remark);tableEntities.add(tableInfo);}} catch (Exception e) {e.printStackTrace();}
}
private Map.Entry getDataSourceEntry(JSONObject jsObject) {
String key = jsObject.getString(“key”);
String url = jsObject.getString(“url”);
String driverclass = jsObject.getString(“driverclass”);
String username = jsObject.getString(“username”);
String password = jsObject.getString(“password”);DruidDataSource dataSource = new DruidDataSource();dataSource.setUrl(url);dataSource.setDriverClassName(driverclass);dataSource.setUsername(username);dataSource.setPassword(password);DefaultMapEntry entry = new DefaultMapEntry(key,dataSource);return entry;
}
public void importData(){
init();
Map<TableInfo,List> map = new HashMap<>();
for (TableInfo tableInfo:tableEntities){
List list = getTableEntity(tableInfo);
System.out.println(JSONArray.fromObject(list).toString() + “---------” + JSONArray.fromObject(tableEntities).toString());
map.put(tableInfo,list);
}
//导出word文档 调用工具类
wordExport.export(map);
}private List getTableEntity(TableInfo tableInfo) {
String tableName = tableInfo.getTablename();
DataSource dataSource = dataSourceMap.get(tableInfo.dataSourceId);
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
StringBuffer sqlformat = new StringBuffer();
sqlformat.append(“SELECT t1.Column_Name ,”).append(" t1.DATA_TYPE ,t1.DATA_LENGTH ,t1.NullAble ,t2.Comments “);
sqlformat.append(” FROM cols t1");
sqlformat.append(" LEFT JOIN user_col_comments t2 ON t1.Table_name = t2.Table_name AND t1.Column_Name = t2.Column_Name");
sqlformat.append(" LEFT JOIN user_tab_comments t3 ON t1.Table_name = t3.Table_name");
sqlformat.append(" LEFT JOIN user_objects t4 ON t1.table_name = t4.OBJECT_NAME");
sqlformat.append(" WHERE");
sqlformat.append(" NOT EXISTS (SELECT t4.Object_Name FROM User_objects t4 WHERE t4.Object_Type = ‘TABLE’ AND t4.Temporary = ‘Y’ AND t4.Object_Name = t1.Table_Name ) “);
sqlformat.append(” and t1.Table_Name = ‘%s’");
sqlformat.append(" ORDER BY t1.Table_Name, t1.Column_ID");
String sql = String.format(sqlformat.toString(),tableName);
List tableEntities = new ArrayList();
List<Map<String, Object>> list = jdbcTemplate.queryForList(sql);
for (Map<String, Object> map:list){
TableEntity tableEntity = new TableEntity();
String columnName = String.valueOf(map.get(“column_name”)).toUpperCase();
String dataType = String.valueOf(map.get(“DATA_TYPE”));
String length = String.valueOf(map.get(“DATA_length”));
String isNull= String.valueOf(map.get(“NULLABLE”));
String comments= String.valueOf(map.get(“Comments”));
tableEntity.setColumn_name(columnName);
tableEntity.setData_type(dataType);
tableEntity.setData_length(length);
tableEntity.setNullAble(isNull);
tableEntity.setComments(comments);
tableEntities.add(tableEntity);
}
return tableEntities;}
}
导出操作
package com.djhu.imp.utils;
import com.djhu.imp.service.SaveTemplateServiceImpl;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.xwpf.model.XWPFHeaderFooterPolicy;
import org.apache.poi.xwpf.usermodel.;
import org.openxmlformats.schemas.wordprocessingml.x2006.main.;
import org.springframework.stereotype.Service;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import java.util.List;
import java.util.Map;
/**
Created by zhouhs on 2017/1/9.
*/
@Service
public class WordExport {public void export(Map<SaveTemplateServiceImpl.TableInfo,List<SaveTemplateServiceImpl.TableEntity>> map) {
try {
//Blank Document
XWPFDocument document= new XWPFDocument();//Write the Document in file systemFileOutputStream out = new FileOutputStream(new File("create_table.docx"));//添加标题XWPFParagraph titleParagraph = document.createParagraph();//设置段落居中titleParagraph.setAlignment(ParagraphAlignment.CENTER);/* XWPFRun titleParagraphRun = titleParagraph.createRun();titleParagraphRun.setText("Java PoI");titleParagraphRun.setColor("000000");titleParagraphRun.setFontSize(20);*/this.settingParagraphs(document,map);CTSectPr sectPr = document.getDocument().getBody().addNewSectPr();XWPFHeaderFooterPolicy policy = new XWPFHeaderFooterPolicy(document, sectPr);//添加页眉CTP ctpHeader = CTP.Factory.newInstance();CTR ctrHeader = ctpHeader.addNewR();CTText ctHeader = ctrHeader.addNewT();String headerText = "Java POI create MS word file.";ctHeader.setStringValue(headerText);XWPFParagraph headerParagraph = new XWPFParagraph(ctpHeader, document);//设置为右对齐headerParagraph.setAlignment(ParagraphAlignment.RIGHT);XWPFParagraph[] parsHeader = new XWPFParagraph[1];parsHeader[0] = headerParagraph;policy.createHeader(XWPFHeaderFooterPolicy.DEFAULT, parsHeader);//添加页脚CTP ctpFooter = CTP.Factory.newInstance();CTR ctrFooter = ctpFooter.addNewR();CTText ctFooter = ctrFooter.addNewT();String footerText = "http://blog.csdn.net/zhouseawater";ctFooter.setStringValue(footerText);XWPFParagraph footerParagraph = new XWPFParagraph(ctpFooter, document);headerParagraph.setAlignment(ParagraphAlignment.CENTER);XWPFParagraph[] parsFooter = new XWPFParagraph[1];parsFooter[0] = footerParagraph;policy.createFooter(XWPFHeaderFooterPolicy.DEFAULT, parsFooter);document.write(out);out.close();System.out.println("create_table document written success.");} catch (IOException e) {e.printStackTrace();}
}
//设置段落信息
public void settingParagraphs( XWPFDocument document,Map<SaveTemplateServiceImpl.TableInfo,List<SaveTemplateServiceImpl.TableEntity>> map){
for (SaveTemplateServiceImpl.TableInfo table:map.keySet()) {
//段落
XWPFParagraph firstParagraph = document.createParagraph();
XWPFRun run = firstParagraph.createRun();
run.setText(table.getRemark()+"("+table.getTablename()+")");
//设置字体颜色
run.setColor(“696969”);
run.setFontSize(16);
run.setBold(true); //加粗//设置段落背景颜色CTShd cTShd = run.getCTR().addNewRPr().addNewShd();cTShd.setVal(STShd.CLEAR);
// cTShd.setFill(“D3D3D3”);
//表格
XWPFTable ComTable = document.createTable();
//列宽自动分割
CTTblWidth comTableWidth = ComTable.getCTTbl().addNewTblPr().addNewTblW();
comTableWidth.setType(STTblWidth.DXA);
comTableWidth.setW(BigInteger.valueOf(9072));
//表格第一行XWPFTableRow comTableRowOne = ComTable.getRow(0);comTableRowOne.getCell(0).setText("列名");comTableRowOne.addNewTableCell().setText("类型");comTableRowOne.addNewTableCell().setText("是否空");comTableRowOne.addNewTableCell().setText("注释");comTableRowOne.getCell(0).setColor("D3D3D3");comTableRowOne.getCell(1).setColor("D3D3D3");comTableRowOne.getCell(2).setColor("D3D3D3");comTableRowOne.getCell(3).setColor("D3D3D3");List<SaveTemplateServiceImpl.TableEntity> list = map.get(table);for(int i=0;i<list.size();i++){XWPFTableRow comTableRowTwo = ComTable.createRow();comTableRowTwo.getCell(0).setText(list.get(i).getColumn_name());comTableRowTwo.getCell(1).setText(list.get(i).getData_type()+"("+list.get(i).getData_length()+")");comTableRowTwo.getCell(2).setText(list.get(i).getNullAble());comTableRowTwo.getCell(3).setText(list.get(i).getComments());}//两个表格之间加个换行XWPFParagraph paragraph = document.createParagraph();XWPFRun paragraphRun = paragraph.createRun();paragraphRun.setText("\r");}
}
}
代码地址:https://download.csdn.net/download/qq_33337186/11504954
将oracle数据库中指定的多张表结构导入word相关推荐
- Oracle数据库中自带的所有表结构
一.tb_emp(员工表) 1.建表 CREATE TABLE "TEST"."TB_EMP" ( "EMPNO" NUMBER(4,0) ...
- oracle数据库中批量把一张表里面的数据插入到不同的表中的方法
oracle数据库中批量把一张表里面的数据插入到不同的表中的方法(insert first into | insert all into) 准备环境 1.oracle数据库自带的scott下的用户表 ...
- oracle数据库复制mysql,MySQL/Oracle数据库,使用SQL快速复制表结构或数据
创建表,并复制数据 create table table1 as select * from table2; 只创建表结构,不复制数据 create table table1 as select * ...
- 如何获取Oracle数据库中某表及索引、约束、触发器、对象权限的创
2019独角兽企业重金招聘Python工程师标准>>> 对于数据库中特定的某张表而言,又该如何获取建表语句.及索引.约束.外键约束.触发器.对象权限的创建脚本呢? OCM11g-&g ...
- 使用PowerDesinger工具将设计好的表结构导入到达梦数据库DM7
建立数据流和数据结构的过程叫做数据建模.数据模型设计得是否合理有效完备对后期数据分析处理结果有极大的影响.因此,负责数据建模的设计人员责任重大.工欲善其事,必先利其器.目前就小编了解,在数据库建模上, ...
- Oracle表里的照片怎么导出来,如何导出oracle数据库中某张表到excel_oracle数据库表格导出到excel...
如何将oracle数据库表字段导成excel表格 这个你只要用ADO连oracle并获取记录集,根据你用的编程语言打开EXCEL,然后操作EXCEL对象的工作表就可以了.以VB为例: 1.在工程中引用 ...
- oracle导出数据带where,CSS_指定一个where条件来有条件地导出记录,在Oracle数据库中,exp中的query - phpStudy...
指定一个where条件来有条件地导出记录 在Oracle数据库中,exp中的query参数可以指定一个where条件来有条件地导出记录, 对于许多不常使用此选项的朋友来说, 经常会遇到下面这样的错误: ...
- oracle 数据库中(创建、解锁、授权、删除)用户
上文我们已经建立了名为orcl66的数据库. 想要在数据库中创建.修改用户需要我们以管理员权限登录到数据库中. 首先我们通过sqlplus命令登录连接数据库. 输入sqlplus命令--用户名: sy ...
- oracle语句mysql数据库名称_查询oracle数据库中当前数据库所有表的名称
SQL查询数据库中所有指定类型的字段名称和所在的表名 --查询数据库中所有指定类型的字段名称和所在的表名 --eg: 下面查的是当前数据库中 所有字段类型为 nvarchar(max) 的字段名和表名 ...
最新文章
- 调试coffee script 的一个技巧
- printf()详解之终极无惑-转载
- 【Java 虚拟机原理】JDK 体系结构 | Java 源码运行原理 | Java 虚拟机内存
- SAP系统与外部系统的三种接口形式
- Android init.rc分析
- HTTP 视频怎么在 MIP 页面中使用?
- Linux上的redis安装和后台启动
- 实现Fragment在ViewPager中滑动
- 免费的位图字体制作工具Bitmap Font Generator使用教程
- Netty的并发编程实践4:线程安全类的应用
- 『nForce主板』巧妙去掉“安全删除硬盘”图标!
- 远程桌面总是显示正在配置远程会话_Jump Desktop for mac (远程控制软件)
- Verilog描述——一位全加器,四选一选择器,计数器
- 微信小程序云数据库中变量作为字段名与字段取值、字段值取值
- 计算机无法外接投影,电脑连不上投影仪怎么办
- 论文参考文献生成以及标注方法说明
- 软件测试1 软件测试分类
- win2008服务器c盘在线扩容,win7 win10 win2008系统给主分区C盘增加空间 不破坏原硬盘内容扩充C盘 MiniTool Partition Wizard...
- 编写函数:字符串的小写转大写(Append Code)
- 计算机不识别u盘什么原因,电脑不识别u盘怎么回事