java导出数据库里的数据至Excel进行数据备份

调用部分:

package com.otdrmsys.action;

import com.otdrmsys.util.ResultSetToExcel;

public class ExcelExport {

	public static void main(String[] args) {
//		String fileName = "otdr";//文件名,不带路径,不带.xls后缀
//		String [] coloumItems = {"otdr编号","otdr所在站点id","目标光纤段id"};
//		String sql = "select * from _otdr"; 

//		String fileName = "变电站";//文件名,不带路径,不带.xls后缀
//		String [] coloumItems = {"站点id", "站点名称", "站点等级", "经纬度","经度值", "纬度值"};
//		String sql = "select * from _station"; 

//		String fileName = "光纤段";// 文件名,不带路径,不带.xls后缀
//		String[] coloumItems = { "光纤段id", "光纤段名称", "起点", "终点", "负责人","负责人手机号" };
//		String sql = "select id, name,( "
//				+ "select name from _station s where s.id = f.startPoint_id ),( "
//				+ "select name from _station s where s.id=f.endPoint_id ),( "
//				+ "select name from _repairer r where r.id=f.repairer_id ), ( "
//				+ "select phoneNum from _repairer r where r.id=f.repairer_id ) "
//				+ "from _fiberline f;";

//		String fileName = "操作记录";// 文件名,不带路径,不带.xls后缀
//		String[] coloumItems = { "操作记录id", "操作时间", "操作对象", "操作类型", "操作内容" };
//		String sql = "select id, operation_date, object, type, content from _operation;";

//		String fileName = "负责人";// 文件名,不带路径,不带.xls后缀
//		String[] coloumItems = { "负责人id", "姓名", "手机号" };
//		String sql = "select id, name, phoneNum from _repairer;";

//		String fileName = "历史故障信息统计";// 文件名,不带路径,不带.xls后缀
//		String[] coloumItems = { "统计id", "光纤段名称", "故障次数","故障总时长" };
//		String sql = "select id, fiberLine_name, errorTimes, totalDuration from _statistic;";

//		String fileName = "网站用户";// 文件名,不带路径,不带.xls后缀
//		String[] coloumItems = { "用户id", "用户名", "用户角色", "真实姓名" };
//		String sql = "select id, user_name, role_id, realname from user;";

		String fileName = "故障记录";// 文件名,不带路径,不带.xls后缀
		String[] coloumItems = { "故障记录id", "光纤段名称", "故障经度", "故障纬度", "故障时间", "修复时间", "故障时长", "是否已修复" };
		String sql = "select id, fiberLine_name, error_lon, error_lat, error_date, recover_date, duration, fixStatus from _errorrecord;";
		ResultSetToExcel.writeExcel(fileName, coloumItems, sql);  

	}

}

功能封装部分:

一、导出Excel功能封装

package com.otdrmsys.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

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

/***
 * 将数据库中的数据导出成Excel 说明:该类是在apache的poi组件来实现的
 * 用户只要提供给writeExcel方法文件名,列名,和一个sql查询语句就可以导出数据到excel文件
 *
 */
public class ResultSetToExcel {
	/**
	 * 写Excel操作
	 *
	 * @param fileName
	 *            文件名,但不需要后缀名
	 * @param coloumItems
	 *            字段名,即表中的每一列的名称
	 * @param sql
	 *            数据库查询语句
	 */

	public static String backupPath = "D:/网站数据备份目录_勿删/";

	public static void writeExcel(String fileName, String[] coloumItems,
			String sql) {

		File backupFolder = new File(backupPath);
		if (!backupFolder.exists()) {
			backupFolder.mkdir();
		} 

		Connection conn = DB.createConn();
		PreparedStatement ps = DB.prepare(conn, sql);
		ResultSet rs = null;
		try {
			rs = ps.executeQuery(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		FileOutputStream fileOutputStream = null;
		try {
			fileOutputStream = new FileOutputStream(backupPath + fileName
					+ ".xls");
			HSSFWorkbook workbook = new HSSFWorkbook();
			HSSFSheet sheet = workbook.createSheet();
			createTag(coloumItems, sheet);// 写表格的列名
			createValue(rs, sheet);// 获取数据集,然后获得数据,写文件
			workbook.write(fileOutputStream);
			fileOutputStream.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (fileOutputStream != null) {
				try {
					fileOutputStream.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
		DB.close(ps);
		DB.close(conn);
	}

	/**
	 * 创建表格表头
	 *
	 * @param tags
	 * @param s
	 */
	private static void createTag(String[] tags, HSSFSheet s) {
		HSSFRow row = s.createRow(0);
		HSSFCell cell = null;
		for (int i = 0; i < tags.length; i++) {
			cell = row.createCell(i);
			cell.setCellValue(tags[i]);
		}
	}

	/**
	 * 设置表格内容
	 *
	 * @param res
	 * @param s
	 */
	private static void createValue(java.sql.ResultSet res, HSSFSheet s) {
		try {
			int flag = 1;
			int count = res.getMetaData().getColumnCount();
			HSSFRow row = null;
			HSSFCell cell = null;
			while (res.next()) {
				row = s.createRow(flag);
				for (int i = 1; i <= count; i++) {
					cell = row.createCell(i - 1);
					Object obj = res.getObject(i);
					cell.setCellValue(obj + "");
				}
				flag++;
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}
}

二、数据库操作封装

package com.otdrmsys.util;

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

public class DB {
	public static Connection createConn() {
		Connection conn = null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/myDataBaseName", "root", "123456");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return conn;
	}

	public static PreparedStatement prepare(Connection conn, String sql) {
		PreparedStatement ps = null;
		try {
			ps = conn.prepareStatement(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return ps;
	}

	public static void close(Connection conn) {

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

java导出数据库里的数据至Excel进行数据备份,布布扣,bubuko.com

时间: 2024-12-14 18:09:50

java导出数据库里的数据至Excel进行数据备份的相关文章

导出带下拉框的Excel(数据超出长度解决方案)

  注意:此文档中标注的行号和列号都是下标,从0开始 //下载模板 protected void btnDownLoad_ServerClick(object sender,EventArgs e) { //生成Excel模板 CreateExcelTemp(); //设置想要打开的模板路径  string path = this.MapPath("~/BaseInfo/Temp/GABProdectInfoMaintain.xls"); //将此模板打开或重新保存 ExcelOutE

Java 从数据库中查找信息导入Excel表格中

前端js function Excel (){ //ajax请求 $.ajax({ url : "outPutAboutShopInfo", type : "post", dataType : "json", data:{ "basicShop.shopId" : shopId, "basicShop.shopMemo" : stringType //不方便增加字段所以使用门店的一个"备注&quo

SqlServer表数据与excel中数据的互相复制

一.SqlServer表数据复制到excel 1.新建查询,用sql语句把表数据读出来 2.然后,选择数据,右键,复制(也可以点击连同标题复制),复制到记事本中(不然会乱码) 3.然后再把记事本的内容复制,在excel中粘贴就可以了. 二.excel复制到SqlServer表数据 1.打开excel复制数据. 2.用编辑状态打开sql表 3.右键点击表最下面一行左侧的序号,选择粘贴(注意,excel的列一定要和sql表的列对应) 4.如果有自增,不要复制自增字段

flex+java将数据库里的数据导出到指定目录下excel表里(poi)

数据写入到excel中采用的是Apache POI: //java后台的一个工具类(该工具类适用于为不同字段添加,方便) /* 下面这个方法是将list转换为Excel工作表的 */ public static HSSFWorkbook getWorkbook(List<ExporTable> list) throws Exception { HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.creat

extjs4 前台导出grid数据 生成excel,数据量大后台无法接收到数据

最近做的一个web项目使用的是extsj4 框架,需要一个导出excel功能,通过extjs4 自带的导出方法实现.在前台生成excel的代码,form提交传递到后台输出.前台grid数据超过1000行后导出数据后台无法接收.网上搜索了很多是tomcat传输数据大小默认为2m导致的,将tomcat的server.xml中的 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20

java 导出excel表格数据

本篇文章基于java把数据库中的数据以Excel的方式导出,欢迎各位大神吐槽: 1.基于maven jar包引入如下: 1 <dependency> 2 <groupId>net.sourceforge.jexcelapi</groupId> 3 <artifactId>jxl</artifactId> 4 <version>2.6.12</version> 5 </dependency> 2.首先创建数据库对

Kettle Excel导入数据到数据库

最近学习大数据的处理,由于项目开发的需要,使用一种简单的方式来将Excel中的数据导入到数据库中,开发使用的kettle工具. kettle工具安装很简单,从官网上下载下来之后,直接解压到制定的盘符下即可(前提是你配置了JAVA的环境变量,path,classpath). 在WINDOWS环境下双击Spoon.bat文件,出现如下图: 点击如图所示的图标,进行本地文件导入的配置 选择红色线框下的选项,点击确定 按照上面的操作,点击确定即可. 直接点击关闭即可. 通过上面两个地方的任意一个都可以创

java导出大量的excel

废话少说,直入主题 基本思路为  创建一个临时文件 写入数据 导出数据  删除临时文件 首先需要两个jar包 antlr和stringtemplate 创建数据库中的类Row     private String name1;          private String name2;          private String name3;     public String getName1() {         return name1;     }     public void

【奇葩的需求】对整个数据库里的所有表的所有字段的数据操作

哎,因为图片服务器的网址变了,所以让把数据库里所有表所有字段的数据里的旧网址替换成新网址,所以就只能写了这么一个代码,貌似效率还不错,20多W的数据量,只用了13秒,好的代码不需要太多的文字来解释 <?php  class TestAction extends Action{ private $old_str=''; private $new_str='' function index(){ set_time_limit(0); $tableList=$this->getTables(); f