原理:导入Excel数据到数据表,其实还是批量插入。根据上传的Excel文件,把数据转换成对象的属性,然后进行批量插入。需要的jar包 jxl.jar
函数:把Excel数据流转换成List对象集合
/**
* @category 类型转函数
* @function 把Excel数据流转换成List集合
* @param file File对象
* @return 返回List集合对象
*/
public List<News> converterFromExcel(File excelfile)
{
//创建集合对象
List<News> list=new ArrayList<News>();
//声明工作薄对象
jxl.Workbook workbook = null;
try{
//创建文件输入流
InputStream is = new FileInputStream(excelfile);
//创建工作薄对象
workbook = Workbook.getWorkbook(is);
//获取工作表
Sheet rs = workbook.getSheet(0);
//获取工作表总行数
int rows = rs.getRows();
//如第一行为属性项则从第二行开始取数据(int i=0;i<rsRows;i++)
for(int i=1;i < rows;i++){
//获得工作表总列数
int cols = rs.getColumns();
//创建News类的对象
News news = new News();
//循环取出Excel单元格数据
for(int j=0;j<cols;j++){
//获取Excel单元格的值,rs.getCell(列,行)
if(news.getTitle() == null){//标题为空
//设置对象title属性的值
news.setTitle(rs.getCell(j, i).getContents()+"");
continue;
}else if(news.getAuthor() == null){//作者为空
//设置对象author属性的值
news.setAuthor(rs.getCell(j,i).getContents()+"");
continue;
}else if(news.getPublished() == null){//发表日期为空
//设置对象published属性的值
news.setPublished(rs.getCell(j,i).getContents()+"");
continue;
}else if(news.getContent() == null){//内容为空
//设置对象author属性的值
news.setContent(rs.getCell(j,i).getContents()+"");
continue;
}
}
//把news对象放进集合
list.add(news);
}
}catch(Exception e){
e.printStackTrace();
}finally{
workbook.close();
}
return list;
}
导入数据函数:
/**
* @category 数据导入函数
* @param news News对象
* @return 返回布尔值
*/
public Boolean importExcel(News news){
Boolean b = false;
String sql = "insert into news(title,author,content) " +
"values('"+news.getTitle()+"','"+news.getAuthor()
+"','"+news.getContent()+"')";
try{
if(new DbOperator().insert(sql)){//插入数据
b = true;
}
} catch (Exception e) {
e.printStackTrace();
}
return b;
}