excel批量导入数据库SQL server
思路:
第一是文件上传,可以参照Jakarta的FileUpload组件,用普通的Post也就行了。
第二是Excel解析,用JSL或者POI都行
第三是数据保存,这个应该简单吧,一个循环,一行对应一条数据,写好了方法循环赋值调用就行了。
第四是查询和显示,这个更简单了,不用多说。
第一,上传
SmartUpload mySmartUpload = new SmartUpload();
// 时间转换
SimpleDateFormat formatter = new
SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat formatter1 = new
SimpleDateFormat("yyyyMM");
boolean sign = true;
String date1 = formatter1.format(new Date());
String date2 =
"";
String ext = "";
// 获取当前项目路径
String path =
config.getServletContext().getRealPath("/");
String path1 = path +
"upload/excel/" + date1;
System.out.println("上传的文件目录为:"+path1);
// 创建文件夹
File dirFile = null;
try {
dirFile = new
File(path1);
dirFile.mkdirs();
} catch (Exception e)
{
e.printStackTrace();
System.out.println(e);
}
try
{
// 初始化
mySmartUpload.initialize(config, request, response);
//
设定允许上传的文件(通过扩展名限制),仅允许excel文件
mySmartUpload.setAllowedFilesList("xls");
// 上传
mySmartUpload.upload();
// 获取文件后缀名
ext = mySmartUpload.getFiles().getFile(0).getFileExt();
// 生成文件名
date2 = formatter.format(new Date());
// 保存
mySmartUpload.getFiles().getFile(0).saveAs(path1 + "/" + date2 +
"." + ext);
} catch (Exception e) {
e.printStackTrace();
sign =
false;
}
if (sign == true) {
String apkPath = "upload/excel/" + date1 + "/"
+ date2 + "." + ext;
String version =
mySmartUpload.getRequest().getParameter("version");
Map<String,
Object> vers = new HashMap<String, Object>();
vers.put("version", version);
vers.put("apk", apkPath);
int
result = 0;
result = versionDao.addVersion(vers);
if (result >
0) { //上传成功
第二 ,解析
// poi解析
FileInputStream fis=null;
List<UserInfo> list=new
ArrayList<UserInfo>();
try
{
System.out.println("开始解析数据。。。。。");
String fi=dirFile+"/"+date2+"."
+ ext;
System.out.println("解析的文件:"+fi);
fis=new
FileInputStream(dirFile+ "/" +date2 + "." + ext);
HSSFWorkbook book=new
HSSFWorkbook(fis);
HSSFSheet
sheet=book.getSheetAt(0);//第一个sheet
int
lastRowNum=sheet.getLastRowNum();//最大行数 有数据的
//一般excel第一行是标题
HSSFRow
row=null;
for (int i = 1; i < lastRowNum; i++)
{
row=sheet.getRow(i);
String num=getCellValue(row,
0);
String name=getCellValue(row, 1);
String
address=getCellValue(row, 2);
String mail=getCellValue(row,
3);
UserInfo info=new UserInfo(num, name, address,
mail);
list.add(info);
System.out.println("读取内容:"+num+","+name+","+address+","+mail+",");
}
System.out.println("内容:"+list+"。");
// out.print("<script>alert(‘添加ok!‘);location.href=‘versionAdd.jsp‘</script>");
}
catch (Exception e)
{
System.out.println("excel解析出错!!!");
e.printStackTrace();
}
//
解析结束
第三,插入数据库
//解析excel成功
//下面操作入库
response.getWriter().println("excel
data:<br/>");
for (UserInfo info : list)
{
response.getWriter().println("name:"+info.getName()+"
address:"+info.getAddress()+"
mail:"+info.getMail()+"<br/>");
System.out.println("名称:"+info.getName()+"地址:"+info.getAddress()+"邮箱:"+info.getMail());
//jdbc链接数据库操作
一条条插入,这个不用我再写了吧???
int
r=versionDao.addV2(info);
if(r>0){
System.out.println("插入成功!");
}
第四,读取。。。。(略)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。