package prj.charging.controller;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import prj.charging.service.OutStoreSvc;
import prj.websys.dto.JfEmpDto;
import prj.websys.util.JavaUtil;
import com.jspsmart.upload.Files;
import com.jspsmart.upload.Request;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;
public class ChukuAction extends Action{
public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException, SmartUploadException, RowsExceededException, WriteException, ParseException{
//获取页面参数
HashMap<String , Object> paraMap = new HashMap<String , Object>();
OutStoreSvc svc = new OutStoreSvc();
//调用jspsmart组件进行文件上传操作
SmartUpload smart = new SmartUpload();
ServletConfig config=this.getServlet().getServletConfig();
smart.initialize(config,request,response);//初始化
smart.upload();//开始上传
System.out.print("开始上传文件..");
smart.save("/upload");//save(destPathName)作用等同于save(destPathName,SAVE_AUTO)。
System.out.println("上传文件成功");
Request req=smart.getRequest();
String p_smfid=JavaUtil.getTrimStr(req.getParameter("p_smfid"));
String p_projno=JavaUtil.getTrimStr(req.getParameter("p_projno"));
String p_receivedate=JavaUtil.getTrimStr(req.getParameter("p_receivedate"));
String p_receiveper=JavaUtil.getTrimStr(req.getParameter("p_receiveper"));
String p_date=JavaUtil.getTrimStr(req.getParameter("p_date"));
String p_sendper=JavaUtil.getTrimStr(req.getParameter("p_sendper"));
String p_trans=JavaUtil.getTrimStr(req.getParameter("p_trans"));
paraMap.put("p_smfid", p_smfid);
paraMap.put("p_projno", p_projno);
paraMap.put("p_receivedate", p_receivedate);
paraMap.put("p_receiveper", p_receiveper);
paraMap.put("p_date", p_date);
paraMap.put("p_sendper", p_sendper);
paraMap.put("p_trans", p_trans);
int q=0,w=0;//q 出库成功数 w出库失败数
jxl.write.WritableWorkbook wwb=null;
jxl.write.WritableSheet ws=null;
String fileName = "";
Date date=new Date();
SimpleDateFormat format1 = new SimpleDateFormat("yyyyMMddHHmmss");
SimpleDateFormat format2 = new SimpleDateFormat("yyyyMMddHHmmss");
try{
//创建一个日志文件
fileName = System.getProperty("java.io.tmpdir")+"\\xls"+format2.format(date)+"出库导入日志.xls";
wwb = Workbook.createWorkbook(new File(fileName));
ws = wwb.createSheet("Sheet 1", 0);
ws.addCell(new jxl.write.Label(0, 0, "出库成功数"));//添加列头
ws.addCell(new jxl.write.Label(1, 0, "出库失败数"));
ws.addCell(new jxl.write.Label(2, 0, "操作人"));
ws.setColumnView(0, 20);//设置列宽
ws.setColumnView(1, 20);
ws.setColumnView(2, 20);
HttpSession session=request.getSession();
JfEmpDto empDto = (JfEmpDto)session.getAttribute("empDto");
String name=svc.getempname(empDto.getId());//获得操作人员的姓名 并记录日志中
ws.addCell(new jxl.write.Label(2, 1, name));
ws.addCell(new jxl.write.Label(0, 2, "表身号"));
int hanghao=3;//从第4行开始写入数据
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
//从输入流创建Workbook
//String sourcefile=request.getParameter("myfile"); 文件路径
//System.out.println(sourcefile);
Files file=smart.getFiles();
String filename=file.getFile(0).getFileName();
// 15.19 D:\\Tomcat 6.0\\webapps\\websys\\upload\\
// 220 E:\\Tomcat 6.0\\webapps\\websys\\upload\\
//localhost C:\\Program Files\\Apache Software Foundation\\Tomcat 5.0\\webapps\\websys\\upload\\
InputStream is = new FileInputStream("E:\\Tomcat 6.0\\webapps\\websys\\upload\\"+filename);
jxl.Workbook rwb = Workbook.getWorkbook(is);//构建工作薄对象
Sheet[] shedts=rwb.getSheets();
for(int i=0;i<shedts.length;i++){
jxl.Sheet sh=rwb.getSheet(i);//获取第几页
int row=sh.getRows();//获取所有行
for(int j=1;j<row;j++){
Cell cell0=sh.getCell(0, j);//j代表行号 从第一行开始获取第1列
String biaoshenhao=cell0.getContents();//获取表身号
ws.addCell(new jxl.write.Label(0, hanghao, biaoshenhao));
//开始执行出库过程
if(!("").equals(biaoshenhao)){
paraMap.put("p_smno", biaoshenhao);
paraMap.put("p_emno", biaoshenhao);
String ids=svc.outStorePro(paraMap);
String message=ids.substring(0,1);//出库当前excel中的所有水表
if("e".equals(message)){
w++;//出库失败数量
//如果出库失败,记录表身号,忽律当前表身号继续执行下只水表出库操作,当前表身号不再进行配表
System.out.println("失败的当前表身号:"+biaoshenhao);
ws.addCell(new jxl.write.Label(1, hanghao, "出库失败"));
svc.recorditem(p_projno,biaoshenhao,"",name,"0","1","","");
}
else{
q++;//出库成功数量
svc.recorditem(p_projno,biaoshenhao,"",name,"0","0","","");
}
}
hanghao++;
}
ws.addCell(new jxl.write.Label(0, hanghao, "工程编号"));
ws.addCell(new jxl.write.Label(1, hanghao, p_projno));
}
}
catch (Exception e) {
e.printStackTrace();
}
finally{
ws.addCell(new jxl.write.Label(0, 1, String.valueOf(q)));
ws.addCell(new jxl.write.Label(1, 1, String.valueOf(w)));
wwb.write();
wwb.close();
response.reset();
response.setContentType("application/x-msdownload;charset=GBK");
response.setCharacterEncoding("UTF-8");
String docName=format1.format(date);
docName=docName+"出库导入日志.xls";
docName=java.net.URLEncoder.encode(docName,"UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" +new String(docName.getBytes("UTF-8"),"GBK"));
BufferedInputStream br = new BufferedInputStream(new FileInputStream(fileName));
byte[] buf = new byte[1024];
int len = 0;
OutputStream out = response.getOutputStream();
while((len = br.read(buf)) >0)
out.write(buf,0,len);
out.close();
br.close();
}
return null;
}
}
分享到:
相关推荐
《深入理解JSP SmartUpload上传下载机制》 在Web开发中,文件上传和下载功能是不可或缺的一部分,尤其是在处理用户交互和数据交换时。JSP SmartUpload是一个常用的Java库,专门用于处理文件上传任务,它简化了在JSP...
总结,`jspSmartUpload`为Java Web开发者提供了一个强大的工具,使他们能够方便地实现文件上传和下载功能。通过了解`SmartUpload`类的关键方法和使用示例,开发者可以更好地在项目中集成这个组件,提升用户体验,...
采用jspSmartUpload 组件实现的上传下载的完整实例 下载即可运行,但是这个压缩包不支持中文名称的文件下载功能,我上传了一个可以下载中文的不会乱码的jspSmartUpload 组件,网址:...
总之,使用jsp+jspsmartupload实现上传下载功能需要理解JSP的基础知识,熟悉SmartUpload组件的使用,以及掌握文件上传下载的基本原理。在实际开发中,还需要注意安全性、性能优化以及兼容性等问题。
jspsmartupload jsp smartupload 上传下载源代码及实例jspsmartupload jsp smartupload 上传下载源代码及实例
jspsmartupload是一款强大的JSP文件上传组件,能够帮助开发者处理用户通过表单提交的多个文件。以下是对这个技术栈的详细解析: 1. **JSP(JavaServer Pages)**:JSP是一种动态网页技术,它允许开发人员在HTML页面...
最近实验室做了一个项目,使用jspsmartupload来实现的文件的上传下载,原来在windows平台运行的挺好,但是后来系统移植到linux平台上,结果在上传或下载的文件名中有中文时就会出现乱码。后来查了网上一些人的解决...
**JSpsmartUpload上传下载实例详解** 在Web开发中,文件上传和下载功能是不可或缺的一部分。JSpsmartUpload是一款强大的Java Servlet组件,专门用于处理文件上传和下载的需求。本篇文章将深入探讨如何利用JSp...
### JspSmartUpload 实现图片上传的关键知识点 #### 一、概述 在Web开发中,文件上传是一项常见的功能需求,特别是在需要用户提交图片等多媒体文件的场景下。JspSmartUpload是一个基于Java的库,它提供了简单易用...
使用jspSmartUpload组件在jsp中实现上传和下载 在现代Web开发中,文件上传与下载是常见的需求之一,尤其在企业级应用、个人博客、图片分享等场景中尤为重要。jspSmartUpload作为一款专为JSP设计的文件上传组件,以...
**JSpsmartupload组件**是一个基于Java的上传文件解决方案,主要应用于JSP(Java Server Pages)环境中。这个组件提供了一种简单且强大的方式来处理用户通过网页上传的文件。在标题和描述中提到的,该组件的核心是用...
`jspSmartUpload`组件是Java Web开发中用于实现文件上传和下载功能的一款强大工具,尤其在基于JSP的B/S(Browser/Server)架构应用程序中,它以其便捷性和高效性受到开发者们的青睐。本篇文章将深入探讨`jsp...
`jspSmartUpload` 是一个在JSP(Java Server Pages)环境下广泛使用的上传下载组件,它基于Java技术,提供了强大的文件上传和下载功能。本文将深入探讨`jspSmartUpload`组件的工作原理、主要特性以及如何在实际项目...
jspSmartUpload 组件 源代码,并对源代码进行了修改,使其在下载中文文件时,不会出现乱码。使用方法参见http://blog.sina.com.cn/s/blog_4cc16fc50100bwby.html
`jspSmartUpload`是一个专为Java Servlets设计的开源组件,它简化了在JSP应用中处理文件上传的任务。这个工具允许用户通过Web浏览器方便地上传多个文件,并且提供了错误处理、进度显示等实用功能。 `jspSmartUpload...
提供的压缩包中的"jspSmartUpload上传下载组件及使用方法.rar"应该包含了完整的组件库和示例代码,帮助开发者快速理解和使用。而`.txt`文件则可能是详细的使用教程,包括步骤和注意事项。 通过深入学习和实践这些...
JSPSmartUpload组件,作为一个强大的工具,专为JSP页面设计,极大地简化了文件上传和下载的实现过程。本文将深入探讨JSPSmartUpload组件的工作原理、使用方法及其核心优势。 JSPSmartUpload组件是基于Java Servlet...
`jspSmartUpload.jar`是一个库文件,通常用于帮助开发者在JSP应用中实现文件上传功能。`.rar`文件是一种常见的压缩格式,意味着这个资源被压缩为了一个RAR文件,方便用户下载和存储。 【知识点详解】 1. **JSP...