1. 程式人生 > >JXL操作Excel 並存取資料(MySQL)(Hibernate)

JXL操作Excel 並存取資料(MySQL)(Hibernate)

jxl操作excel的物件WorkbookSheet Cell

一個excel就對應一個Workbook物件

一個Workbook可以有多個Sheet物件

一個Sheet物件可以有多個Cell物件

   Workbook: 就是一個.xls 表             Sheet: Excel 下面的分頁標籤Sheet                            Cell: 每個格就是一Cell

jxl開啟Excel的步驟:

1.     FileInputStream in = new FileInputStream("D:/xsb.xls");   //獲得輸入流

       Workbook wb = Workbook.getWorkbook

(in);              //建立 Workbook

       Sheetsheet = wb.getSheet(0);                        //建立Sheet 頁

2.     Cell cell = sheet.getCell(j, i);          //前一個j是列數,後一個i是行數

        String result = cell.getContents();  //getContents()方法獲cell值,都是String型別

注意:wb.close();

操作完成後呼叫Workbook的close方法釋放記憶體資源,在操作大資料量時很重要。

具體操作步驟,

1. 新建Java progect 並分層  cn.edu.ujn.model   存放POJO類和對映檔案  Hibernate反向生成

                                            cn.edu.ujn.dao     操作POJO類   

                                            cn.edu.ujn.main     主類 

                                            cn.edu.ujn.session   存放SessionFactory          Hibernate生成

2. 在MyEclipse中建立對MySQL 的連線

3. 新增Hibernate開發能力

4. 生成資料庫表對應的Java類物件和對映檔案

dao層程式碼:

package cn.edu.ujn.dao;

import org.hibernate.Session;

import org.hibernate.Transaction;

import cn.edu.ujn.model.Xsb;

import cn.edu.ujn.session.HibernateSessionFactory;

public class XsbDao {

       publicvoid save(Xsb xs){

              Sessionsession = HibernateSessionFactory.getSession();

              Transactionts = session.beginTransaction();

               session.save(xs);

               ts.commit();

               session.close();

               System.out.println("存取成功");

       }

}

主類的程式碼:

package cn.edu.ujn.main;

import java.io.FileInputStream;

import java.text.SimpleDateFormat;

import cn.edu.ujn.dao.XsbDao;

import cn.edu.ujn.model.Xsb;

import jxl.Cell;

import jxl.Sheet;

import jxl.Workbook;

public class JXLMain {

    /**

     * @param args

     */

    public static void main(String[] args) {

       // TODO Auto-generatedmethod stub

       try{

       FileInputStream in = new FileInputStream("D:/xsb.xls");

       Workbook wb = Workbook.getWorkbook(in);

       Sheet sheet = wb.getSheet(0);

       int columns = sheet.getColumns();//列數

       int rows = sheet.getRows();      //行數

       Cell cell0 = sheet.getCell(1, 0);

       String result0 = cell0.getContents();

       System.out.println(result0);

       for(int i=0;i<rows;i++){

           Xsb xsb = new Xsb();

           for(int j=0;j<columns;j++){

              Cell cell =sheet.getCell(j, i);

              String result = cell.getContents();

              switch (j) {

              case 0:xsb.setXh(result);break;

              case 1:xsb.setXm(result);break;

              case 2:xsb.setXb(Byte.valueOf(result));break;

              case 3:

                  SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy/mm/dd");

                  xsb.setCssj(simpleDateFormat.parse(result));

                  break;

              case 4:xsb.setZyId(Integer.valueOf(result));break;

              default:

                  break;

              }            

           }

           XsbDao xsbDao = new XsbDao();

           xsbDao.save(xsb);

       }

       wb.close();

       }

       catch(Exception e)

       {System.out.println(e);}

    }

}

漢字編碼問題:   hibernate.cfg.xml      增加紅色部分

<property name="connection.url">

       jdbc:mysql://localhost:3306/xscj?useUnicode=true&amp;characterEncoding=utf8

       </property>