HSSFWorkbook workBook = new HSSFWorkbook();// 创建 一个excel文档对象
HSSFSheet sheet = workBook.createSheet("数据库表结构");// 创建一个工作薄对象
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
/*HSSFRow row = sheet.createRow(1);// 创建一个行对象
row.setHeightInPoints(23);// 设置行高23像素 */

//ResultSet resultSet= DBOperator();
//ResultSet resultSet= DBOperatorModule();
List<Map<String, Object>> list= DBOperatorModule();
Iterator<Map<String, Object>> terIterator = list.iterator();
//设置行数
int rowNum = 0;
while (terIterator.hasNext()) {
Map<String, Object> map = terIterator.next();
//创建标题
HSSFRow row = sheet.createRow(rowNum++);// 创建一个行对象
row.setHeightInPoints(23);// 设置行高23像素
HSSFCellStyle style = workBook.createCellStyle();// 创建样式对象
// 设置字体
HSSFFont font = workBook.createFont();// 创建字体对象
font.setFontHeightInPoints((short) 11);// 设置字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体
font.setFontName("宋体");// 设置为宋体字
style.setFont(font);// 将字体加入到样式对象
HSSFCell cell = row.createCell(0);// 创建单元格,开始第一个单元格,单元格编号默认从0开始
//可以加黑
//设置每个模块的 模块名称和类型的id
cell.setCellValue(map.get("MODULE_NAME")+"("+map.get("MODULE_TYPE_ID")+")");
cell.setCellStyle(style);
//cell.setCellValue(resultSet.getNString("MODULE_NAME")+"("+resultSet.getNString("MODULE_SHORT_NAME")+")");
//创建元素名称,属性,代码
HSSFRow row1 = sheet.createRow(rowNum++);// 创建一个行对象
row1.setHeightInPoints(23);// 设置行高23像素
HSSFCell cell1 = row1.createCell(1);// 创建单元格
cell1.setCellValue("元素名称");
cell1.setCellStyle(style);
//可以补充设置单元格的宽度。。。。cell1.setCellStyle(style);
HSSFCell cell2 = row1.createCell(2);// 创建单元格
cell2.setCellValue("属性");
cell2.setCellStyle(style);
HSSFCell cell3 = row1.createCell(3);// 创建单元格
cell3.setCellValue("代码");
cell3.setCellStyle(style);

//开始创建元素名称,属性,代码
//元素名称
//select * from PUB_ELEMENT where MIDULE_ID;
String string = pub_elementSql;
String string1 = "MODULE_CODE";
String string2 = (String) map.get("MODULE_CODE");
//获取元素集合
//ResultSet resultSet1= DBOperator(string,string1,string2);
//ResultSet resultSet1= DBOperatorElement(string1,string2);
List<Map<String, Object>> list1= DBOperatorElement(string2);
Iterator<Map<String, Object>> terIterator1 = list1.iterator();

//设置行数
//int rowNum = 3;
//设置列数
//int columnNum = 1;
//设置模块中的相应的元素,写到excel中去
while (terIterator1.hasNext()) {
//设置列数
int columnNum = 1;
Map<String, Object> map1= terIterator1.next();
// 创建一个行对象
HSSFRow rowElement = sheet.createRow(rowNum++);
rowElement.setHeightInPoints(23);// 设置行高23像素
//属性
//select * from PUB_ATTRIBUTE where ELEMENT_ID;
//获取元素名称
String stringElementName = map1.get("ELEMENT_NAME") + "("
+ map1.get("ELEMENT_VAR_NAME") + ")";
HSSFCell cellElment = rowElement.createCell(columnNum);
//添加新行中的第一个单元格数值
cellElment.setCellValue(stringElementName);
columnNum+=1;
//属性名称
String stringAttributeName=null;
//属性名称
String stringCodeName=null;
//查询的表明,字段,id
String string11 = pub_attributeSql;
String string22 = "ELEMENT_CODE";
String string33 = (String) map1.get("ELEMENT_CODE");
//获取属性集合
//ResultSet resultSet2= DBOperator(string11,string22,string33);
//ResultSet resultSet2= DBOperatorAttribute(string22,string33);
List<Map<String, Object>> list2= DBOperatorAttribute(string33);
Iterator<Map<String, Object>> terIterator2 = list2.iterator();
//设置属性,把属性写到Excel中
//用于判断属性个数,多于一个就要添加新行
int yesOrNoAddRow = 0;
//记录新添加行时,需要添加的单元格的位置
int attributeCellInRowNum = 0;
while (terIterator2.hasNext()) {
Map<String, Object> map2= terIterator2.next();
//这里要考虑到表格的合并......,例如患者姓名的 录入值,昵称 就要分两行
//代码
//select * from PUB_ATTRIBUTE where ELEMENT_ID;
//获取属性名称
stringAttributeName=map2.get("ATTR_NAME")+"("+map2.get("ATTR_VAR_NAME")+")";
if(yesOrNoAddRow>0){
// 创建一个行对象
HSSFRow rowElementNew = sheet.createRow(rowNum++);
rowElement.setHeightInPoints(23);// 设置行高23像素
columnNum=attributeCellInRowNum;
HSSFCell cellElment1 = rowElementNew.createCell(attributeCellInRowNum);
//是否添加新行
//attributeCellInRowNum=columnNum;
//添加新行中的第二个单元格数值
cellElment1.setCellValue(stringAttributeName);
columnNum+=1;

String string333 = (String) map2.get("ATTR_CODE");

List<Map<String, Object>> list3= DBOperatorAttCode(string333);
Iterator<Map<String, Object>> terIterator3 = list3.iterator();
while (terIterator3.hasNext()) {
Map<String, Object> map3 = terIterator3.next();
//查询的表明,字段,id
stringCodeName =map3.get("CODE_VALUE")+"."+ map3.get("CODE_NAME");
HSSFCell cellElment2 = rowElementNew.createCell(columnNum);
//添加新行中的第三个单元格数值
cellElment2.setCellValue(stringCodeName);
columnNum+=1;
}
}else {
HSSFCell cellElment1 = rowElement.createCell(columnNum);
//记录新添加行时,需要添加的单元格的位置
attributeCellInRowNum =columnNum;
//添加新行中的第二个单元格数值
cellElment1.setCellValue(stringAttributeName);
columnNum+=1;

String string111 = pub_attr_codeSql;
String string222 = "ATTR_CODE";
String string333 = (String) map2.get("ATTR_CODE");

//ResultSet resultSet3= DBOperator(string111,string222,string333);
//ResultSet resultSet3= DBOperatorAttCode(string222,string333);
List<Map<String, Object>> list3= DBOperatorAttCode(string333);
Iterator<Map<String, Object>> terIterator3 = list3.iterator();
while (terIterator3.hasNext()) {
Map<String, Object> map3 = terIterator3.next();
//查询的表明,字段,id
stringCodeName =map3.get("CODE_VALUE")+"."+ map3.get("CODE_NAME");
HSSFCell cellElment2 = rowElement.createCell(columnNum);
//添加新行中的第三个单元格数值
cellElment2.setCellValue(stringCodeName);
columnNum+=1;
}
}
yesOrNoAddRow+=1;
}
rowNum+=1;
}

HSSFRow row11 = sheet.createRow(rowNum);// 创建一个行对象
row11.setHeightInPoints(23);
HSSFRow row22 = sheet.createRow(rowNum+1);// 创建一个行对象
row22.setHeightInPoints(23);
//cell.setCellStyle(style);// 应用样式对象
/*for (Cell cell4 : row12) {
//循环 创建具体元素名称 属性,代码值的单元格具体值。
}*/
}

FileOutputStream os = new FileOutputStream("style_2003.xls");
workBook.write(os);// 将文档对象写入文件输出流
os.close();// 关闭文件输出流
workBook.close();

System.out.println("创建成功 office 2003 excel");

//creatExcel(resultSet,"人口统计学(DM)");

//creat2003Excel();// 创建2007版Excel文件
//creat2007Excel();// 创建2003版Excel文件
//读取2003Excel文件

/*String path2003 = System.getProperty("user.dir")
+ System.getProperty("file.separator")
+ "style_2003.xls";
// 获取项目文件路径+2003版文件名
System.out.println("路径:" + path2003);
File f2003 = new File(path2003);
try {
readExcel(f2003);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//读取2007Excel文件
String path2007 = System.getProperty("user.dir")
+ System.getProperty("file.separator")
+ "style_2007.xlsx";// 获取项目文件路径+2007版文件名
System.out.println("路径:" + path2007);
File f2007 = new File(path2007);
try {
readExcel(f2007);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/

poi操作oracle数据库导出excel文件的更多相关文章

  1. poi操作oracle数据库导出excel文件2

    package com.test; import java.io.File;  import java.io.FileInputStream;  import java.io.FileNotFound ...

  2. PHP从数据库导出EXCEL文件

    参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...

  3. docker容器中oracle数据库导出dmp文件

    Oracle数据库安装在docker容器中 1首先查看容器 docker ps 2进入oracle容器 docker exec -it 7f0f3f2d4f88 /bin/bash 3导出整个库:这个 ...

  4. Oracle导入导出dmp文件

    目 录 目             录...3 1      说明...3 2      导出dmp文件...3 3      导入dmp文件...5 3.1            环境准备...5 ...

  5. java POI导出Excel文件数据库的数据

    在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...

  6. c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出

    c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...

  7. loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试

    调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...

  8. 通过命令窗口导入导出oracle数据库到dmp文件

    通过命令窗口导入导出oracle数据库到dmp文件 很多时候我们需要备份Oracle的数据库,然后将数据导入其他数据库,因为有大文本字段会导致insert无法完全导出,只能导出为dmp文件,前提是wi ...

  9. 将Oracle数据库导出为txt格式

    将Oracle数据库导出为txt格式: 方法1: 对于Windows系统,可以采用以下方式: 选择控制面板-->管理工具-->数据源(ODBC),添加一个新的数据源(系统或用户DSN均可) ...

随机推荐

  1. Oracle重建表索引及手工收集统计信息

    Oracle重建所有表的索引的sql: SELECT 'alter index ' || INDEX_NAME || ' rebuild online nologging;' FROM USER_IN ...

  2. 为什么我们使用192.168.0.1作为内网ip

    私有IP地址是一段保留的IP地址.只是使用在局域网中,在Internet上是不使用的. 私有IP地址的范围有: 10.0.0.0-10.255.255.255 172.16.0.0—172.31.25 ...

  3. 从零开始学ios开发(十八):Storyboards(下)

    这篇我们完成Storyboards的最后一个例子,之前的例子中没有view之间的切换,这篇加上这个功能,使Storyboards的功能完整呈现.在Storyboards中负责view切换的东西叫做“s ...

  4. thinkphp join 查询

    $user=M('user')->table(C('DB_PREFIX').'user as a')->join(C('DB_PREFIX').'role_user as b on a.u ...

  5. DB天气app冲刺二阶段第八天

    今天突然感觉应该做收尾工作了 因为马上就要考试了,时间一下子就不够用了.. 今天主要修复了一下bug,然后天气基本能够实时准确了,就是多功能按钮还是没有弄好 准备简化一下功能. 明天看看还有什么需要改 ...

  6. 【转】android如何浏览并选择图片 音频 视频

    转自:http://www.cnblogs.com/top5/archive/2012/03/06/2381986.html   这几天 在学习并开发android系统的图片浏览 音频 视频 的浏览 ...

  7. [转载+原创]Emgu CV on C# (七) —— Emgu CV on 轮廓检测

    轮廓检测 对于查找轮廓我们一般要对图像Canny检测.但是对于很特殊的场合其实我们还可以直接对二值化的图像进行轮廓的提取. 关键函数 1. cvFindContours Retrieves conto ...

  8. js--eval函数

    前言: js的eval函数很牛叉,用了几次--不过都没有记录.试想:如果没有EXT.JQery,怎样将json字符串转换为对象呢? 示例: 定义2个字符串变量s1.s2.其中s1表示一个对象:s2表示 ...

  9. 【BZOJ】【2190】【SDOI2008】仪仗队

    欧拉函数/莫比乌斯函数 Orz iwtwiioi 这个嘛……很明显在同一条线上的两个点一定是满足  x1*k=x2,y1*k=y2,(好吧这个表示方式有点傻逼,懂得就好了)那么这条线上的点只有第一个会 ...

  10. 前端学习笔记汇总(之merge方法)

    学习笔记 关于Jquery的merge方法 话不多说,先上图 使用jquery时,其智能提示如上,大概意思就是合并first和second两个数组,得到的结果是first+(second去重后的结果) ...