poi批量导入execl数据,记录备忘:
1、jsp页面form 文件上传
<form id="imform" method="post" enctype="multipart/form-data">
<div class="form_nr_ul">
<div class="form_nr_title">excel文件:</div>
<div class="form_nr_content">
<input id="file" type="file" name="file"
class="validate[required]" style="width: 500px" />
</div>
</div>
</form>
2.、js代码如下:
function uploadPeopleMes() {
saveData("imform","wAjax/pho!batchUpload.action",subCallbck,"saveUrl");
}
3、action中定义如下三个变量,并且添加get和set方法 :
private File file; // 导入文件
private String fileFileName;// 上传文件的名称
private String fileContentType;// 上传文件的MIME类型
4、获取到文件,并且开始准备读取
// 取到服务器上传文件存放的路径
String path = ServletActionContext.getServletContext().getRealPath(
"/file/");
File file1 = new File(path);
if(!file1.exists())file1.mkdirs();
// 取到上传文件的完整路径
File file2 = new File(file1,fileFileName);
try {
//保存文件
FileUtils.copyFile(file, file2);
} catch (IOException e) {
e.printStackTrace();
}
if (file2.getPath().endsWith("xls")) {// 2003读取并保存数据
POIFSFileSystem fs = new POIFSFileSystem(
new FileInputStream(file2));
HSSFWorkbook wb = new HSSFWorkbook(fs);
HSSFSheet sheet = wb.getSheetAt(0);
int rownum = sheet.getLastRowNum();
for (int i = 1; i <= rownum; i++) {
j = i + 1;
ArrayList l = new ArrayList();
HSSFRow row = sheet.getRow(i);
WebUnitInfo p = new WebUnitInfo();
p.setUnitName(String.valueOf(row.getCell(0)));
p.setUnitPhone(String.valueOf(row.getCell(1)));
p.setUnitAddress(String.valueOf(row.getCell(2)));
p.setUnitComment(String.valueOf(row.getCell(4)));
String s = String.valueOf(row.getCell(3)).trim();
WebConventInfo convent = queryConventInfoByConventName(s);
p.setUnitClassify(new Integer(convent.getConventCode())
.toString());
p.setUnitUrl(convent.getConventImg());
p.setCreateDate(DateUtil.getCurrentTimeStamp());
p.setCreateId(user.getUserId());
purList.add(p);
}
} else if (file2.getPath().endsWith("xlsx")) {// 2007读取并保存数据
XSSFWorkbook xwb = new XSSFWorkbook(new FileInputStream(
file2));
XSSFSheet sheet = xwb.getSheetAt(0);
int rownum = sheet.getLastRowNum();
for (int i = 1; i <= rownum; i++) {
j = i + 1;
ArrayList l = new ArrayList();
XSSFRow row = sheet.getRow(i);
WebUnitInfo p = new WebUnitInfo();
p.setUnitName(String.valueOf(row.getCell(0)));
p.setUnitPhone(String.valueOf(row.getCell(1)));
p.setUnitAddress(String.valueOf(row.getCell(2)));
p.setUnitComment(String.valueOf(row.getCell(4)));
String s = String.valueOf(row.getCell(3));
WebConventInfo convent = queryConventInfoByConventName(s);
p.setUnitClassify(new Integer(convent.getConventCode())
.toString());
p.setUnitUrl(convent.getConventImg());
p.setCreateDate(DateUtil.getCurrentTimeStamp());
p.setCreateId(user.getUserId());
purList.add(p);
}
}
getHibernateTemplate().saveOrUpdateAll(purList);
5、需要注意的一个坑是 ,Excel文档的列要设置成文本格式,不然会报错 或者数据有问题。