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

    xiaoxiao2026-04-21  6

    package com.test; 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;           }               }
    转载请注明原文地址: https://ju.6miu.com/read-1309091.html
    最新回复(0)