mysql:day6--将数据导出到xls表格
来源:互联网 发布:国家护理质量数据平台 编辑:程序博客网 时间:2024/04/30 16:05
知识点1:数据库元数据操作
元数据:描述数据的诗句
获取数据库的元信息
站在数据库的角度操作
通过
DatabaseMetaData dm = con.getMetaData();
动态获取数据库名:
相当于执行: show databases;
ResultSet rs = dm.getCatalogs();//相当于执行: show databases;
知道了数据名,动态获取表名
ResultSet rs2 = dm.getTables("aa", "aa", null, new String[]{"TABLE"}); while(rs2.next()){ System.out.println(rs2.getString("TABLE_NAME")); }
在知道数据库名与表名的情况下,可以通过跨库查询,把表头和表内容都查询出来
输出表头信息
ResultSetMetaData rsmt = rs.getMetaData();int columns = rsmt.getColumnCount();for(int i=0;i<columns;i++){ System.out.print(rsmt.getColumnName(i+1)+"\t");}
输出表数据:
while(rs.next()){ System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getInt(3)+"\t"+rs.getString(4)+"\t"+rs.getInt(5)); }
知识点二:通过Apache公司的poi的jar包可以将数据导出,这里我们着重将导出到xls表格。
思想是与dom模型一样的
2007版本之前用xls—HSSF
2007版之后用xlsx—XSSF
本质是new一个HSSFWorkbook对象(工作薄)写到文件流FileOutputStream中去。
建立表:
HSSFSheet sheet = book.createSheet();
建立行
HSSFRow row1 =sheet.createRow(1);
插入列:
row1.createCell(3).setCellValue("这是我测试的字符");
这里要注意的是,因为xls本质是帮我们建好了表格,所以我们可以直接指定行号和列号使用。 在xls显示的时候行列号是从1开始的,但是在我们代码中行列号是从0开始的
小细节:
我们写代码的时候,要尽量避免结果集套接:在一个结果集操作的内部进行其他结果集操作,一个结果集的回退或者提交会波及另一个。
本文知识点练习代码如下:
MetaDataDemo
注意:要导入数据库连接jar包才能成功连接数据库
package cn.hncu.meta;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import org.junit.Test;import cn.hncu.pool.day2.v2.ConnsUtils3;/** * 元数据操作 元数据:描述数据的数据 * * @author <a href="mailto:wyj950411@foxmail.com">军街</a> * * @version 1.0 2016-8-10 */public class MetaDataDemo { /** * 站在数据库的角度操作 * @throws Exception */ @Test public void databaseMetaDataDemo() throws Exception{ Connection con = ConnsUtils3.getCon(); DatabaseMetaData dm = con.getMetaData(); //获取数据库的元信息 System.out.println(dm.getDriverName()); System.out.println(dm.getURL()); System.out.println(dm.getDriverVersion()); System.out.println(dm.getMaxStatements()); System.out.println(dm.getJDBCMajorVersion()); System.out.println("========================="); //动态获取数据库名 ResultSet rs = dm.getCatalogs();//相当于执行: show databases; while(rs.next()){ System.out.println(rs.getString(1)); } System.out.println("------------下面输出表名-------------"); con.createStatement().execute("use aa");//使用aa数据库 //知道了数据名,动态获取表名 ResultSet rs2 = dm.getTables("aa", "aa", null, new String[]{"TABLE"}); while(rs2.next()){ System.out.println(rs2.getString("TABLE_NAME")); } } //在知道数据库名与表名的情况下,可以通过跨库查询,把表头和表内容都查询出来 @Test public void ResultSetMetaDataDemo() throws Exception{ Connection con = ConnsUtils3.getCon(); Statement st = con.createStatement(); String sql ="select * from test.sstud"; ResultSet rs = st.executeQuery(sql); //输出表头信息 ResultSetMetaData rsmt = rs.getMetaData(); int columns = rsmt.getColumnCount(); for(int i=0;i<columns;i++){ System.out.print(rsmt.getColumnName(i+1)+"\t"); } System.out.println(); System.out.println("-------------------------------------------------"); while(rs.next()){ System.out.println(rs.getString(1)+"\t"+rs.getString(2)+"\t"+rs.getInt(3)+"\t"+rs.getString(4)+"\t"+rs.getInt(5)); } }}
XlsDataDemo
注意:练习这个的时候一定要导poi的jar包才能使用
package cn.hncu.meta;import java.io.FileOutputStream;import java.sql.Connection;import java.sql.DatabaseMetaData;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import java.util.ArrayList;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.junit.Test;import cn.hncu.pool.day2.v2.ConnsUtils3;public class XlsDataDemo { @Test public void xlsDemo() throws Exception{ HSSFWorkbook book = new HSSFWorkbook(); FileOutputStream fout = new FileOutputStream("a.xls"); HSSFSheet sheet = book.createSheet(); HSSFRow row1 =sheet.createRow(1); row1.createCell(3).setCellValue("这是我测试的字符"); book.write(fout); } /** * 做一个将数据库的数据导出到一个xls表格当中 * @throws Exception */ @Test public void import2XLS () throws Exception{ String databaseName = "aa";//要导出的数据库 String fileName = "b.xls";//要导出的xls的文件名 doImport2XLS(databaseName,fileName); } private void doImport2XLS(String databaseName,String fileName) throws Exception{ Connection con = ConnsUtils3.getCon(); Statement st = con.createStatement(); DatabaseMetaData dm = con.getMetaData(); ResultSet rs = dm.getTables(databaseName, databaseName, null, new String[]{"TABLE"}); List<String> list = new ArrayList<String>(); while(rs.next()){ list.add(rs.getString("TABLE_NAME")); //将此数据库中的每一个表都加到list中去 } HSSFWorkbook book = new HSSFWorkbook(); FileOutputStream fout = new FileOutputStream(fileName); for(String tableName: list){ //对于每一个表 我们都去把它导出到xls中 String sql = "select * from "+tableName; HSSFSheet sheet = book.createSheet(tableName); rs = st.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData(); int columns = rsmd.getColumnCount(); int index = 0; while(rs.next()){ HSSFRow row = sheet.createRow(index++); for(int i=0;i<columns;i++){ row.createCell(i).setCellValue(rs.getString(i+1)); } } } book.write(fout); }}
0 0
- mysql:day6--将数据导出到xls表格
- 将DataTable数据导出到Excel文件中(xls)
- mysql 将数据导出成excel文件(.xls格式)
- 将JTable导出成xls表格
- 复杂的数据窗口导出到XLS
- 将表格中的数据导出到EXCEL表中的
- 将数据库的数据导出到excel表格中。
- Java将数据导出到excel表格中
- .net 将数据库中的数据导出到Excel表格中
- NetBeans 将表格 的数据导出到 excel
- 将Excel表格中的数据导出到xml文件中
- 如何将navicat for mysql 中查询出来的内容导出到xls文件中
- 利用PHPExcel将数据导出到xls格式的excel文件
- Excel控件Spire.XLS教程:将数据导出到WPF的Excel中
- MySQL导出表字段和数据xls
- php 将mysql数据导出成表格形式
- mysql命令行下将数据导出成excel文件(.xls格式)
- 将xls表格数据转为点数据(1)
- Zookeeper入门指南中文版
- 滑动改变标题栏的颜色
- keil 中 Use MicroLIB
- VS2013学习笔记之MFC框架CFile类文件操作
- lua(5)-table(表)
- mysql:day6--将数据导出到xls表格
- 串口服务器的原理及使用方法
- 搭建Maven自动部署Java Web项目到Tomcat服务器
- fatal error LNK1169: one or more multiply defined symbols found终极解决
- iOS webView的高级用法之JS交互,js与oc的相互调用(JavaScriptCore)
- 关于判断当前Activity是否在顶层栈
- Linux线程-互斥锁pthread_mutex_t
- UVa 619 - Numerically Speaking
- lnmp无法删除目录,目录包含.user.ini