问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用java将数据库中的表导出到excel

发布网友 发布时间:2022-04-24 01:05

我来回答

1个回答

热心网友 时间:2022-04-08 03:02

第一步:如何用POI操作Excel

@Test
public void createXls() throws Exception{
//声明一个工作薄
HSSFWorkbook wb = new HSSFWorkbook();
//声明表
HSSFSheet sheet = wb.createSheet("第一个表");
//声明行
HSSFRow row = sheet.createRow(7);
//声明列
HSSFCell cel = row.createCell(3);
//写入数据
cel.setCellValue("你也好");

FileOutputStream fileOut = new FileOutputStream("d:/a/b.xls");
wb.write(fileOut);
fileOut.close();
}

第二步:导出指定数据库的所有表
分析:
1:某个数数据库有多少表,表名是什么?―――DataBaseMetadate.getMetadate().getTables(null,null,null,new String[]{Table}); - excel的文件名称。
  2:对每一个表进行select * 操作。 - 每一个sheet的名称。
  3:分析表结构,rs.getMetadate(); ResultSetMedated
  4:多个列,列名是什么.  - 字段名就是sheet的第一行信息。
  5:获取每一行的数据 – 放到sheet第一行以后。

@Test
public void export() throws Exception{
//声明需要导出的数据库
String dbName = "focus";
//声明book
HSSFWorkbook book = new HSSFWorkbook();
//获取Connection,获取db的元数据
Connection con = DataSourceUtils.getConn();
//声明statemen
Statement st = con.createStatement();
//st.execute("use "+dbName);
DatabaseMetaData dmd = con.getMetaData();
//获取数据库有多少表
ResultSet rs = dmd.getTables(dbName,dbName,null,new String[]{"TABLE"});
//获取所有表名 - 就是一个sheet
List<String> tables = new ArrayList<String>();
while(rs.next()){
String tableName = rs.getString("TABLE_NAME");
tables.add(tableName);
}
for(String tableName:tables){
HSSFSheet sheet = book.createSheet(tableName);
//声明sql
String sql = "select * from "+dbName+"."+tableName;
//查询数据
rs = st.executeQuery(sql);
//根据查询的结果,分析结果集的元数据
ResultSetMetaData rsmd = rs.getMetaData();
//获取这个查询有多少行
int cols = rsmd.getColumnCount();
//获取所有列名
//创建第一行
HSSFRow row = sheet.createRow(0);
for(int i=0;i<cols;i++){
String colName = rsmd.getColumnName(i+1);
//创建一个新的列
HSSFCell cell = row.createCell(i);
//写入列名
cell.setCellValue(colName);
}
//遍历数据
int index = 1;
while(rs.next()){
row = sheet.createRow(index++);
//声明列
for(int i=0;i<cols;i++){
String val = rs.getString(i+1);
//声明列
HSSFCell cel = row.createCell(i);
//放数据
cel.setCellValue(val);
}
}
}
con.close();
book.write(new FileOutputStream("d:/a/"+dbName+".xls"));
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
成都汇众益智游戏学院怎么样 为什么苹果手机屏幕老是自动滚上去? roughness test什么意思 国家标准打印纸为每包500张,小雨同学家里新买—包打印 纸,她想练习... 谁知道卡布奇诺含义 卡布奇诺咖啡历史 电脑针式打印纸有哪些规格? 外籍人才招聘 接种甲肝疫苗会出现什么不良反应 中华人民共和国境内的任何人均应接种哪些疫苗 男女孩名字个一个 带含义的 谢谢各位啦 郭美萱这个名字怎么样能打多少分 请教:java从数据库获取数据导出docx,有多个表格,请问怎么导出? 英文名字女生 美萱 帮忙起个好听的女孩子名字 java导出复杂excel表格 美萱和汐蕊那个名字好? java批量数据导出多个excel,为什么老是只生成一个excel文件 张美萱名字打多少分 美萱是什么意思 张美萱名字测试打分 女孩名字美萱好不好 名字“梁美萱”的含义是什么? 喝酒后恶心想吐吃什么水果好 酒后呕吐吃什么水果好 怀孕恶心吃什么水果能缓解 吃什么水果可以止吐 怀孕呕吐吃什么水果可以缓解 吐了之后可以吃什么水果 孕妇呕吐的时候吃什么水果比较好 全国有多少人叫美萱 java数据导出excel或其他文件格式,数据量大怎么优化 java导出excel,excel打不开,报文件格式无效,怎么解决! 如何鉴别自己在网上买到的手机不是退货机? 苹果手机信息感叹号怎么去掉 我国全面实行贷款五级分类制度是从哪一年开始 五级的分类是什么? mac怎么板绘 mac可以板绘吗 请问mac系统如何使用触控板框选? MacBook 的触摸板是什么材质 macbook的触摸板怎么确定的 删掉了mac系统怎么指示板 MAC安装wacom数位板 上八仙、中八仙、下八仙分别是谁? 上八仙,中八仙,下八仙具体指哪些人 中国古典神话传说中的上,中,下八仙分别是谁 道教中的上,中和下八仙分别都是谁 苹果6s plus闪光灯来电怎么弄 iphone 6s plus来电闪光灯怎么设置?