//構建匯入檔案儲存路徑
string datepath = dateconstants.date_format_num_short().format(new date());
path = path + "upload/" + user.getentid() + "/blacklistimport/" + datepath;
//匯入檔案路徑不存在就生成
file dir = new file(path);
if (!dir.exists())
//構建匯入檔案新的名稱
string filename = user.getentid() + "_" + dateconstants.date_format_num().format(new date()) + new random().nextint(10) + "." + ext;
string destpath = path + "/" + filename;
//新建檔案
file destfile = new file(destpath);
try catch (illegalstateexception | ioexception e)
/*** 2.解析excel,新增名單到庫,返回匯入結果及結果檔案路徑
sheet sheet = workbook.getsheetat(0); // 獲得第1個工作薄
int totalnum = 0;
int successnum = 0;
// 加入匯入數量限制
int maxrow = sheet.getlastrownum();
if(maxrow>20001)
// 建立匯出結果標題行
row hssfrow0 = sheet.getrow(0);
/*** 解析excel檔案表頭對應欄位key,返回map
*/mapmap = blacklisttitleutils.parseexceltitle(hssfrow0);
if (map == null || map.size() == 0)
// 獲取excel檔案總列數,新建匯出結果的列
int physicalnumberofcells = hssfrow0.getphysicalnumberofcells();
//excel的cell是從0開始算的,所以cell的數量就是下個cell的座標
hssfrow0.createcell(physicalnumberofcells).setcellvalue("匯入結果");
sheet.setcolumnwidth(physicalnumberofcells, 50 * 256);
// 迴圈行row,從第1行開始
for (int rownum = 1; rownum <= sheet.getlastrownum(); rownum++)
totalnum++;
dbobject dbo = new basicdbobject(); // 新建names資料庫插入物件
/*** 從excel這一行中,讀取所有欄位的值並存入dbo
*/for (map.entryentry : map.entryset())
//固定字段
dbo.put("entid", entid);
dbo.put("creatorid", user.getuserid());
dbo.put("creatorname", user.getusername());
dbo.put("createtime", createtime);
try
if (stringutils.isblank((string) dbo.get("username")))
int success = blacklistdao.addblacklist(dbo, entid); //儲存名單到資料庫。
if (success == 0) else
} catch (serviceexception adde1) catch (exception adde2)
}//沒資料直接返回失敗
if (totalnum == 0)
throw new serviceexception("沒有有效資料");
//有匯入錯誤,則生成結果檔案返回
int failnum = totalnum - successnum;
if (failnum != 0)
file destfile = new file(resultpath + resultfilename);
if (!destfile.exists())
systemlogutils.debug("上傳結果檔案儲存路徑:" + resultpath + resultfilename);
fileout = new fileoutputstream(resultpath + resultfilename);
workbook.write(fileout);
fileout.close();
resultvo.setresultfilepath(relativepath + resultfilename);
}workbook.close();
resultvo.settotalnum(totalnum + "");// 總記錄條數
resultvo.setimportsuccessnum(successnum + "");
resultvo.setimportfailnum(failnum + "");
resultvo.setfaillist(faillist);
return resultvo;
} catch (exception e)
}
POI之操作Excel表
office 2003和office 2007及以上版本excel的區別 excel 2003 excel 2007以上版本 技術背景 ole2 二進位制檔案 ooxml xml檔案 行數 單sheet 65536 1048576 列數 25565536 最後的效果圖 excel 2003操作使用h...
poi匯出excel 之API整理
hssfworkbook wb new hssfworkbook hssfsheet sheet wb.createsheet hssfcellstyle setborder wb.createcellstyle 一 設定背景色 setborder.setfillforegroundcolor sh...
Excel 的處理一 POI 解析excel
03與07版本excel區別 一 字尾不同 前者.xls,後者.xslx 二 前者行數有最大行數限制 最大65536行 後者無行數限制 1.1 簡單方式 載入檔案路徑 獲取流 new fileinputstream filepath 再把流放入到工作簿裡,此時inputstream物件就讀取到工作簿...