package com.yc.servlet; import java.io.*; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.servlet.*; import javax.servlet.http.*; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest; import org.springframework.web.multipart.MultipartResolver; import org.springframework.web.multipart.commons.CommonsMultipartResolver; import com.jspsmart.upload.*; import com.jspsmart.upload.File; import com.yc.action.excel.Excel; import com.yc.factory.FactoryBean; import com.yc.service.dao.c_sys_cr_pageDao; import com.yc.service.impl.EnvHelper; import com.yc.service.impl.c_sys_cr_Parent; import com.yc.utils.SessionKey; import com.yc.ycenum.ExlsParam; public class ImportXlsUpload extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; private ServletConfig config; private c_sys_cr_pageDao cParent = new c_sys_cr_Parent(); long len = 0; /** * Init the servlet */ final public void init(ServletConfig config) throws ServletException { this.config = config; } final public ServletConfig getServletConfig() { return config; } /** * Handles GET requests */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } /** * Handles POST requests * 这个servlet已经不在用,调用最新的方法在com.yc.action.excel;的XlsDataImport方法 xin 2021-1-5 10:13:01 */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); PrintWriter out = response.getWriter(); // String dbId = (String) request.getSession().getAttribute(SessionKey.DATA_BASE_ID); // String path = ""; // String nameTime = ""; Map map = new HashMap();// 参数 // String cltCode = (String) // request.getSession().getAttribute((SessionKey.USERCODE)); try { // 2014-7-23 15:41:13 // SmartUpload upload = new SmartUpload(); // upload.initialize(request.getServletContext(), request, response); // upload.setAllowedFilesList("xls,xlsx"); // upload.upload(); // File file = upload.getFiles().getFile(0); // String fileName = file.getFileName();// 上传前的名称 // if (fileName.equals("")) { // out.println("{\"state\":0,\"info\":\"未选择导入数据\"}"); // return; // } MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext()); MultipartHttpServletRequest multipartRequest = resolver.resolveMultipart(request); MultipartFile filesFile=multipartRequest.getFile("file1"); // 加入时间的文件名称 // nameTime = fileName.replace(fileName.substring(0, fileName.lastIndexOf(".")), // new SimpleDateFormat("yyyyMMdd_HH_mm_ss").format(new Date())); // Request myRequest = upload.getRequest(); String formId = multipartRequest.getParameter("formid");// 功能号 String formType = multipartRequest.getParameter("formtype");// 窗体类型 String isDetailed=multipartRequest.getParameter("isDetailed");//是明细数据 // path = EnvHelper.getPath() + (new StringBuffer(ExlsParam.UP_PATH.getKey())).toString() // + java.io.File.separator + dbId + java.io.File.separator + formId + java.io.File.separator // + formType; // cParent.createFolder(path); // file.setFileName(nameTime); // upload.save(path); Excel excel = (Excel) FactoryBean.getBean("com.yc.action.excel.Excel"); // 是否为映射 0表示映射字段,1表示映射完进入导入状态。 int ismapping = Integer.parseInt(multipartRequest.getParameter("state")); //大改版 2019-10-30 16:23:21 if (ismapping == 0) {// 0表示映射Excel表 // excel.excelMapping(Integer.parseInt(formId),Integer.parseInt(formType),Integer.parseInt(isDetailed), request, response,filesFile); return; } // -----end String fileName=filesFile.getOriginalFilename(); String nameTime = new SimpleDateFormat("yyyyMMdd_HH_mm_ss").format(new Date())+fileName.substring(fileName.lastIndexOf(".")); map.put(ExlsParam.BEFORE_NAME.getKey(), fileName);// 上传时的文件名称 map.put(ExlsParam.FORM_ID.getKey(), formId);// 导入的功能号 map.put(ExlsParam.FORM_TYPE.getKey(), formType);// 导入的窗体类型 map.put(ExlsParam.END_NAME.getKey(), nameTime);// 导入后的文件名称(有时间在里面) map.put(ExlsParam.PARENT_ID.getKey(), multipartRequest.getParameter("pFrame"));// 网页上的父框架名 map.put(ExlsParam.TITLE_ROWS.getKey(), "1");// 默认忽略xls文件里面的第一行(第一行是字段名称可忽略只导入内容) map.put(ExlsParam.DOCCODE.getKey(), multipartRequest.getParameter("doccode"));// 导入的单号 map.put(ExlsParam.PANELTITLE.getKey(), multipartRequest.getParameter("panelTitle"));// 导入信息名称 map.put(ExlsParam.DETIAL_TABLE.getKey(),isDetailed);// 是明细数据 map.put(ExlsParam.XLS1.getKey(), multipartRequest.getParameter("xls1"));// 明细数据映射的设置 map.put(ExlsParam.XLS2.getKey(), multipartRequest.getParameter("xls2"));// 主数据映射的设置 // ----- // String s = excel.excelImport(request,response, map, filesFile); // 导入 // out.println("{\"state\":1,\"info\":\"" + s.replace("\"", "\\\"") + "\"}"); } catch (Exception e) { String error = (e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); error = (error != null && error.indexOf("1010") != -1 ? "请导入(.xls)或(.xlsx)后缀的文件。" : error); out.println("{\"state\":0,\"info\":\"" + error + "\"}"); } finally { // java.io.File file2 = new java.io.File(path + java.io.File.separator + nameTime); // file2.delete();// 删除已经数组化的文件 out.close(); out.flush(); } } }