poi操作oracle数据库导出excel文件2
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import org.apache.poi.hssf.record.DBCellRecord;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFComment;
import org.apache.poi.hssf.usermodel.HSSFDataFormat;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class testExcel {
public static final String pub_moduleSql = "PUB_MODULE";
public static final String pub_elementSql = "PUB_ELEMENT";
public static final String pub_attributeSql = "PUB_ATTRIBUTE";
public static final String pub_attr_codeSql = "PUB_ATTR_CODE";
/**
* 可以从http://poi.apache.org/ 这里下载到POI的jar包 POI
* 创建和读取2003-2007版本Excel文件
*
*/
@SuppressWarnings("unused")
public static void main(String[] args) throws Exception {
multiSheets();
singleSheet();
/*HSSFWorkbook workBook = new HSSFWorkbook(); // 创建 一个excel文档对象
HSSFSheet sheet =null;
HSSFSheet sheet = workBook.createSheet("数据库表结构");// 创建一个工作薄对象
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(2, 8000);// 设置第三列的宽度为
sheet.setColumnWidth(3, 1000);// 设置第四列的宽度为
sheet.setColumnWidth(4, 1000);// 设置第五列的宽度为
sheet.setColumnWidth(5, 1000);// 设置第六列的宽度为
sheet.setColumnWidth(6, 1000);// 设置第七列的宽度为
sheet.setColumnWidth(7, 1000);// 设置第八列的宽度为
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();
for (int i = 0; i < list.size(); i++) {
sheet = workBook.createSheet();// 创建一个工作薄对象
workBook.setSheetName(i, String.valueOf(i));
}
//设置行数
//int rowNum = 0;
int intAdd = 0;
while (terIterator.hasNext()) {
int rowNum = 0;
Map<String, Object> map = terIterator.next();
String stringMap =map.get("MODULE_NAME") +"(" + map.get("MODULE_TYPE_ID")+")";
//sheet = workBook.getSheetAt(intAdd);// 创建一个工作薄对象
sheet = workBook.createSheet(stringMap);
//workBook.setSheetName(intAdd, stringMap);
intAdd++;
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(2, 10000);// 设置第三列的宽度为
sheet.setColumnWidth(3, 10000);// 设置第四列的宽度为
sheet.setColumnWidth(4, 10000);// 设置第五列的宽度为
sheet.setColumnWidth(5, 10000);// 设置第六列的宽度为
sheet.setColumnWidth(6, 10000);// 设置第七列的宽度为
sheet.setColumnWidth(7, 10000);// 设置第八列的宽度为
//创建标题
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);
//新添加数据类型。。。。
HSSFCell cell3 = row1.createCell(3);// 创建单元格
cell3.setCellValue("数据类型");
cell3.setCellStyle(style);
HSSFCell cell4 = row1.createCell(4);// 创建单元格
cell4.setCellValue("代码");
cell4.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")+") " +map2.get("DATA_TYPE_NAME");
if(yesOrNoAddRow>0){
// 创建一个行对象
HSSFRow rowElementNew = sheet.createRow(rowNum++);
rowElementNew.setHeightInPoints(23);// 设置行高23像素
columnNum=attributeCellInRowNum;
HSSFCell cellElment1 = rowElementNew.createCell(attributeCellInRowNum);
//是否添加新行
//attributeCellInRowNum=columnNum;
//添加新行中的第二个单元格数值
cellElment1.setCellValue(stringAttributeName);
columnNum+=1;
//新添加数据类型列。。。。
HSSFCell cellElmentData = rowElementNew.createCell(columnNum);
String stringAttributeName1=(String) map2.get("DATA_TYPE_NAME");
cellElmentData.setCellValue(stringAttributeName1);
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;
//新添加数据类型列。。。。
HSSFCell cellElmentData = rowElement.createCell(columnNum);
String stringAttributeName1=(String) map2.get("DATA_TYPE_NAME");
cellElmentData.setCellValue(stringAttributeName1);
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();
} */
}
/**
* 创建2003版本的Excel文件 单个sheet
*/
private static void singleSheet() throws Exception {
HSSFWorkbook workBook = new HSSFWorkbook(); // 创建 一个excel文档对象
HSSFSheet sheet = workBook.createSheet("数据库表结构");// 创建一个工作薄对象
//HSSFRow row = sheet.createRow(0);// 创建一个行对象
//row.setHeightInPoints(23);// 设置行高23像素
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(2, 10000);// 设置第三列的宽度为
sheet.setColumnWidth(3, 10000);// 设置第四列的宽度为
sheet.setColumnWidth(4, 10000);// 设置第五列的宽度为
sheet.setColumnWidth(5, 10000);// 设置第六列的宽度为
sheet.setColumnWidth(6, 10000);// 设置第七列的宽度为
sheet.setColumnWidth(7, 10000);// 设置第八列的宽度为
HSSFCellStyle style = workBook.createCellStyle();// 创建样式对象
// 设置字体
HSSFFont font = workBook.createFont();// 创建字体对象
font.setFontHeightInPoints((short) 11);// 设置字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体
font.setFontName("宋体");// 设置为宋体字
style.setFont(font);// 将字体加入到样式对象
//HSSFRow row = sheet.createRow(0);// 创建一个行对象
//row.setHeightInPoints(23);// 设置行高23像素
//HSSFCell cell = row.createCell(0);// 创建单元格,开始第一个单元格,单元格编号默认从0开始
//可以加黑
//设置每个模块的 模块名称和类型的id
//cell.setCellValue(map.get("MODULE_NAME")+"("+map.get("MODULE_TYPE_ID")+")");
//cell.setCellStyle(style);
//创建元素名称,属性,代码
HSSFRow row1 = sheet.createRow(0);// 创建一个行对象
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);*/
//新添加数据类型。。。。
HSSFCell cell3 = row1.createCell(3);// 创建单元格
cell3.setCellValue("数据类型");
cell3.setCellStyle(style);
HSSFCell cell4 = row1.createCell(4);// 创建单元格
cell4.setCellValue("代码");
cell4.setCellStyle(style);
List<Map<String, Object>> list= DBOperatorModule();
Iterator<Map<String, Object>> terIterator = list.iterator();
//设置行数
int rowNum = 1;//rowNum 放到这里,是设置单个sheet。。。。。。
//int intAdd = 0;
while (terIterator.hasNext()) {
/*
* //int rowNum = 0;//rowNum 放到这里,是设置多个sheet。。。。。。
*
Map<String, Object> map = terIterator.next();
String stringMap =map.get("MODULE_NAME") +"(" + map.get("MODULE_TYPE_ID")+")";
sheet = workBook.createSheet(stringMap);
//workBook.setSheetName(intAdd, stringMap);
*/
Map<String, Object> map = terIterator.next();
//intAdd++;
/*sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(2, 10000);// 设置第三列的宽度为
sheet.setColumnWidth(3, 10000);// 设置第四列的宽度为
sheet.setColumnWidth(4, 10000);// 设置第五列的宽度为
sheet.setColumnWidth(5, 10000);// 设置第六列的宽度为
sheet.setColumnWidth(6, 10000);// 设置第七列的宽度为
sheet.setColumnWidth(7, 10000);// 设置第八列的宽度为
*/ //创建标题
//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);// 将字体加入到样式对象
*/
HSSFRow row = sheet.createRow(rowNum++);// 创建一个行对象
row.setHeightInPoints(23);// 设置行高23像素
HSSFCell cell = row.createCell(0);// 创建单元格,开始第一个单元格,单元格编号默认从0开始
//可以加黑
//设置每个模块的 模块名称和类型的id
cell.setCellValue(map.get("MODULE_NAME")+"("+map.get("MODULE_TYPE_ID")+")");
cell.setCellStyle(style);
/*
//创建元素名称,属性,代码
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);
//新添加数据类型。。。。
HSSFCell cell3 = row1.createCell(3);// 创建单元格
cell3.setCellValue("数据类型");
cell3.setCellStyle(style);
HSSFCell cell4 = row1.createCell(4);// 创建单元格
cell4.setCellValue("代码");
cell4.setCellStyle(style);*/
//开始创建元素名称,属性,代码
//元素名称
//select * from PUB_ELEMENT where MIDULE_ID;
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();
//设置模块中的相应的元素,写到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 string33 = (String) map1.get("ELEMENT_CODE");
//获取属性集合
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;
//新添加数据类型列。。。。
HSSFCell cellElmentData = rowElementNew.createCell(columnNum);
String stringAttributeName1=(String) map2.get("DATA_TYPE_NAME");
cellElmentData.setCellValue(stringAttributeName1);
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;
//新添加数据类型列。。。。
HSSFCell cellElmentData = rowElement.createCell(columnNum);
String stringAttributeName1=(String) map2.get("DATA_TYPE_NAME");
cellElmentData.setCellValue(stringAttributeName1);
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 = 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);
}
FileOutputStream os = null;
try {
os = new FileOutputStream("singlesheetstyle_2003.xls");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
workBook.write(os);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 将文档对象写入文件输出流
try {
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 关闭文件输出流
try {
workBook.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
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();
}*/
}
/**
* 创建2003版本的Excel文件 多个sheet
*/
private static void multiSheets() {
HSSFWorkbook workBook = new HSSFWorkbook(); // 创建 一个excel文档对象
HSSFSheet sheet =null;
/*HSSFSheet sheet = workBook.createSheet("数据库表结构");// 创建一个工作薄对象
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(2, 8000);// 设置第三列的宽度为
sheet.setColumnWidth(3, 1000);// 设置第四列的宽度为
sheet.setColumnWidth(4, 1000);// 设置第五列的宽度为
sheet.setColumnWidth(5, 1000);// 设置第六列的宽度为
sheet.setColumnWidth(6, 1000);// 设置第七列的宽度为
sheet.setColumnWidth(7, 1000);// 设置第八列的宽度为
*/
/*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();
/*for (int i = 0; i < list.size(); i++) {
sheet = workBook.createSheet();// 创建一个工作薄对象
workBook.setSheetName(i, String.valueOf(i));
}*/
//设置行数
//int rowNum = 0;
int intAdd = 0;
while (terIterator.hasNext()) {
int rowNum = 0;
Map<String, Object> map = terIterator.next();
String stringRepMap = map.get("MODULE_NAME") +"(" + map.get("MODULE_TYPE_ID")+")";
stringRepMap= stringRepMap.replace('/', '_');
String stringMap = stringRepMap;
//sheet = workBook.getSheetAt(intAdd);// 创建一个工作薄对象
sheet = workBook.createSheet(stringMap);
//workBook.setSheetName(intAdd, stringMap);
intAdd++;
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
sheet.setColumnWidth(2, 10000);// 设置第三列的宽度为
sheet.setColumnWidth(3, 10000);// 设置第四列的宽度为
sheet.setColumnWidth(4, 10000);// 设置第五列的宽度为
sheet.setColumnWidth(5, 10000);// 设置第六列的宽度为
sheet.setColumnWidth(6, 10000);// 设置第七列的宽度为
sheet.setColumnWidth(7, 10000);// 设置第八列的宽度为
//创建标题
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);*/
//新添加数据类型。。。。
HSSFCell cell3 = row1.createCell(3);// 创建单元格
cell3.setCellValue("数据类型");
cell3.setCellStyle(style);
HSSFCell cell4 = row1.createCell(4);// 创建单元格
cell4.setCellValue("代码");
cell4.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++);
rowElementNew.setHeightInPoints(23);// 设置行高23像素
columnNum=attributeCellInRowNum;
HSSFCell cellElment1 = rowElementNew.createCell(attributeCellInRowNum);
//是否添加新行
//attributeCellInRowNum=columnNum;
//添加新行中的第二个单元格数值
cellElment1.setCellValue(stringAttributeName);
columnNum+=1;
//新添加数据类型列。。。。
HSSFCell cellElmentData = rowElementNew.createCell(columnNum);
String stringAttributeName1=(String) map2.get("DATA_TYPE_NAME");
cellElmentData.setCellValue(stringAttributeName1);
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;
//新添加数据类型列。。。。
HSSFCell cellElmentData = rowElement.createCell(columnNum);
String stringAttributeName1=(String) map2.get("DATA_TYPE_NAME");
cellElmentData.setCellValue(stringAttributeName1);
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 = null;
try {
os = new FileOutputStream("multisheetstyle_2003.xls");
} catch (FileNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try {
workBook.write(os);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 将文档对象写入文件输出流
//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();
}*/
}
/**
* 创建版本的Excel文件
*/
private static void creatExcel(ResultSet resultSet ,String titleString) throws FileNotFoundException,IOException {
HSSFWorkbook workBook = new HSSFWorkbook();// 创建 一个excel文档对象
HSSFSheet sheet = workBook.createSheet(titleString);// 创建一个工作薄对象
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
HSSFRow row = sheet.createRow(1);// 创建一个行对象
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);// 将字体加入到样式对象
// 设置对齐方式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中
// 设置边框
style.setBorderTop(HSSFCellStyle.BORDER_THICK);// 顶部边框粗线
style.setTopBorderColor(HSSFColor.RED.index);// 设置为红色
style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);// 底部边框双线
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);// 左边边框
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);// 右边边框
/*// 声明一个画图的顶级管理器
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
// 定义注释的大小和位置,详见文档
HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5));
// 设置注释内容
comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
comment.setAuthor("leno"); */
// 格式化日期
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
List<String> list = new ArrayList<String>() ;
int columnIndex =1;
try {
while (resultSet.next()) {
list.add(resultSet.getNString("MODULE_NAME"));
//(columnIndex++));
}
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
int xt=0;
// 创建数据单元格
for (String string : list) {
HSSFCell cell = row.createCell(xt);// 创建单元格
//cell.setCellValue(new Date());// 写入当前日期
cell.setCellValue(string);// 写入当前日期
cell.setCellStyle(style);// 应用样式对象
xt++;
}
// 文件输出流
FileOutputStream os = new FileOutputStream("style_2003.xls");
workBook.write(os);// 将文档对象写入文件输出流
os.close();// 关闭文件输出流
workBook.close();
System.out.println("创建成功 office 2003 excel");
}
/**
* 创建2007版Excel文件
*
* @throws FileNotFoundException
* @throws IOException
*/
private static void creat2007Excel() throws FileNotFoundException,
IOException {
// HSSFWorkbook workBook = new HSSFWorkbook();// 创建 一个excel文档对象
XSSFWorkbook workBook = new XSSFWorkbook();
XSSFSheet sheet = workBook.createSheet();// 创建一个工作薄对象
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
XSSFRow row = sheet.createRow(1);// 创建一个行对象
row.setHeightInPoints(23);// 设置行高23像素
XSSFCellStyle style = workBook.createCellStyle();// 创建样式对象
// 设置字体
XSSFFont font = workBook.createFont();// 创建字体对象
font.setFontHeightInPoints((short) 15);// 设置字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体
font.setFontName("黑体");// 设置为黑体字
style.setFont(font);// 将字体加入到样式对象
// 设置对齐方式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中
// 设置边框
style.setBorderTop(HSSFCellStyle.BORDER_THICK);// 顶部边框粗线
style.setTopBorderColor(HSSFColor.RED.index);// 设置为红色
style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);// 底部边框双线
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);// 左边边框
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);// 右边边框
// 格式化日期
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
XSSFCell cell = row.createCell(1);// 创建单元格
cell.setCellValue(new Date());// 写入当前日期
cell.setCellStyle(style);// 应用样式对象
// 文件输出流
FileOutputStream os = new FileOutputStream("style_2007.xlsx");
workBook.write(os);// 将文档对象写入文件输出流
os.close();// 关闭文件输出流
System.out.println("创建成功 office 2007 excel");
}
/**
* 创建2003版本的Excel文件
*/
private static void creat2003Excel() throws FileNotFoundException,
IOException {
HSSFWorkbook workBook = new HSSFWorkbook();// 创建 一个excel文档对象
HSSFSheet sheet = workBook.createSheet();// 创建一个工作薄对象
sheet.setColumnWidth(1, 10000);// 设置第二列的宽度为
HSSFRow row = sheet.createRow(1);// 创建一个行对象
row.setHeightInPoints(23);// 设置行高23像素
HSSFCellStyle style = workBook.createCellStyle();// 创建样式对象
// 设置字体
HSSFFont font = workBook.createFont();// 创建字体对象
font.setFontHeightInPoints((short) 15);// 设置字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 设置粗体
font.setFontName("黑体");// 设置为黑体字
style.setFont(font);// 将字体加入到样式对象
// 设置对齐方式
style.setAlignment(HSSFCellStyle.ALIGN_CENTER_SELECTION);// 水平居中
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 垂直居中
// 设置边框
style.setBorderTop(HSSFCellStyle.BORDER_THICK);// 顶部边框粗线
style.setTopBorderColor(HSSFColor.RED.index);// 设置为红色
style.setBorderBottom(HSSFCellStyle.BORDER_DOUBLE);// 底部边框双线
style.setBorderLeft(HSSFCellStyle.BORDER_MEDIUM);// 左边边框
style.setBorderRight(HSSFCellStyle.BORDER_MEDIUM);// 右边边框
/*// 声明一个画图的顶级管理器
HSSFPatriarch patriarch = sheet.createDrawingPatriarch();
// 定义注释的大小和位置,详见文档
HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0, 0, 0, 0, (short) 4, 2, (short) 6, 5));
// 设置注释内容
comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
// 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容.
comment.setAuthor("leno"); */
// 格式化日期
style.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
HSSFCell cell = row.createCell(1);// 创建单元格
cell.setCellValue(new Date());// 写入当前日期
cell.setCellStyle(style);// 应用样式对象
// 文件输出流
FileOutputStream os = new FileOutputStream("style_2003.xls");
workBook.write(os);// 将文档对象写入文件输出流
os.close();// 关闭文件输出流
workBook.close();
System.out.println("创建成功 office 2003 excel");
}
/**
* 对外提供读取excel 的方法
*/
public static List<List<Object>> readExcel(File file) throws IOException {
String fileName = file.getName();
String extension = fileName.lastIndexOf(".") == -1 ? "" : fileName
.substring(fileName.lastIndexOf(".") + 1);
if ("xls".equals(extension)) {
return read2003Excel(file);
} else if ("xlsx".equals(extension)) {
return read2007Excel(file);
} else {
throw new IOException("不支持的文件类型");
}
}
/**
* 读取 office 2003 excel
*
* @throws IOException
* @throws FileNotFoundException
*/
private static List<List<Object>> read2003Excel(File file)
throws IOException {
List<List<Object>> list = new LinkedList<List<Object>>();
HSSFWorkbook hwb = new HSSFWorkbook(new FileInputStream(file));
HSSFSheet sheet = hwb.getSheetAt(0);
Object value = null;
HSSFRow row = null;
HSSFCell cell = null;
System.out.println("读取office 2003 excel内容如下:");
for (int i = sheet.getFirstRowNum(); i <= sheet
.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
if (row == null) {
continue;
}
List<Object> linked = new LinkedList<Object>();
for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
cell = row.getCell(j);
if (cell == null) {
continue;
}
DecimalFormat df = new DecimalFormat("0");// 格式化 number String
// 字符
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_STRING:
// System.out.println(i + "行" + j + " 列 is String type");
value = cell.getStringCellValue();
System.out.print(" " + value + " ");
break;
case XSSFCell.CELL_TYPE_NUMERIC:
// System.out.println(i + "行" + j
// + " 列 is Number type ; DateFormt:"
// + cell.getCellStyle().getDataFormatString());
if ("@".equals(cell.getCellStyle().getDataFormatString())) {
value = df.format(cell.getNumericCellValue());
} else if ("General".equals(cell.getCellStyle()
.getDataFormatString())) {
value = nf.format(cell.getNumericCellValue());
} else {
value = sdf.format(HSSFDateUtil.getJavaDate(cell
.getNumericCellValue()));
}
System.out.print(" " + value + " ");
break;
case XSSFCell.CELL_TYPE_BOOLEAN:
// System.out.println(i + "行" + j + " 列 is Boolean type");
value = cell.getBooleanCellValue();
System.out.print(" " + value + " ");
break;
case XSSFCell.CELL_TYPE_BLANK:
// System.out.println(i + "行" + j + " 列 is Blank type");
value = "";
System.out.print(" " + value + " ");
break;
default:
// System.out.println(i + "行" + j + " 列 is default type");
value = cell.toString();
System.out.print(" " + value + " ");
}
if (value == null || "".equals(value)) {
continue;
}
linked.add(value);
}
System.out.println("");
list.add(linked);
}
return list;
}
/**
* 读取Office 2007 excel
*/
private static List<List<Object>> read2007Excel(File file)
throws IOException {
List<List<Object>> list = new LinkedList<List<Object>>();
// String path = System.getProperty("user.dir") +
// System.getProperty("file.separator")+"dd.xlsx";
// System.out.println("路径:"+path);
// 构造 XSSFWorkbook 对象,strPath 传入文件路径
XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(file));
// 读取第一章表格内容
XSSFSheet sheet = xwb.getSheetAt(0);
Object value = null;
XSSFRow row = null;
XSSFCell cell = null;
System.out.println("读取office 2007 excel内容如下:");
for (int i = sheet.getFirstRowNum(); i <= sheet
.getPhysicalNumberOfRows(); i++) {
row = sheet.getRow(i);
if (row == null) {
continue;
}
List<Object> linked = new LinkedList<Object>();
for (int j = row.getFirstCellNum(); j <= row.getLastCellNum(); j++) {
cell = row.getCell(j);
if (cell == null) {
continue;
}
DecimalFormat df = new DecimalFormat("0");// 格式化 number String
// 字符
SimpleDateFormat sdf = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");// 格式化日期字符串
DecimalFormat nf = new DecimalFormat("0.00");// 格式化数字
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_STRING:
// System.out.println(i + "行" + j + " 列 is String type");
value = cell.getStringCellValue();
System.out.print(" " + value + " ");
break;
case XSSFCell.CELL_TYPE_NUMERIC:
// System.out.println(i + "行" + j
// + " 列 is Number type ; DateFormt:"
// + cell.getCellStyle().getDataFormatString());
if ("@".equals(cell.getCellStyle().getDataFormatString())) {
value = df.format(cell.getNumericCellValue());
} else if ("General".equals(cell.getCellStyle()
.getDataFormatString())) {
value = nf.format(cell.getNumericCellValue());
} else {
value = sdf.format(HSSFDateUtil.getJavaDate(cell
.getNumericCellValue()));
}
System.out.print(" " + value + " ");
break;
case XSSFCell.CELL_TYPE_BOOLEAN:
// System.out.println(i + "行" + j + " 列 is Boolean type");
value = cell.getBooleanCellValue();
System.out.print(" " + value + " ");
break;
case XSSFCell.CELL_TYPE_BLANK:
// System.out.println(i + "行" + j + " 列 is Blank type");
value = "";
// System.out.println(value);
break;
default:
// System.out.println(i + "行" + j + " 列 is default type");
value = cell.toString();
System.out.print(" " + value + " ");
}
if (value == null || "".equals(value)) {
continue;
}
linked.add(value);
}
System.out.println("");
list.add(linked);
}
return list;
}
private static ResultSet DBOperator (String... sql) {
java.sql.PreparedStatement preparedStatement = null;
java.sql.ResultSet resultSet = null;
Connection connection = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.250:1521/pdborcl", "pdsci", "123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
if (sql.length>1) {
//sql = "select * from ? where ?=?";
;
//preparedStatement= connection.prepareStatement("select * from pub_element where module_code='dc7d576b15b14da1a32bedad7f2874df'");
preparedStatement= connection.prepareStatement("select * from module_code where ?=?");
//设置sql语句中查询表的表名称(即要从哪个表查询)
//preparedStatement.setString(1, sql[0]);
//设置sql语句中的查询表的条件的字段名称
preparedStatement.setString(1, sql[1]);
//设置sql语句中的查询表的的条件的字段名称为指定id
preparedStatement.setString(2, sql[2]);
} else if(sql.length==1) {
//sql = "select * from PUB_ELEMENT where PUB_MODULE_ID=?";
preparedStatement= connection.prepareStatement("select * from ? ");
//设置sql语句中查询表的表名称(即要从哪个表查询)
preparedStatement.setString(1, sql[1]);
}else {
//sql = "select * from PUB_ELEMENT where PUB_MODULE_ID=?";
preparedStatement= connection.prepareStatement("select * from PUB_MODULE ");
}
//statement= connection.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return resultSet;
}
private static List<Map<String, Object>> DBOperatorModule () {
List<Map<String, Object>> list = new ArrayList<>();
java.sql.PreparedStatement preparedStatement = null;
java.sql.ResultSet resultSet = null;
Connection connection = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.250:1521/pdborcl", "pdsci", "123456");
connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.118:1521/orcl", "pdsci", "123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
preparedStatement= connection.prepareStatement("select * from pub_module where record_status ='Y' order by module_name, module_type_id");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
list=resultSetToList(resultSet);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
private static List<Map<String, Object>> DBOperatorElement (String... sql) {
List<Map<String, Object>> list = new ArrayList<>();
java.sql.PreparedStatement preparedStatement = null;
java.sql.ResultSet resultSet = null;
Connection connection = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.250:1521/pdborcl", "pdsci", "123456");
connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.118:1521/orcl", "pdsci", "123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//sql = "select * from ? where ?=?";
;
//preparedStatement= connection.prepareStatement("select * from pub_element where module_code='dc7d576b15b14da1a32bedad7f2874df'");
preparedStatement= connection.prepareStatement("select * from pub_element where module_code=? order by element_name");
//设置sql语句中查询表的表名称(即要从哪个表查询)
//preparedStatement.setString(1, sql[0]);
//设置sql语句中的查询表的条件的字段名称
preparedStatement.setString(1, sql[0]);
//设置sql语句中的查询表的的条件的字段名称为指定id
//preparedStatement.setString(2, sql[1]);
//statement= connection.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
list=resultSetToList(resultSet);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
private static List<Map<String, Object>> DBOperatorAttribute (String... sql) {
List<Map<String, Object>> list = new ArrayList<>();
java.sql.PreparedStatement preparedStatement = null;
java.sql.ResultSet resultSet = null;
Connection connection = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.250:1521/pdborcl", "pdsci", "123456");
connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.118:1521/orcl", "pdsci", "123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//sql = "select * from ? where ?=?";
;
//preparedStatement= connection.prepareStatement("select * from pub_element where module_code='dc7d576b15b14da1a32bedad7f2874df'");
preparedStatement= connection.prepareStatement("select * from pub_attribute where element_code=? order by attr_name");
//设置sql语句中查询表的表名称(即要从哪个表查询)
//preparedStatement.setString(1, sql[0]);
//设置sql语句中的查询表的条件的字段名称
preparedStatement.setString(1, sql[0]);
//设置sql语句中的查询表的的条件的字段名称为指定id
//preparedStatement.setString(2, sql[1]);
//statement= connection.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
list=resultSetToList(resultSet);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
private static List<Map<String, Object>> DBOperatorAttCode (String... sql) {
List<Map<String, Object>> list = new ArrayList<>();
java.sql.PreparedStatement preparedStatement = null;
java.sql.ResultSet resultSet = null;
Connection connection = null;
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.250:1521/pdborcl", "pdsci", "123456");
connection = DriverManager.getConnection("jdbc:oracle:thin:@192.168.1.118:1521/orcl", "pdsci", "123456");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
//sql = "select * from ? where ?=?";
//preparedStatement= connection.prepareStatement("select * from pub_element where module_code='dc7d576b15b14da1a32bedad7f2874df'");
preparedStatement= connection.prepareStatement("select * from pub_attr_code where attr_code=? order by code_value,code_name");
//设置sql语句中查询表的表名称(即要从哪个表查询)
//preparedStatement.setString(1, sql[0]);
//设置sql语句中的查询表的条件的字段名称
preparedStatement.setString(1, sql[0]);
//设置sql语句中的查询表的的条件的字段名称为指定id
//preparedStatement.setString(2, sql[1]);
//statement= connection.createStatement();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet = preparedStatement.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
list=resultSetToList(resultSet);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
resultSet.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
preparedStatement.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public static List<Map<String, Object>> resultSetToList(ResultSet rs) throws java.sql.SQLException {
if (rs == null)
return null;
ResultSetMetaData md = rs.getMetaData(); //得到结果集(rs)的结构信息,比如字段数、字段名等
int columnCount = md.getColumnCount(); //返回此 ResultSet 对象中的列数
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
//Map<String, Object> rowData = new HashMap<String, Object>();
while (rs.next()) {
Map<String, Object> rowData = new HashMap<String, Object>();
//rowData = new HashMap<String, Object>(columnCount);
for (int i = 1; i <= columnCount; i++) {
rowData.put(md.getColumnName(i), rs.getObject(i));
}
list.add(rowData);
//System.out.println("list:" + list.toString());
}
System.out.println("list:" + list.toString());
return list;
}
}
poi操作oracle数据库导出excel文件2的更多相关文章
- poi操作oracle数据库导出excel文件
HSSFWorkbook workBook = new HSSFWorkbook();// 创建 一个excel文档对象 HSSFSheet sheet = workBook.createSheet( ...
- PHP从数据库导出EXCEL文件
参考博客链接:http://www.cnblogs.com/huangcong/p/3687665.html 我的程序代码 原生导出Excel文件 <?phpheader('Content-ty ...
- docker容器中oracle数据库导出dmp文件
Oracle数据库安装在docker容器中 1首先查看容器 docker ps 2进入oracle容器 docker exec -it 7f0f3f2d4f88 /bin/bash 3导出整个库:这个 ...
- Oracle导入导出dmp文件
目 录 目 录...3 1 说明...3 2 导出dmp文件...3 3 导入dmp文件...5 3.1 环境准备...5 ...
- java POI导出Excel文件数据库的数据
在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.这里我简单实现导出Excel文件. POI jar ...
- c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出
c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...
- loadrunner 脚本开发-调用java jar文件远程操作Oracle数据库测试
调用java jar文件远程操作Oracle数据库测试 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 Loadrunner:11 备注:想学ora ...
- 通过命令窗口导入导出oracle数据库到dmp文件
通过命令窗口导入导出oracle数据库到dmp文件 很多时候我们需要备份Oracle的数据库,然后将数据导入其他数据库,因为有大文本字段会导致insert无法完全导出,只能导出为dmp文件,前提是wi ...
- 将Oracle数据库导出为txt格式
将Oracle数据库导出为txt格式: 方法1: 对于Windows系统,可以采用以下方式: 选择控制面板-->管理工具-->数据源(ODBC),添加一个新的数据源(系统或用户DSN均可) ...
随机推荐
- int main(int argc,char* argv[]) 简单理解
(1)第一个int代表整个main函数的返回值,若函数正常执行完毕,返回0,异常返回则是-1 (2)int argc代表命令行参数的总个数,既然是个数,那就是整型的,即:int; (3)char* a ...
- AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(一)
随着IOS7由之前UI的拟物化设计变为如今的扁平化设计,也许扁平化的时代要来了,当然我们是不是该吐槽一下,苹果什么时候也开始跟风了,自GOOGLE和微软界面扁平化过后,苹果也加入了这一队伍. Aval ...
- 关于6410的sd卡和nandflash启动的区别
今天在公司我们队长问我个问题,关于cortex的sd启动流程和nandflash的启动流程,一下想不起来了,中午闲来无事就整理了整理当初6410的两种启动方式的区别.在这里写一下.有不对的请指点,我对 ...
- 编写一个小程序,从标准输入读入一系列string对象,寻找连续重复出现的单词。程序应该找出满足一下条件的单词:该单词的后面紧接着再次出现自己本身。跟踪重复次数最多的单词及其重复次数,输出.
// test13.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- Entity Framework 基础
在忙碌中渡过了5,6,7 月份,现在些抽点时间对Entity Framework的使用做一些基础的回忆. Entity Framework 是什么? Entity Framework(EF)和我们所熟 ...
- js函数:setInterval()/clearInterval()——js网页计时器
一.setInterval()/clearInterval()技术学习 都是window对象的方法,可以直接使用. setInterval(function(){},1000);:每1000毫秒执行一 ...
- mysql 误删除ibdata1之后如何恢复
mysql 误删除ibdata1之后如何恢复 如果误删除了在线服务器中mysql innodb相关的数据文件ibdata1以及日志文件 ib_logfile*,应该怎样恢复呢? 这时候应该一身冷汗了吧 ...
- SSH Tunneling Explained
转载: http://chamibuddhika.wordpress.com/2012/03/21/ssh-tunnelling-explained/ March 21, 2012 by Buddhi ...
- hdu 1875 畅通工程再续(最小生成树,基础)
题目 让人郁闷的题目,wa到死了,必须要把判断10.0和1000.0的条件放到prim函数外面去.如代码所放.... 正确的(放在prim外): //2个小岛之间的距离不能小于10米,也不能大于100 ...
- Javascript表格中搜索
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...