通过java语言引入poi接口实现从从数据库中输出到Excel表中

预备知识:

一、Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。它的主要结构包括:HSSF,XSSF等等。我们一般都是用于导出Excel,其他的相对少一点。本次使用的主要是HSSF。

二、建立Excel常用对象的步骤  点击打开链接(poi用法)

  1. HSSFWorkbook wb = new HSSFWorkbook();//创建Excel工作簿对象   
  2. HSSFSheet sheet = wb.createSheet("new sheet");//创建Excel工作表对象     
  3. HSSFRow row = sheet.createRow((short)0); //创建Excel工作表的行   
  4. cellStyle = wb.createCellStyle();//创建单元格样式   
  5. row.createCell((short)0).setCellStyle(cellStyle); //创建Excel工作表指定行的单元格 
  6. row.createCell((short)0).setCellValue(1); //设置Excel工作表的值
  7.                                                                                                                                                                                                
三、JDBC基本知识

思路:

        1.将.sql文件导入到mysql中,并在数据库中实现自己所要查找的内容

        2.创建Web应用,并导入所需要的mysql-connector-java 包和poi包

        3.编写Java程序实现目的

具体步骤:

        一 、导入.sql文件

            1.新建一个 schema,随便起个名字,我起的是test。

            2.打开你所要导入的.sql文件

            3.在打开的文件当中,除去注释外的第一行,添加一行代码 use+schema

            4.执行代码,并查看是否导入成功

        二、 创建Web应用,在WebContent--WEB-INF--lib中导入两个包

        三、 1.编写JDBCUtils.java用来实现驱动数据库和释放数据库

                  2.编写主程序,我这里命名为Mysql2Excel.java,代码如下:

package cn.itcast.jdbc.example.utils;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class JDBCUtils {
	// 加载驱动,并建立数据库连接
	public static Connection getConnection() throws SQLException, ClassNotFoundException{
		Class.forName("com.mysql.jdbc.Driver");
		String url="jdbc:mysql://localhost:3306/test";//更改
		String username="root";
		String password="lzm199718";
		Connection conn=DriverManager.getConnection(url,username,password);
		return conn;	
	} 

//关闭数据库,释放资源
	public static void release(Statement stmt,Connection conn) {
		if(stmt!=null) {
			try {
				stmt.close();
				
			}catch(SQLException e) {
				e.printStackTrace();
			}
			stmt=null;

		}
		if(conn != null) {
			try{
				conn.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
			conn=null;
		}
		
	}
	public static void release(ResultSet rs,Statement stmt,Connection conn) {
		if(rs != null) {
			try{
				rs.close();
			}catch(SQLException e){
				e.printStackTrace();
			}
			rs=null;
		}
		release(stmt,conn);
	}
}

package cn.itcast.jdbc.example.utils;

import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Mysql2Excel {
	public static void main(String []args) throws SQLException, IOException, ClassNotFoundException{
		int i=1;
		Connection conn=null;
		Statement stmt=null;
		ResultSet rs=null;
		conn=JDBCUtils.getConnection();
		stmt=conn.createStatement();
		String sql="SELECT Subj,Obj FROM test.jena_g1t1_stmt where Prop like '%isRelated%'";
		rs=stmt.executeQuery(sql);
		
		
		
		//创建Excel文档
		HSSFWorkbook wb=new HSSFWorkbook();
		HSSFSheet sheet = wb.createSheet("测试页");
		//创建属于上面Sheet的Row,参数0可以是0~65535之间的任何一个
		HSSFRow row =sheet.createRow(0);
		//创建属于上面Row的Cell,参数0可以是0~255之间的任何一个
		String []names=new String[2];
		names[0]= "Subj";
		names[1]="Obj";
		row.createCell(0).setCellValue(names[0]);
		row.createCell(1).setCellValue(names[1]);
		while(rs.next()){
			row = sheet.createRow(i++);
			System.out.println(rs.getString("Subj"));
			System.out.println(rs.getString("Obj"));
//			row.createCell(0).setCellValue("Uv::http://nyxc#布局原则:");这行是当时调试代码时拿来测试的
//			row.createCell(1).setCellValue("Lv:0::社会经济条件:");这行是当时调试代码时拿来测试的
			row.createCell(0).setCellValue(rs.getString("Subj"));
			row.createCell(1).setCellValue(rs.getString("Obj"));
		}
			FileOutputStream out = new FileOutputStream("e:/helloword.xlsx");
			wb.write(out);
			out.close();
	}
}

总结:


1.网上参考别人代码时,要先下载下来运行一遍,很关键,要不然会很浪费时间


2.思路正确,学着通过代码去测试。  不要老是联想,代码写得差不多的时候出错,这时候不应该再去网上找资料了,很浪费时间,应该利用自己现有的知识去测试,去发现错误。

转载:https://blog.csdn.net/shirley_paddy/article/details/76576924


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值