poi+jdbc实现从数据库中导出表的数据字典结构(单个sheet和多个sheet供你选择),并且生成excel文档,作者:vipyhd
来源:互联网 发布:linux打包文件 编辑:程序博客网 时间:2024/05/21 22:44
简介:本人之所以要开发这个小小的工具是为了我们在不用为了写文档的时候去手动去弄表的数据字典了
第一步:java工程所需要的jar如下:
第二步:简单编写一个jdbc连接数据库的类
import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;/** * @author Administrator * 没有任何设计模式的简易版的oracle数据库连接类 * * */public class ConnectionOracle {//数据库连接 需要的参数 String sd = "oracle.jdbc.driver.OracleDriver";String sc = "jdbc:oracle:thin:@10.72.123.127:1521:cis1";String userName = "host";String password = "host";Connection con = null;Statement stmt = null;ResultSet rs = null;public ConnectionOracle(){try {Class.forName(sd);} catch (ClassNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();System.err.println(e1.getMessage()+"数据库连接问题");}}public ResultSet executeQuery(String sql) throws SQLException{con = DriverManager.getConnection(sc, userName, password);Statement stmt = con.createStatement();rs = stmt.executeQuery(sql);return rs;}public void executeUpdate(String sql) throws SQLException{con = DriverManager.getConnection(sc, userName, password);Statement stmt = con.createStatement();stmt.executeUpdate(sql);}public void close() throws SQLException{if (rs != null)rs.close();if (stmt != null)stmt.close();if (con != null)con.close();}/** * @param args * 测试 oracle数据连接是否联通 */public static void main(String[] args) {}}第三步:根据poi的api接口编写生成excel逻辑
所有表数据字典存储到一个sheet页里面
import java.io.File;import java.io.FileOutputStream;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;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.Region;/** * @author vipyhd * */public class DataToExcel {public static void main(String[] args) {String result = "";List listAll = new ArrayList();System.out.println("正在读取数据库中所有的表");try {//获取的是数据库中的表名字,进而封装到list容器里面List tableList = getTableList();System.out.println("数据库表读取完成");for (int i = 0; i < tableList.size(); i++) {String[] strings = (String[]) tableList.get(i);String tableName = strings[0].toString();List list = new ArrayList();list.add(tableName);list.add(getStructOfTable(tableName));System.out.println("正在生成表" + tableName + "的结构");listAll.add(list);}result = TableStructInfoToExcel(listAll, "D:");System.out.println("数据库中表结构导入已完成");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();File file = new File(e.getMessage().toString());if (file.exists()) {file.delete();}}System.out.println(result);// showView(list);}/** * * 获取数据库中所有的表 * * @return */public static List getTableList() {//String sql = "select object_name From user_objects Where object_type='TABLE'"; //DB2//String sql = "SELECT table_name FROM USER_TABLES";String sql = "SELECT T.TABLE_NAME\n" +" FROM USER_TABLES T\n" + " WHERE T.TABLE_NAME NOT IN (SELECT T.TABLE_NAME\n" + " FROM USER_TABLES T\n" + " WHERE T.TABLE_NAME LIKE 'TEMP%'\n" + " OR T.TABLE_NAME LIKE '%BAK%'\n" + " OR T.TABLE_NAME LIKE 'D%'\n" + " OR T.TABLE_NAME LIKE 'CREDIT_%'\n" + " OR T.TABLE_NAME LIKE 'BJ%'\n" + " OR T.TABLE_NAME LIKE 'ATM%'\n" + " OR T.TABLE_NAME LIKE 'B%'\n" + " OR T.TABLE_NAME LIKE 'TMP%'\n" + " OR T.TABLE_NAME LIKE 'TEST%'\n" + " OR T.TABLE_NAME LIKE 'A%'\n" + " OR T.TABLE_NAME LIKE '%TEMP'\n" + " OR T.TABLE_NAME LIKE '%BACK'\n" + " OR T.TABLE_NAME LIKE '%20070202'\n" + " OR T.TABLE_NAME LIKE '%1231'\n" + " OR T.TABLE_NAME LIKE '%20081017'\n" + " OR T.TABLE_NAME LIKE '%TMP'\n" + " OR T.TABLE_NAME LIKE '%1%'\n" + " OR T.TABLE_NAME LIKE '%MD'\n" + " OR T.TABLE_NAME LIKE 'E%'\n" + " OR T.TABLE_NAME LIKE 'F%'\n" + " OR T.TABLE_NAME LIKE 'G%'\n" + " OR T.TABLE_NAME LIKE 'H%'\n" + " OR T.TABLE_NAME LIKE 'Q%'\n" + " OR T.TABLE_NAME LIKE 'SDD%'\n" + " OR T.TABLE_NAME LIKE 'V%'\n" + " OR T.TABLE_NAME LIKE 'W%'\n" + " OR T.TABLE_NAME LIKE 'Z%'\n" + " OR T.TABLE_NAME LIKE 'SDB%'\n" + " OR T.TABLE_NAME LIKE 'MD%'\n" + " OR T.TABLE_NAME LIKE 'STAGE%'\n" + " OR T.TABLE_NAME LIKE 'P%'\n" + " OR T.TABLE_NAME LIKE 'J%'\n" + " OR T.TABLE_NAME LIKE 'TRANS%'\n" + " OR T.TABLE_NAME LIKE 'XSF%'\n" + " OR T.TABLE_NAME LIKE 'MIGR%'\n" + " OR T.TABLE_NAME LIKE 'MIGRATION%'\n" + " OR T.TABLE_NAME LIKE 'S%'\n" + " OR T.TABLE_NAME LIKE 'O%'\n" + " OR T.TABLE_NAME LIKE 'CONFIG%'\n" + " OR T.TABLE_NAME LIKE 'MANUFACTURER%'\n" + " OR T.TABLE_NAME LIKE 'OPINION%'\n" + " OR T.TABLE_NAME LIKE 'TOOLS%'\n" + " OR T.TABLE_NAME LIKE 'd%'\n" + " OR T.TABLE_NAME LIKE 'TB%'\n" + " OR T.TABLE_NAME LIKE 'CUSTOMER%'\n" + " OR T.TABLE_NAME LIKE 'R%'\n" + " OR T.TABLE_NAME LIKE 'TIME%'\n" + "\n" + " )";return getResult(sql, 1);}public static List getStructOfTable(String tableName) {//DB2//String sql = "SELECT u.column_name,u.data_type,u.data_length,u.data_precision,u.data_Scale,u.nullable,u.data_default,c.comments FROM user_tab_columns u,user_col_comments c"//+////" WHERE u.table_name='"//+ tableName//+ "' and u.table_name=c.table_name and c.column_name=u.column_name";String sql = "select t.COLUMN_ID 序号 , t.TABLE_NAME 表名 ,t.COLUMN_NAME 字段名 ,t.DATA_TYPE 类型 ,t. DATA_LENGTH 长度 , t.DATA_PRECISION,\n" +" t.DATA_SCALE,t.NULLABLE 是否为空\n" + "from user_tab_columns t\n" + "where table_name = '"+tableName+"'\n" + "order by t.COLUMN_ID asc";return getResult(sql, 8);}/** * @param sql * @param length * @return 返回的是一个list集合 */public static List getResult(String sql, int length) {List list = new ArrayList();ResultSet rs = null;ConnectionOracle c = new ConnectionOracle();try {rs = c.executeQuery(sql);while (rs.next()) {String[] string = new String[length];for (int i = 1; i < length + 1; i++) {string[i - 1] = rs.getString(i);}list.add(string);}c.close();} catch (SQLException e) {e.printStackTrace();}return list;}/** * * 输出对应list中的数据 * * @param list */public static void showView(List list) {for (Iterator iterator = list.iterator(); iterator.hasNext();) {String[] name = (String[]) iterator.next();for (int i = 0; i < name.length; i++) {System.out.println(name[i]);}}}public static String TableStructInfoToExcel(List list, String path)throws Exception {String FileName = "";FileOutputStream fos = null;HSSFRow row = null;HSSFCell cell = null;HSSFCellStyle style = null;HSSFFont font = null;int currentRowNum = 0;String[] tableFiled = { "序号", "表名", "字段名","类型", "长度", "DATA_PRECISION", "DATA_SCALE","是否为空" };try {FileName = path + "\\" + "数据库中表结构.xls";//生成的路径,现在是一个xls举的例子fos = new FileOutputStream(FileName);// 创建新的sheet并设置名称HSSFWorkbook wb = new HSSFWorkbook();//poi api中的workbook 对象相当于 excel中的工作簿对象//创建一个sheet 页, 现在是在一个sheet页里面生成的所有的表的结构(数据字典)。HSSFSheet s = wb.createSheet();wb.setSheetName(0, "数据库表结构");//这个地方改写style = wb.createCellStyle();font = wb.createFont();for (int z = 0; z < list.size(); z++) {List listBean = (List) list.get(z);// 新建一行,再在行上面新建一列row = s.createRow(currentRowNum);int pad = currentRowNum;currentRowNum++;// 设置样式font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗style.setFont(font);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平居中style.setFillForegroundColor((short) 13);// 设置背景色style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框style.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框style.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框for (int i = 0; i < tableFiled.length; i++) {cell = row.createCell((short) i);cell.setCellValue("");cell.setCellStyle(style);}row.getCell((short) 0).setCellValue("数据库表" + listBean.get(0).toString() + "的结构");// 创建第二行row = s.createRow(currentRowNum);currentRowNum++;for (int i = 0; i < tableFiled.length; i++) {// 创建多列并设置每一列的值和宽度cell = row.createCell((short) i);cell.setCellValue(new HSSFRichTextString(tableFiled[i]));s.setColumnWidth((short) i, (short) 5000);}List list2 = (List) listBean.get(1);for (int i = 0; i < list2.size(); i++) {row = s.createRow(currentRowNum);currentRowNum++;String[] strings = (String[]) list2.get(i);for (int j = 0; j < strings.length; j++) {cell = row.createCell((short) j);cell.setCellValue(new HSSFRichTextString(strings[j]));}}// 合并单元格s.addMergedRegion(new Region(pad, (short) 0, pad,(short) (tableFiled.length - 1)));currentRowNum++;}wb.write(fos);fos.close();} catch (Exception e) {e.printStackTrace();fos.close();throw new Exception(FileName);}return FileName;}}
一张表占用一个sheet页方式:
import java.io.File;import java.io.FileOutputStream;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;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.Region;/** * @author vipyhd * */public class DataToExcel {public static void main(String[] args) {String result = "";List listAll = new ArrayList();System.out.println("正在读取数据库中所有的表");try {// 获取的是数据库中的表名字,进而封装到list容器里面List tableList = getTableList();System.out.println("数据库表读取完成");for (int i = 0; i < tableList.size(); i++) {String[] strings = (String[]) tableList.get(i);String tableName = strings[0].toString();List list = new ArrayList();list.add(tableName);list.add(getStructOfTable(tableName));System.out.println("正在生成表" + tableName + "的结构");listAll.add(list);}result = TableStructInfoToExcel(listAll, "D:");System.out.println("数据库中表结构导入已完成");} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();File file = new File(e.getMessage().toString());if (file.exists()) {file.delete();}}System.out.println(result);// showView(list);}/** * * 获取数据库中所有的表 * * @return */public static List getTableList() {// String sql =// "select object_name From user_objects Where object_type='TABLE'";// DB2// String sql = "SELECT table_name FROM USER_TABLES";String sql = "SELECT T.TABLE_NAME\n"+ " FROM USER_TABLES T\n"+ " WHERE T.TABLE_NAME NOT IN (SELECT T.TABLE_NAME\n"+ " FROM USER_TABLES T\n"+ " WHERE T.TABLE_NAME LIKE 'TEMP%'\n"+ " OR T.TABLE_NAME LIKE '%BAK%'\n"+ " OR T.TABLE_NAME LIKE 'D%'\n"+ " OR T.TABLE_NAME LIKE 'CREDIT_%'\n"+ " OR T.TABLE_NAME LIKE 'BJ%'\n"+ " OR T.TABLE_NAME LIKE 'ATM%'\n"+ " OR T.TABLE_NAME LIKE 'B%'\n"+ " OR T.TABLE_NAME LIKE 'TMP%'\n"+ " OR T.TABLE_NAME LIKE 'TEST%'\n"+ " OR T.TABLE_NAME LIKE 'A%'\n"+ " OR T.TABLE_NAME LIKE '%TEMP'\n"+ " OR T.TABLE_NAME LIKE '%BACK'\n"+ " OR T.TABLE_NAME LIKE '%20070202'\n"+ " OR T.TABLE_NAME LIKE '%1231'\n"+ " OR T.TABLE_NAME LIKE '%20081017'\n"+ " OR T.TABLE_NAME LIKE '%TMP'\n"+ " OR T.TABLE_NAME LIKE '%1%'\n"+ " OR T.TABLE_NAME LIKE '%MD'\n"+ " OR T.TABLE_NAME LIKE 'E%'\n"+ " OR T.TABLE_NAME LIKE 'F%'\n"+ " OR T.TABLE_NAME LIKE 'G%'\n"+ " OR T.TABLE_NAME LIKE 'H%'\n"+ " OR T.TABLE_NAME LIKE 'Q%'\n"+ " OR T.TABLE_NAME LIKE 'SDD%'\n"+ " OR T.TABLE_NAME LIKE 'V%'\n"+ " OR T.TABLE_NAME LIKE 'W%'\n"+ " OR T.TABLE_NAME LIKE 'Z%'\n"+ " OR T.TABLE_NAME LIKE 'SDB%'\n"+ " OR T.TABLE_NAME LIKE 'MD%'\n"+ " OR T.TABLE_NAME LIKE 'STAGE%'\n"+ " OR T.TABLE_NAME LIKE 'P%'\n"+ " OR T.TABLE_NAME LIKE 'J%'\n"+ " OR T.TABLE_NAME LIKE 'TRANS%'\n"+ " OR T.TABLE_NAME LIKE 'XSF%'\n"+ " OR T.TABLE_NAME LIKE 'MIGR%'\n"+ " OR T.TABLE_NAME LIKE 'MIGRATION%'\n"+ " OR T.TABLE_NAME LIKE 'S%'\n"+ " OR T.TABLE_NAME LIKE 'O%'\n"+ " OR T.TABLE_NAME LIKE 'CONFIG%'\n"+ " OR T.TABLE_NAME LIKE 'MANUFACTURER%'\n"+ " OR T.TABLE_NAME LIKE 'OPINION%'\n"+ " OR T.TABLE_NAME LIKE 'TOOLS%'\n"+ " OR T.TABLE_NAME LIKE 'd%'\n"+ " OR T.TABLE_NAME LIKE 'TB%'\n"+ " OR T.TABLE_NAME LIKE 'CUSTOMER%'\n"+ " OR T.TABLE_NAME LIKE 'R%'\n"+ " OR T.TABLE_NAME LIKE 'TIME%'\n"+ "\n" + " )";return getResult(sql, 1);}public static List getStructOfTable(String tableName) {// DB2// String sql =// "SELECT u.column_name,u.data_type,u.data_length,u.data_precision,u.data_Scale,u.nullable,u.data_default,c.comments FROM user_tab_columns u,user_col_comments c"// +//// " WHERE u.table_name='"// + tableName// + "' and u.table_name=c.table_name and c.column_name=u.column_name";String sql = "select t.COLUMN_ID 序号 , t.TABLE_NAME 表名 ,t.COLUMN_NAME 字段名 ,t.DATA_TYPE 类型 ,t. DATA_LENGTH 长度 , t.DATA_PRECISION,\n"+ " t.DATA_SCALE,t.NULLABLE 是否为空\n"+ "from user_tab_columns t\n"+ "where table_name = '"+ tableName + "'\n" + "order by t.COLUMN_ID asc";return getResult(sql, 8);}/** * @param sql * @param length * @return 返回的是一个list集合 */public static List getResult(String sql, int length) {List list = new ArrayList();ResultSet rs = null;ConnectionOracle c = new ConnectionOracle();try {rs = c.executeQuery(sql);while (rs.next()) {String[] string = new String[length];for (int i = 1; i < length + 1; i++) {string[i - 1] = rs.getString(i);}list.add(string);}c.close();} catch (SQLException e) {e.printStackTrace();}return list;}/** * * 输出对应list中的数据 * * @param list */public static void showView(List list) {for (Iterator iterator = list.iterator(); iterator.hasNext();) {String[] name = (String[]) iterator.next();for (int i = 0; i < name.length; i++) {System.out.println(name[i]);}}}public static String TableStructInfoToExcel(List list, String path)throws Exception {String FileName = "";FileOutputStream fos = null;HSSFRow row = null;HSSFCell cell = null;HSSFCellStyle style = null;HSSFFont font = null;//int currentRowNum = 0;String[] tableFiled = { "序号", "表名", "字段名", "类型", "长度","DATA_PRECISION", "DATA_SCALE", "是否为空" };try {FileName = path + "\\" + "数据库中表结构.xls";// 生成的路径,现在是一个xls举的例子fos = new FileOutputStream(FileName);// 创建新的sheet并设置名称HSSFWorkbook wb = new HSSFWorkbook();// poi api中的workbook 对象相当于// excel中的工作簿对象// 创建一个sheet 页, 现在是在一个sheet页里面生成的所有的表的结构(数据字典)。//[[CIS_FX_BH, [[Ljava.lang.String;@26d58939]],style = wb.createCellStyle();font = wb.createFont();for (int z = 0; z < list.size(); z++) {int currentRowNum = 0;HSSFSheet s = wb.createSheet();List listBean = (List) list.get(z);System.out.println(listBean + "===========");// 新建一行,再在行上面新建一列row = s.createRow(currentRowNum);int pad = currentRowNum;currentRowNum++;// 设置样式font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); // 字体加粗style.setFont(font);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);// 水平居中style.setFillForegroundColor((short) 13);// 设置背景色style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框style.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框style.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框for (int i = 0; i < tableFiled.length; i++) {cell = row.createCell((short) i);cell.setCellValue("");cell.setCellStyle(style);}row.getCell((short) 0).setCellValue("数据库表" + listBean.get(0).toString() + "的结构");wb.setSheetName(z, listBean.get(0).toString());// 这个地方改写// 创建第二行row = s.createRow(currentRowNum);currentRowNum++;for (int i = 0; i < tableFiled.length; i++) {// 创建多列并设置每一列的值和宽度cell = row.createCell((short) i);cell.setCellValue(new HSSFRichTextString(tableFiled[i]));s.setColumnWidth((short) i, (short) 5000);}List list2 = (List) listBean.get(1);for (int i = 0; i < list2.size(); i++) {row = s.createRow(currentRowNum);currentRowNum++;String[] strings = (String[]) list2.get(i);for (int j = 0; j < strings.length; j++) {cell = row.createCell((short) j);cell.setCellValue(new HSSFRichTextString(strings[j]));}}// 合并单元格s.addMergedRegion(new Region(pad, (short) 0, pad,(short) (tableFiled.length - 1)));currentRowNum++;}wb.write(fos);fos.close();} catch (Exception e) {e.printStackTrace();fos.close();throw new Exception(FileName);}return FileName;}}
本人使用的是oracle数据库 ,本人用到的sql脚本如下:
--获取所有表名SELECT table_name FROM USER_TABLES ;--根据表名来获取表结构信息select t.COLUMN_ID 序号 , t.TABLE_NAME 表名 ,t.COLUMN_NAME 字段名 ,t.DATA_TYPE 类型 ,t. DATA_LENGTH 长度 , t.DATA_PRECISION , t.DATA_SCALE,t.NULLABLE 是否为空from user_tab_columns twhere table_name = 'D_BZJ_CDMX'order by t.COLUMN_ID asc; SELECT T.TABLE_NAME FROM USER_TABLES T WHERE T.TABLE_NAME NOT IN (SELECT T.TABLE_NAME FROM USER_TABLES T WHERE T.TABLE_NAME LIKE 'TEMP%' OR T.TABLE_NAME LIKE '%BAK%' OR T.TABLE_NAME LIKE 'D%' OR T.TABLE_NAME LIKE 'CREDIT_%' OR T.TABLE_NAME LIKE 'BJ%' OR T.TABLE_NAME LIKE 'ATM%' OR T.TABLE_NAME LIKE 'B%' OR T.TABLE_NAME LIKE 'TMP%' OR T.TABLE_NAME LIKE 'TEST%' OR T.TABLE_NAME LIKE 'A%' OR T.TABLE_NAME LIKE '%TEMP' OR T.TABLE_NAME LIKE '%BACK' OR T.TABLE_NAME LIKE '%20070202' OR T.TABLE_NAME LIKE '%1231' OR T.TABLE_NAME LIKE '%20081017' OR T.TABLE_NAME LIKE '%TMP' OR T.TABLE_NAME LIKE '%1%' OR T.TABLE_NAME LIKE '%MD' OR T.TABLE_NAME LIKE 'E%' OR T.TABLE_NAME LIKE 'F%' OR T.TABLE_NAME LIKE 'G%' OR T.TABLE_NAME LIKE 'H%' OR T.TABLE_NAME LIKE 'Q%' OR T.TABLE_NAME LIKE 'SDD%' OR T.TABLE_NAME LIKE 'V%' OR T.TABLE_NAME LIKE 'W%' OR T.TABLE_NAME LIKE 'Z%' OR T.TABLE_NAME LIKE 'SDB%' OR T.TABLE_NAME LIKE 'MD%' OR T.TABLE_NAME LIKE 'STAGE%' OR T.TABLE_NAME LIKE 'P%' OR T.TABLE_NAME LIKE 'J%' OR T.TABLE_NAME LIKE 'TRANS%' OR T.TABLE_NAME LIKE 'XSF%' OR T.TABLE_NAME LIKE 'MIGR%' OR T.TABLE_NAME LIKE 'MIGRATION%' OR T.TABLE_NAME LIKE 'S%' OR T.TABLE_NAME LIKE 'O%' OR T.TABLE_NAME LIKE 'CONFIG%' OR T.TABLE_NAME LIKE 'MANUFACTURER%' OR T.TABLE_NAME LIKE 'OPINION%' OR T.TABLE_NAME LIKE 'TOOLS%' OR T.TABLE_NAME LIKE 'd%' OR T.TABLE_NAME LIKE 'TB%' OR T.TABLE_NAME LIKE 'CUSTOMER%' OR T.TABLE_NAME LIKE 'R%' OR T.TABLE_NAME LIKE 'TIME%' )
以后的目标改进是将其改写成一个exe文件,带有参数输入并可以选择多个数据库的工具。
sql是可以替换的。呵呵呵呵
0 0
- poi+jdbc实现从数据库中导出表的数据字典结构(单个sheet和多个sheet供你选择),并且生成excel文档,作者:vipyhd
- POI导出数据到Excel的多个Sheet
- java poi 通过excel模板导出并且生成多个sheet
- java poi 通过excel模板导出并且生成多个sheet
- java poi 通过excel模板导出并且生成多个sheet
- java poi 通过excel模板导出并且生成多个sheet
- 利用poi 生成多个excel sheet
- java poi 生成多个sheet(表格导出)
- 导出数据到excel多个sheet
- phpexcel 读取含多个sheet的excel,将从数据库中检索出的数据分别写入该excel不同的sheet中 并导出该excel
- 导出DataSet数据到excel的多个sheet
- ASP.NET将数据导出到一个EXCEL文件的多个SHEET中
- 关于java poi 大数据导出 创建多个sheet
- asp.net导出Excel生成多个Sheet
- POI解析excel多个sheet
- 面向对象纯JS 导出Excel,拥有它,你所需要做的就是setup数据格式(目前仅提供单个Sheet的导出,持续更新中...)。
- java实现从数据库读取数据写入excel,写入多个sheet,6万数据耗时100秒附近
- poi生成excel表格(xls或者xlsx格式),多个工作sheet
- 构建省市区(OC练习题)
- 小谈C++IO
- 提高SQL执行效率的16种方法
- Node.js简介
- Python基础编程(八)异常
- poi+jdbc实现从数据库中导出表的数据字典结构(单个sheet和多个sheet供你选择),并且生成excel文档,作者:vipyhd
- Linux vmstat命令实战详解
- php引用与销毁变量
- 闭包
- mysql实现sequence
- 哈尔滨突降冰雹如黄豆大小 降雨天气将持续到21日
- Android HAL实现的三种方式(1) - 基于JNI的简单HAL设计
- jmeter入门使用
- 用java实现二叉树非递归的前序,中序,后序遍历算法