JXL操作Excel 並存取資料(MySQL)(Hibernate)
jxl操作excel的物件Workbook,Sheet ,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
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&characterEncoding=utf8
</property>