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("插入成功!");
}

第四,讀取。。。。(略)

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM