
在hibernate中如何用jxl将excel表格中的数据导入数据库,最好是详细一点的代码,不胜感激
1个回答
展开全部
public class ExcelToDB {
//这几个DAO类和实体类都是随便写得 你可以任意修改,添加
private TitlenameinfoDAO tnamedao = new TitlenameinfoDAO();
private Titlenameinfo tname = new Titlenameinfo();
private UserinfoDAO userdao = new UserinfoDAO();
private Userinfo user = new Userinfo();
public void readExcel()
{
//此处省略获取上传文件路径代码
String path = "";
try {
InputStream is = new FileInputStream(path);
Workbook book = Workbook.getWorkbook(is);
Sheet sheet = book.getSheet(0);
int col = 0;
int row = 0;
int tablevalue = 1;
String tna = null;
List<Titlenameinfo> list = new ArrayList<Titlenameinfo>();
list = tnamedao.findByTitlename(tname.getTitlename());
//循环取得工作表第一行第一列的值
for(col=0;col<sheet.getColumns();col++)
{
Cell celltn = sheet.getCell(col, 0);
tna = celltn.getContents();
//循环比较获得的值是否与数据内的值相同
for(int i =0;i<list.size();i++)
{
if(tna.equals(list))
{
for(row=1;row<sheet.getRows();row++)
{
celltn = sheet.getCell(col, row);
tna = celltn.getContents();
}
}
}
}
//比较数据库内的数据表编号
switch (tablevalue) {
case 1:
user.setUsername(tna);
user.setUsersex(tna);
user.setUseraddress(tna);
userdao.save1(user);
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
break;
}
book.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是个通用类 如果用的话 请在数据库内添加两个表 1个是记录所有EXCEL列名的列名表,在列名表内添加列名所属的表编号 1个是记录表编号所代表的表名的表
还有1点 因为我不太擅长JSP页面编写 所以 我就在这个通用类里面写了所有的表的dao类和实体类 然后用switch判定用哪个表 如果大家有擅长的话 可以写一个参数 从前台页面传过来 就可以省略我写得这些实体类,dao类了
//这几个DAO类和实体类都是随便写得 你可以任意修改,添加
private TitlenameinfoDAO tnamedao = new TitlenameinfoDAO();
private Titlenameinfo tname = new Titlenameinfo();
private UserinfoDAO userdao = new UserinfoDAO();
private Userinfo user = new Userinfo();
public void readExcel()
{
//此处省略获取上传文件路径代码
String path = "";
try {
InputStream is = new FileInputStream(path);
Workbook book = Workbook.getWorkbook(is);
Sheet sheet = book.getSheet(0);
int col = 0;
int row = 0;
int tablevalue = 1;
String tna = null;
List<Titlenameinfo> list = new ArrayList<Titlenameinfo>();
list = tnamedao.findByTitlename(tname.getTitlename());
//循环取得工作表第一行第一列的值
for(col=0;col<sheet.getColumns();col++)
{
Cell celltn = sheet.getCell(col, 0);
tna = celltn.getContents();
//循环比较获得的值是否与数据内的值相同
for(int i =0;i<list.size();i++)
{
if(tna.equals(list))
{
for(row=1;row<sheet.getRows();row++)
{
celltn = sheet.getCell(col, row);
tna = celltn.getContents();
}
}
}
}
//比较数据库内的数据表编号
switch (tablevalue) {
case 1:
user.setUsername(tna);
user.setUsersex(tna);
user.setUseraddress(tna);
userdao.save1(user);
break;
case 2:
break;
case 3:
break;
case 4:
break;
case 5:
break;
default:
break;
}
book.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BiffException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IndexOutOfBoundsException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
这是个通用类 如果用的话 请在数据库内添加两个表 1个是记录所有EXCEL列名的列名表,在列名表内添加列名所属的表编号 1个是记录表编号所代表的表名的表
还有1点 因为我不太擅长JSP页面编写 所以 我就在这个通用类里面写了所有的表的dao类和实体类 然后用switch判定用哪个表 如果大家有擅长的话 可以写一个参数 从前台页面传过来 就可以省略我写得这些实体类,dao类了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询