EXCEL通过uploadify导入

  在企业级开发里,经常要用到导入,在我开发的系统里面导入用到的第三方导入组件是uploadify,下面我把代码贴到下面来,基本上可以套上去使用!

-----------------------------------------------------------------------------------------------------

  前端代码:

var buttonText='导入'
$("#uploadify").uploadify({
'buttonClass' : 'scbtn',
'debug' : false, //开启调试
'auto' : true, //是否自动上传
'swf' : 'uploadify/uploadify.swf', //引入uploadify.swf
'uploader' : 'confirmationUploadAction',//请求路径
'queueID' : 'fileQueue',//队列id,用来展示上传进度的
'width' : '80', //按钮宽度
'height' : '35', //按钮高度
'queueSizeLimit' : 1, //同时上传文件的个数
'fileTypeDesc' : 'excel文件', //可选择文件类型说明
'fileTypeExts' : '*.xlsx;*.xls', //控制可上传文件的扩展名
'multi' : false, //允许多文件上传
'buttonText' : buttonText,//按钮上的文字
'fileSizeLimit' : '2MB', //设置单个文件大小限制
'fileObjName' : 'uploadify', //<input type="file"/>的name
'method' : 'post',
'removeCompleted' : true,//上传完成后自动删除队列
'onFallback':function(){
// alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},

'onSelect' : function() {
layer.load(1, {
shade : [ 0.1, '#000', true ]
});
}, 'onUploadSuccess':function(file, data, response){
var flag= eval('('+data+')');
var result=flag.flag;

if(result=="ok"){
layer.closeAll('loading');
layer.msg("导入成功", {icon: 1})
search();
}else{
layer.closeAll('loading');
layer.msg("导入失败", {icon: 2})

}
}
});

----------------------------------------------------------------------------------------------------------------

stutas2的配置文件:(文件头我没有给出来)

<struts>
<package name="upload" extends="struts-default">
<action name="confirmationUploadAction" method="confirmationUpload" class="com.pec.action.UploadifyAction"></action>
</package>
</struts>

----------------------------------------------------------------------------------------------------------------

Action层

public String confirmationUpload() throws Exception {
response.setContentType("text/html;charset=utf-8");
Map<String, Object> map = new HashMap<String, Object>();
PrintWriter out = response.getWriter();
String extName = "";// 扩展名
String newFileName = "";// 新文件名
// 设置传入的文件的编码
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8");

// 服务器目录
String targetDirectory = ServletActionContext.getServletContext()
.getRealPath("/upload");
String nowTime = new SimpleDateFormat("yyyymmddHHmmss")
.format(new Date());// 当前时间
// 获取扩展名
if (uploadifyFileName.lastIndexOf(".") >= 0) {
extName = uploadifyFileName.substring(uploadifyFileName
.lastIndexOf("."));
}
// 设置新文件名称
newFileName = nowTime + extName;
// 生成上传的文件对象
File targetFile = new File(targetDirectory, newFileName);
// 文件已经存在删除原有文件
if (targetFile.exists()) {
targetFile.delete();
}
// 复制file对象上传
FileUtils.copyFile(uploadify, targetFile);
// 上传数据到数据库
// DrmUser user = (DrmUser) session.get("drmUser");
String flag="";
try {
flag= uploadifyService.saveConfirmation(targetFile);
} catch (Exception e) {
flag="err";
e.printStackTrace();
}
result.put("flag", flag);
JSONObject json = JSONObject.fromObject(result);
out.write(json.toString());
out.flush();
out.close();
return null; // 这里不需要页面转向,所以返回空就可以了
}

-------------------------------------------------------------------------------------------------------------------------------

service层,到这里基本上就把excel上的数据导入到对象里面来了,根据自己实际情况再进行接下来的操作

public String saveConfirmation(File file) {
Workbook wb = null;
Sheet sheet = null;
String flag=null;//返回给Action的保存状态 'ok'保存成功 'err'保存失败
List<DrmConfirmation> list=new ArrayList<>();
// 将文件转成文件输入流
InputStream is;
try {
is = new FileInputStream(file);
// Workbook workbook=Workbook.getWorkbook(file);
// 判断Excel版本
if (file.getName().toUpperCase().endsWith(".XLS")) {
wb = new HSSFWorkbook(is);// Excel 2003
} else {
wb = new XSSFWorkbook(is);// Excel 2007
}
// 获得第一个表格页
sheet = wb.getSheetAt(0);
// 遍历数据
//循环表中的条数
for(int i = 3; i < sheet.getLastRowNum()+1; i++){
//创建一个对象来装每一条的具体内容
DrmConfirmation confirmation =new DrmConfirmation();
DrmUser u = (DrmUser) ActionContext.getContext().getSession()
.get("drmUser");
confirmation.setCreateTime(DateUtil.covertToDbTimeStamp(System.currentTimeMillis(),"yyyy-MM-dd hh:mm:ss"));
confirmation.setCreateUser(u.getUserId());
//循环每一条的具体内容
for(int j = 0; j < sheet.getRow(i).getLastCellNum(); j++){
Cell cell = sheet.getRow(i).getCell(j);
int celltype;
String result=null;
if(cell==null){
celltype=11;//为空的情况
}else{

celltype=cell.getCellType() ;//获取字段数据类型
}
if(celltype==cell.CELL_TYPE_NUMERIC){//进行数据类型的判断,然后进行不同的处理,要不然会报错

double cellnum=cell.getNumericCellValue();
int cellint=(int)cellnum;
if((cellnum-cellint)>0){
result=String.valueOf(cellnum);//转换成String方便下面赋值
}else{
result=String.valueOf(cellint);
}
}else if(celltype==11){
result="";
}else{

result=cell.getStringCellValue();
}
switch (j) {//把对应位置上的数据保存到对应对象中的字段中
case 0://客户代号
confirmation.setCustId(result);
break;
case 1://截止时间
confirmation.setYyyymmddEnd(result);
break;
case 2://账务中心名称
confirmation.setBranchName(result);
break;
case 3://贵公司欠(资金往来)
if(result.equals("")||result==null){
confirmation.setAmtDebts((new BigDecimal(0)));
}else{
confirmation.setAmtDebts((new BigDecimal(result)));
}
break;
case 4://欠贵公司(资金往来)
if(result.equals("")||result==null){
confirmation.setAmtRec((new BigDecimal(0)));
}else{
confirmation.setAmtRec((new BigDecimal(result)));
}
break;
case 5://备注
confirmation.setMemoAmt(result);
break;
case 6://项目
confirmation.setProject(result);
break;
case 7://贵公司欠(费用)
if(result.equals("")||result==null){
confirmation.setCostDebts((new BigDecimal(0)));
}else{
confirmation.setCostDebts((new BigDecimal(result)));
}
break;
case 8://欠贵公司(费用)
if(result.equals("")||result==null){
confirmation.setCostRec((new BigDecimal(0)));
}else{
confirmation.setCostRec((new BigDecimal(result)));
}
break;
case 9://备注
confirmation.setMemoCost(result);
break;
case 10://库存采集日期
confirmation.setYyyymmddStk(result);
break;
case 11://正常品
if(result.equals("")||result==null){
confirmation.setQty1I((new BigDecimal(0)));
}else{
confirmation.setQty1I((new BigDecimal(result)));
}
break;
case 12://滞销品
if(result.equals("")||result==null){
confirmation.setQty2I((new BigDecimal(0)));
}else{
confirmation.setQty2I((new BigDecimal(result)));
}
break;
case 13://即期品
if(result.equals("")||result==null){
confirmation.setQty3I((new BigDecimal(0)));
}else{
confirmation.setQty3I((new BigDecimal(result)));
}
break;
case 14://即期品
if(result.equals("")||result==null){
confirmation.setQty4I((new BigDecimal(0)));
}else{
confirmation.setQty4I((new BigDecimal(result)));
}
break;
case 15://备注(库存)
confirmation.setMemoStk(result);
break;
case 16://通信地址
confirmation.setAddress(result);
break;
case 17://联系人
confirmation.setContactPerson(result);
break;
case 18://联系人
confirmation.setZip(result);
break;
case 19://电话
confirmation.setTel(result);
break;
case 20://传真
confirmation.setFax(result);
break;
case 21://询证函编号
confirmation.setConfirmationId(result);
break;
case 22://落款签名
confirmation.setInscription(result);;
break;

default:
break;
}



}
if(!confirmation.getConfirmationId().equals("")&&confirmation.getConfirmationId()!=""){
list.add(confirmation);
}
}
for(int i=0;i<list.size();i++){
confirmationDao.save(list.get(i));//把对象保存到数据中,也就是excel的一行数据
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "ok";
}

上面是我用到的第三方文件,由于无法传附件,有需要的可以去网上下载或者找我也可以!

 

转载于:https://www.cnblogs.com/zhanchi/p/6400774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值