`
wanghaopk
  • 浏览: 48592 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java web 上传exls 并解析到数据库

    博客分类:
  • java
 
阅读更多
package com.sml.eplatform.admin.ui.action;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
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 com.sml.eplatform.admin.mdl.User;
import com.sml.eplatform.admin.util.AuditLogHelper;
import com.sml.eplatform.admin.util.EncryptionUtil;
import com.sml.eplatform.admin.util.ImportAWIUserAccountUtil;
import com.sml.eplatform.admin.util.ImportExternalUserUtil;
import com.sml.eplatform.base.dao.DbManager;
import com.sml.eplatform.common.util.ExcelUtil;
import com.sml.eplatform.common.util.JsonString;
import com.sml.eplatform.common.util.StringUtils;

public class ImportUserAccountAction extends Action {

	private final static String[] exlColumnTtile = new String[]{
		"loginId", "userName", "passWord", "defaultLanguage", "phoneNumber", "email",
		"companyAcountLoginId"};

	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws IOException, Exception {
		request.setCharacterEncoding("UTF-8");
		try {
			User user = AdminSessionHelper.getUser(request);
			Map<String, Object> result = new HashMap<String, Object>();
			FileItemFactory factory = new DiskFileItemFactory();
			ServletFileUpload upload = new ServletFileUpload(factory);
			List item = upload.parseRequest(request);
			Iterator it = item.iterator();
			FileItem fileItem = (FileItem) it.next();
			InputStream in = fileItem.getInputStream();
            String message = importUserAccount(in);
            System.out.println("Excel Error Message: "+message);
            result.put("result", message);
            AuditLogHelper.log(user, AuditLogHelper.CREATE,
    				"Import User Account User", user.getUserName(), user
    						.getIpAddress());
    		JsonString.writeJsonString(response, result);
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return null;
	}

	public String importUserAccount(InputStream in){
		String errorMsg = null;
		List<Map> list = new ArrayList<Map>();
		errorMsg = readExcelRowColumn(in,list);
		if (errorMsg != null) {
			return errorMsg;
		}
		insertUserProperty(list);
		return null;
	}

	private String readExcelRowColumn(InputStream in, List<Map> list) {
		Workbook workbook = null;
		try {
			workbook = Workbook.getWorkbook(in);
			Sheet sheet = workbook.getSheet(0);
			int excelRecordCount = ExcelUtil.getRightRows(sheet);
			if (excelRecordCount <= 1) {
				return "The excel is empty, please check.";
			}
			Cell[] cellHead = sheet.getRow(0);
			Map<String, Integer> headMap = new HashMap<String, Integer>();
			String errorMsg = ExcelUtil.checkColumnTitle(cellHead, headMap, exlColumnTtile);
			if (errorMsg != null && !"".equals(errorMsg)) {
				return errorMsg;
			}
			for (int i = 1; i < excelRecordCount; i++) {
				Map<String, String> map = new HashMap<String, String>();
				for (String columnValue : exlColumnTtile) {
					String exlContent = sheet.getCell(headMap.get(columnValue), i).getContents();
					map.put(columnValue, exlContent.trim());
				}
				list.add(map);
			}

		} catch (Exception ex) {
			ex.printStackTrace();
		} finally {
			try {
				workbook.close();
				in.close();
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		}
		return null;
	}

	private void insertUserProperty(List<Map> list) {
		DbManager dbManager = DbManager.getInstance();
		Connection conn = null;
		Statement st = null;
		try {
			conn = dbManager.getEplatformConnection();
			conn.setAutoCommit(false);
			st = conn.createStatement();
			for (Map<String, String> map : list) {
				String loginId = map.get("loginId");
				String userName = map.get("userName");
				String passWord = EncryptionUtil.encryption(map.get("passWord"));
				String defaultLanguage = map.get("defaultLanguage");
				String phoneNumber = map.get("phoneNumber");
				String email = map.get("email");
				String companyAcountLoginId = map.get("companyAcountLoginId");
				st.addBatch("INSERT INTO ep_importing_user_account(login_id,user_name,password,default_language,phone_number,email,company_acount_login_id,error_msg)"
						+" VALUES ('"+loginId+"','"+userName+"','"+passWord+"','"+defaultLanguage+"','"+phoneNumber+"','"+email+"','"+companyAcountLoginId+"','')");
			}
            st.executeBatch();
            conn.commit();
		} catch (Throwable ex) {
			dbManager.rollbackQuietly(conn);
			ex.printStackTrace();
		} finally {
			dbManager.close(conn, st, null);
		}
	}
}

 

分享到:
评论

相关推荐

    exls导入到mysql类

    标题中的“exls导入到mysql类”指的是将Excel(通常拼写为Excel,可能是输入错误)数据导入到MySQL数据库的过程。这是一个常见的数据处理任务,特别是在数据分析、报表生成或系统集成等场景中。以下是对这个主题的...

    搭建springboot 解析exls及生成exls的demo

    在本文中,我们将深入探讨如何使用SpringBoot框架搭建一个能够解析Excel文件并生成Excel文件的示例项目。SpringBoot以其简化Java应用开发的特性,使得处理Excel数据变得更加便捷。我们将主要涉及以下几个知识点: 1...

    WInform 程序 将Excel导入SQLSERVER数据库

    开发者可以使用WinForm来设计图形化界面,与用户交互,并通过此界面与后台数据库进行数据操作。 现在,我们来讨论如何使用WInform程序将Excel数据导入SQL Server: 1. **创建WinForm项目**:首先,你需要在Visual ...

    exls导入导出

    "exls导入导出"这个主题涉及到如何将外部数据引入Excel表格,以及如何将Excel中的数据导出到其他应用程序或文件格式。下面将详细讲解这个知识点。 **一、Excel数据导入** 1. **文本文件导入**:Excel支持导入多种...

    POI3.8读取Exls2003_2007实例代码及JAR包

    在给定的压缩包中,`readExcel2003.jsp`和`readExcel2007.jsp`应该是两个JavaServer Pages(JSP)文件,它们分别展示了如何在Web应用中使用上述Java代码读取Excel文件。`说明.txt`可能包含了对这些示例的解释或使用...

    exel文档上传

    10. **Web应用集成**:如果是在Web应用中上传Excel,开发者需要了解如何在前端捕获文件,使用FormData对象发送文件,并在后端处理接收到的文件内容。 通过掌握以上知识点,我们可以高效且安全地完成Excel文档的上传...

    开发app上传文件、图片、xls、exls等等

    综上所述,开发一个支持多种文件类型上传的APP涉及多个技术环节,从客户端的UI交互到服务器端的接口设计,再到数据传输的安全和用户体验,每一个环节都需要精心设计和实现。开发者需要具备扎实的前端和后端技术,...

    TL431 计算器 EXLS版

    设计计算电路中的 431外围元件 参数 很方便的

    水平仪测试直线度计算exls

    水平仪测试直线度计算exls

    php个人博客源代码

    在“Exls表”可能是笔误,应该是“Excel表”,可能用于描述代码结构或者数据库设计。而“blog.sql”文件是数据库样本数据,可以导入到MySQL数据库中,通过phpmyadmin这样的工具执行SQL语句,快速填充博客系统所需的...

    C# excel文件导入sqlserver

    本项目涉及的知识点是使用C#将Excel文件的数据高效地导入到SQL Server数据库中。这种操作在数据迁移、数据分析和批量处理场景中非常常见。 首先,我们需要了解C#与Excel交互的基本方式。在C#中,可以使用Microsoft....

    c# office编程之pdf word Exls篇

    总的来说,C# Office编程涵盖了广泛的领域,从基本的文件操作到复杂的文档处理和界面集成。了解并熟练掌握这些技能对于开发桌面应用程序,特别是在企业环境中处理数据报告和文档管理,至关重要。开发者需要熟悉各种...

    office 密码破译器

    用于破译office文档密码, office密码 word密码 exls密码 ppt密码,均可破译,密码越复杂,破解时间越长,

    2022年最新全国18万个旅游景点数据

    可用于数据分析,数据为EXLS格式,可转换为shp格式、kml格式。 包含A级景区,2A级景区,3A级景区,4A级景区,5A级景区。 注意:18玩个旅游景点有很多同一地点重复的,需要删除。 黑龙江省、辽宁省、吉林省、河北省...

    让table变成exls的示例代码

    这个过程通常涉及到前端技术,如JavaScript或jQuery,用于动态地将表格数据导出并提供下载为Excel文件的选项。描述提到的是一个示例代码,它是一个网页上的HTML表格,用户可以通过参考这个示例将表格数据保存为Excel...

    Excel模板兼职工作履历表.zip

    6. **参考人**:提供一到两个可以为你的能力和工作表现背书的人的联系信息,但确保事先征得他们的同意。 在Excel中,可以通过合并单元格、调整列宽、应用不同的字体和颜色来美化履历表,使其更具吸引力。同时,利用...

    Excel文件

    - **读取数据**: 通常,我们会遍历所有行和单元格,读取数据并存储到合适的数据结构中,如List或Map。 - **写入数据**: 可以先构建好数据结构,然后根据需要填充到Excel的工作表中。 - **高级功能**: 包括处理...

    读取文件夹及文件的权限

    读取文件夹及文件所有安全权限 ,可把所以文件夹内的权限导入EXLS 或TXT文件中

    TC358764_5_774_5XBG_DSI-LVDS_Tv13p_G101ICE_1280x800_20201215.tar.xz

    东芝 TC358764 timing exls

Global site tag (gtag.js) - Google Analytics