CREATE TABLE `books` (
`book_id` int(11) NOT NULL auto_increment,
`book_name` varchar(200) character set gb2312 default NULL,
`book_author` varchar(100) character set gb2312 default NULL,
`book_publish` varchar(100) character set gb2312 default NULL,
`book_date` date default NULL,
`book_isbn` varchar(20) default NULL,
`book_page` int(11) default NULL,
`book_price` decimal(10,2) default NULL,
`book_content` varchar(100) character set gb2312 default NULL,
PRIMARY KEY (`book_id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=COMPRESSED;
package jsl.test;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.Workbook;
public class ExportExcel {
/**
* 这里主要是实现以main函数形式的导出操作这里是实际从数据库当中导出数据,当然操作形式相当多
* 这里主要来说说核心其实就是将数据写入到Excel当中,其中有一些修饰之类的就不加以累述了比如头部,标题字体,宽高等等,
*
* 这个是一个可运行程序,实际运用也许不大,这里采用最简单的方式来说明它所用到的核心东西就够了接着还会以WEB形式展示其上传下载功能
*
* 一切没有封装,就是直接填充到Excel当中去
*
* Author: Lip(lizg)
* Date : --
*
* 这里以从Oracle和MySQL的一个表当中导出数据为例子,来说明一下实际的操作
*
* 再次声明,这里就是一些很简单的内容来说明
*
* 首先是最简单的MySQL导出数据(Oracle一样的)
*
*/
public static void main(String[] args) {
//(第一:)首先:导出数据,需要导出到一个你命名的文件里面,这里当然是Excel类型文件所以这里就建立
File excelFile = new File("c:\\测试.xls");//这里直接建立文件到目录下,
try{
excelFile.createNewFile();
}catch(Exception e){
//
}
//(第一步完成)这里就直接操作,没有用到文件流之类的,下次会用到
//(第二:)要导出Excel,数据必不可少的,所以这里先来把数据取好吧,
try{
//成功取得数据
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","root","root");
Statement stat = conn.createStatement();
ResultSet rest = stat.executeQuery("select * from books");
//Systemoutprintln(rest);可以测试一下
//(第二步完成)
/*
* (第三:)数据得到,然后就是填充,
*
* 这里直接将数据填充到表当中
*
* 然后就是填充了,填充是一个过程,
*/
//建立导出到这个文件
WritableWorkbook writBook = Workbook.createWorkbook(excelFile);
//这个其实就是让其填充到Excel的第一页,就是从开始而已因为一个Excel文件可以在下方翻页,可以有很多的页码
//第一个参数就是你为某页设置的标题,第二个是第几页这里标题和页码不要重复,不然会出现bug,以下只是说明,可以运行试试
WritableSheet writShet = writBook.createSheet("第一页", 0);
//这个就是实际的每一页的表格了,它就是实际的数据所在,它可以添加很多的数据然后填充到每一页当中
/**
* 说明一下,这里的Label 其实就是按照参数设置来填充数据的,
* 它有一些参数设定它有好几个参数,最主要的就是前面三个吧,
*
* 第一个是列,也就是第几列
* 第二个是行,也就是第几行
* 第三个就是填充到这个坐标的数据
* 还有后面的参数,(字体什么的)大家可以参考API
*/
Label label = null;
int i = 1;
while(rest.next()){
label=new Label(0,0,"id");
writShet.addCell(label);
label=new Label(1,0,"书名");
writShet.addCell(label);
label=new Label(2,0,"作者");
writShet.addCell(label);
label=new Label(3,0,"出版社");
writShet.addCell(label);
label=new Label(4,0,"出版日前");
writShet.addCell(label);
label=new Label(5,0,"isdn");
writShet.addCell(label);
label=new Label(6,0,"页数");
writShet.addCell(label);
label=new Label(7,0,"价格");
writShet.addCell(label);
label=new Label(8,0,"内容简介");
writShet.addCell(label);
label = new Label(0,i,rest.getString(1));
writShet.addCell(label);
label = new Label(1,i,rest.getString(2));
writShet.addCell(label);
label = new Label(2,i,rest.getString(3));
writShet.addCell(label);
label = new Label(3,i,rest.getString(4));
writShet.addCell(label);
label = new Label(4,i,rest.getString(5));
writShet.addCell(label);
label = new Label(5,i,rest.getString(6));
writShet.addCell(label);
label = new Label(6,i,rest.getString(7));
writShet.addCell(label);
label = new Label(7,i,rest.getString(8));
writShet.addCell(label);
label = new Label(8,i,rest.getString(9));
writShet.addCell(label);
i++;
}
writBook.write();
writBook.close();
rest.close();
stat.close();
conn.close();
//(第三步完成)
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}