jxl:將數據庫中數據導入到excel(一)
2010-01-13 22:04:01| 分類: java資料 |字號 訂閱 java
Java代碼
mysql
- 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;
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; sql
Java代碼
數據庫
- 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());
- }
- }
- }