`
huangyongxing310
  • 浏览: 494460 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

批量粘贴公用方法

 
阅读更多
//批量粘贴

	var columnData = [{
			excelIndex: 0,
			field: 'cityType',
			header: '城市类型'
		},
		{
			excelIndex: 1,
			field: 'cost',
			header: '费用标准'
		},
		{
			excelIndex: 2,
			field: 'startDate',
			header: '有效起始日期'
		}, {
			excelIndex: 3,
			field: 'endDate',
			header: '有效结束日期'
		}
	];

	var ImportPasteData = {
		columnData: columnData,
		saveUrl: '${importPasteSave}',
		downloadTemplateUrl: "<%=request.getContextPath()%>/userfiles/template/SalesCostStandardTemplate.xlsx"
	};


	function importPasteFun() {
		mini.open({
			url: '${CommonImportPaste}',
			title: '批量导入',
			width: 800,
			height: 600,
			onload: function() {
				var iframe = this.getIFrameEl();
				var data = ImportPasteData;
				iframe.contentWindow.SetData(data);
			},
			ondestroy: function(action) {
				grid.reload();
			}
		});
	}





<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<%
String contextPath = request.getContextPath();
String path = request.getContextPath();
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<title>excel导入</title>
		<script src="<%=request.getContextPath()%>/htwyRes/miniui/scripts/boot.js" type="text/javascript"></script>
		<link href="<%=request.getContextPath()%>/htwyRes/miniui/scripts/miniui/themes/blue2003/skin.css" rel="stylesheet"
		 type="text/css" />

		<script src="<%=request.getContextPath()%>/htwyRes/js/excelCopy.js" type="text/javascript"></script>
		<!--    <link href="<%=request.getContextPath() %>/htwyRes/haitian/css/main.css" rel="stylesheet" type="text/css"/>-->
		<script src="<%=request.getContextPath()%>/gaojinsoft/y2019/marketManage/commonJs.js" type="text/javascript"></script>

	</head>

	<!--<body style="background-color: #DEF0FE; height: auto;">-->
	<body style="height: auto;">
		<div>
			<p style="padding-top: 5px;">
				<a id="downloadTemplateBtn" class="mini-button" iconCls="icon-download" href="">下载模板</a>
				<a id="importPastePasteBtn" class="mini-button " iconCls="icon-download" onclick="importPastePasteFun(this)">粘贴</a>
				<a id="importPasteSubmitBtn" class="mini-button " iconCls="icon-upload" onclick="importPasteSubmitFun()">导入</a>
				<span style="color: red;">注:请在excel复制数据到此处粘贴进行导入</span>
			</p>
		</div>
		<!--<div class="mini-fit" style="height: 600px;">-->
		<div id="importPasteDataGrid" class="mini-datagrid" style="width:100%;height:500px;" allowSortColumn="false"
		 allowResize="true" showPager="false">
			<div property="columns">
				<div type="indexcolumn" width="30" headerAlign="center" align="center">序号</div>
				<!-- <div field="startDate" headerAlign="center" allowSort="true" align="center">活动开始时间(年月)
				</div>

				<div field="systemCode" headerAlign="center" allowSort="true" align="center">门店编码
				</div>

				<div field="setExpense" headerAlign="center" allowSort="true" align="center">陈列费
				</div>

				<div field="manExpense" headerAlign="center" allowSort="true" align="center">人员费
				</div>

				<div field="expenseSources" headerAlign="center" allowSort="true" align="center">费用来源
				</div> -->
			</div>
		</div>
		<!--</div>-->
	</body>
</html>
<script type="text/javascript">
	// uploadStorePaste


	var columnData = [];
	var saveUrl = '';
	var downloadTemplateUrl = "";
	// var columnData =[];

	function SetData(data) {
		commonConsole(data, "data");
		columnData = data.columnData;
		saveUrl = data.saveUrl;
		downloadTemplateUrl = data.downloadTemplateUrl;

		$("#downloadTemplateBtn").attr("href", downloadTemplateUrl);
		
		createGrid(columnData);
		
	}


	mini.parse();
	var grid = mini.get("importPasteDataGrid");

	// 	var columnData = [{
	// 		excelIndex: 0,
	// 		field: 'cityType',
	// 		header: '城市类型'
	// 	},
	// 	{
	// 		excelIndex: 1,
	// 		field: 'cost',
	// 		header: '费用标准'
	// 	},
	// 	{
	// 		excelIndex: 2,
	// 		field: 'startDate',
	// 		header: '有效起始日期'
	// 	},{
	// 		excelIndex: 3,
	// 		field: 'endDate',
	// 		header: '有效结束日期'
	// 	}];


	function createGrid(columnData) {
		var columns = [{
			type: "indexcolumn"
		}];

		for (var i = 0; i < columnData.length; i++) {
			var data = columnData[i];
			var temp = {};
			temp.field = data.field;
			temp.header = data.header;
			temp.headerAlign = "center";
			columns.push(temp);
		}

		grid.set({
			columns: columns
		});

		// grid.load();
	}


	//批量粘贴提交
	function importPasteSubmitFun() {
		var importPasteDataGrid = mini.get("importPasteDataGrid");
		var addedRows = importPasteDataGrid.getChanges('added', false); //获得新增行
		var modifiedRows = importPasteDataGrid.getChanges('modified', false); //获得修改行

		//ajax提交到后台
		var msgid = mini.loading("操作中,请稍后......");
		$.ajax({
			type: 'POST',
			url: saveUrl,
			dataType: 'json',
			data: {
				'addedRows': encodeURIComponent(mini.encode(addedRows)),
				'modifiedRows': encodeURIComponent(mini
					.encode(modifiedRows))
			},
			success: function(result) {
				if (result.flag) {
					mini.alert("保存成功!", "提示");
				} else {
					mini.alert("保存失败!" + result.msg, "提示");
				}
				mini.hideMessageBox(msgid);
			},
			error: function(jqXHR, textStatus, errorThrown) {
				mini.hideMessageBox(msgid);
				mini.alert("保存失败!", "提示");
			}
		});
	}

	//批量复制(IE)
	function importPastePasteFun(obj) {
		var eData = getExcelData();
		if (!(excelData instanceof Array)) {
			alert("请在表格空白处使用Ctrl+v进行粘贴!");
		} else {
			pasttoGrid(eData)
		}
	}

	//复制到grid(chrome)
	function pasttoGrid(content) {

		// if(compatibleBrowser()==true){
		//     // mini.alert("compatibleBrowser()==true", "提示");
		//     var focusedElement = document.activeElement;
		//     if(!(focusedElement.id=='datagrid1' || focusedElement.tagName=='BODY')){
		//         return;
		//     }
		// }


		console.info("content length == " + content.length)
		var rowLen = content.length;

		var importPasteDataGrid = mini.get("importPasteDataGrid");

		//------------------
		var newRowArray = [];
		for (var i = (rowLen - 1); i >= 0; i--) {
			var str = content[i];
			var strArray = str.split("\t");

			var newRow = {};
			//----------

			// columnData
			for (var j = 0; j < columnData.length; j++) {
				newRow[columnData[j].field] = strArray[j];
			}

			// 			newRow.startDate = strArray[0];
			// 			newRow.systemCode = strArray[1];
			// 			newRow.setExpense = strArray[2];
			// 			newRow.manExpense = strArray[3];
			// 			newRow.expenseSources = strArray[4];

			//-----------
			newRowArray.push(newRow);
		}


		// //------------------数据检验
		// for (var i =  0 ; i<newRowArray.length; i++) {
		//     if(!newRowArray[i].userName){
		//         mini.alert("帐号不能为空!", "提示");
		//         return;
		//     }
		//
		//     if(!newRowArray[i].areaId){
		//         mini.alert("权限架构ID为空!", "提示");
		//         return;
		//     }
		//
		//     //console.info(typeof(newRowArray[i].areaId) )
		//
		//     //if(!typeof(newRowArray[i].areaId)=="number"){
		//     //	 	mini.alert("权限架构ID要求为数字!", "提示");
		//     //	 	return;
		//     //}
		//
		//
		// }

		//------------------
		for (var i = 0; i < newRowArray.length; i++) {
			//-----------
			importPasteDataGrid.addRow(newRowArray[i], 0);
		}
		//------------------

		importPasteDataGrid.commitEdit(); //提交所有行编辑。
	}
</script>







@Override
	public void importPasteSave(SalesCostStandardAction action) throws Exception {
//		User user = new UserUtil(ServletActionContext.getRequest())
//				.getCurrentUser();
//		Timestamp nowtime = new Timestamp(System.currentTimeMillis());
		String message = "";
		Map<String, Object> result = new HashMap<String, Object>();
		String jsonResult = "";

		// -----------------
		String addRows = URLDecoder.decode(action.getAddedRows(), "utf-8");// 新增的
//		String modefinedRows = URLDecoder.decode(action.get, "utf-8");// 修改的
		JSONDeserializer<List<Map>> list = new JSONDeserializer<List<Map>>();
		List<Map> addMapList = list.deserialize(addRows);

		List<Map> dataList = addMapList;

		User user = new UserUtil(ServletActionContext.getRequest()).getCurrentUser();
		Timestamp nowTime = new Timestamp(new Date().getTime());
//
		String userId = user.getUserId();
		String userName = user.getName();

		if (dataList != null) {
			if (dataList.size() > 501) {
				String msg = "单次导入不能超过500条数据";
				result.put("flag", false);
				result.put("msg", msg);
				jsonResult = Json.Encode(result);
				action.setAjaxOutData(new ByteArrayInputStream(jsonResult.getBytes("utf-8")));
				return;
			}

		} else {
			String msg = "无导入数据";
			result.put("flag", false);
			result.put("msg", msg);
			jsonResult = Json.Encode(result);
			action.setAjaxOutData(new ByteArrayInputStream(jsonResult.getBytes("utf-8")));
			return;
		}

		boolean flag = true;
		Session session = manageServ.getCommonServ1().getCommonDao().getSessionFactory().openSession();
		Transaction tx = session.beginTransaction();

		try {

			for (int i = 0; i < dataList.size(); i++) {

				Map dataMap = dataList.get(i);

				String cityType = CommonManage.toNotNullString(dataMap.get("cityType"));
				String cost = CommonManage.toNotNullString(dataMap.get("cost"));
//						String startDate = CommonManage.toNotNullString(dataarray.get("startDate"));
//						String endDate = CommonManage.toNotNullString(dataarray.get("endDate"));

				SalesCostStandard SalesCostStandard = new SalesCostStandard();
				SalesCostStandard.setCityType(cityType);
				SalesCostStandard.setCost(cost);
//						SalesCostStandard.setStartDate(startDate);
//						SalesCostStandard.setEndDate(endDate);

				if (CommonManage.toNotNullString(dataMap.get("startDate")).equals("")) {
					SalesCostStandard.setStartDate(DateUtils.convertStringToTimestamp("2000-01-01", DateUtils.FORMAT2));
				} else {
					SalesCostStandard.setStartDate(
							DateUtils.convertStringToTimestamp(CommonManage.toNotNullString(dataMap.get("startDate")) + "", DateUtils.FORMAT2));
				}

				if (CommonManage.toNotNullString(dataMap.get("endDate")).equals("")) {
					SalesCostStandard.setEndDate(DateUtils.convertStringToTimestamp("9999-01-01", DateUtils.FORMAT2));
				} else {
					SalesCostStandard.setEndDate(
							DateUtils.convertStringToTimestamp(CommonManage.toNotNullString(dataMap.get("endDate")) + "", DateUtils.FORMAT2));
				}

				session.save(SalesCostStandard);
				
				

			}
			
			session.flush();
			tx.commit();
			
			result.put("flag", true);
//			result.put("msg", e.getMessage());
			action.setAjaxOutData(new ByteArrayInputStream(Json.Encode(result).getBytes("utf-8")));
			return;
			
			
		} catch (Exception e) {
			tx.rollback();
			e.printStackTrace();
			// --------
			result.put("flag", false);
			result.put("msg", e.getMessage());
			action.setAjaxOutData(new ByteArrayInputStream(Json.Encode(result).getBytes("utf-8")));
			return;
		} finally {
			session.close();
		}

	}







/**
 * 从exportOrderDeatil抽取公共函数用作粘贴板内容的复制粘贴
 * 
 * @param str{String}
 *            clipboardData.getData("Text")
 * @return Array 1000行以内的excel数组
 * @author Leo
 * @since 201904
 */

var excelData;
var arrMaxLength = 1000;

$(function() {
	var body = $(document.body);
	if (body) {
		body.bind({
			paste : function(e) {
				var clipboardData = window.clipboardData; // IE
				if (!clipboardData) { // chrome
					clipboardData = e.originalEvent.clipboardData
				}
				if (!(clipboardData && clipboardData.items)) {
					return;
				}
				excelData = clipboardData.getData("Text");
				var eData = getExcelData();
				// 如果没有这个方法就报错
				try {
					if (excelData instanceof Array) {
						if(eData && eData.length > 0) {
							window.pasttoGrid(eData);
							
						}
					} else {
						alert(eData);
					}
				} catch (e) {
					console.log(e);
				}
			}
		});
	} else {
		console.log("缺少body元素,请重写。");
	}
});

/**
 * 
 * @returns 1000行以内的二维数组
 */
function getExcelData() {
	var isIE = !compatibleBrowser();
	if (isIE) {
		excelData = clipboardData.getData('text');
	}

	if (excelData) {
		var newArr = [];

		if (typeof excelData === "string") {
			newArr = excelData.split("\n");
			if (newArr.length < 0) {
				return "复制内容空白!";
			}

			for (i = 0; i < newArr.length; i++) {
				var item = newArr[i];
				newArr[i] = item.replace(/\"/g, "").replace(/(^\s*)/g, "")
						.replace(/(\s*$)/g, "");
			}
			excelData = newArr.slice(0, newArr.length - 1);
		}

		if (excelData instanceof Array) {
			if (excelData.length > arrMaxLength) {
				var newArr = excelData.slice(0, arrMaxLength);
				excelData = newArr;
			}
		}

		return excelData;
	} else {
		if (isIE) {
			return "没有获取到内容!";
		} else {
			return "非IE浏览器请先按键盘“Ctrl + V”";
		}
	}
}

function getFirstColumnArray(arr) {
	var newArr = [];
	if (arr) {
		newArr = new Array(arr.length);
		for (i = 0; i < arr.length; i++) {
			var itemArr = arr[i].split(/\s+/);
			if (itemArr != null && itemArr.length > 0) {
				newArr[i] = itemArr[0];
			} else {
				newArr[i] = "";
			}
		}
	}
	return newArr;
}

function compatibleBrowser() {
	var userAgent = window.navigator.userAgent;
	if (userAgent.indexOf("Chrome") > -1 || userAgent.indexOf("Firefox") > -1
			|| userAgent.indexOf("Opera") > -1) {
		return true;
	} else {
		return false;
	}
}












分享到:
评论

相关推荐

    实现网页表格输入框批量粘贴

    网页表格批量粘贴功能是网页开发中的一个实用技巧,它允许用户从Excel或其他来源复制数据,然后一键粘贴到网页的表格中,极大地提高了数据录入的效率。在本实例中,我们将探讨如何利用JavaScript实现这一功能,特别...

    批量自动粘贴

    批量自动粘贴

    在Excel中批量粘贴附件的插件.

    用于在Excel中批量粘贴大量附件的插件。在英文版Excel 2010/2013/2016 测试通过。 安装: 1. 将 .xlam 文件复制到 excel add-in 目录 (默认在 C:\Users\&lt;uid&gt;\AppData\Roaming\Microsoft\AddIns\); 2. 打开 excel, ...

    EXCEL vba 批量复制粘贴至指定位置脚本文件

    在Excel VBA(Visual Basic for Applications)中,批量复制和粘贴至指定位置是一项非常实用的技巧,尤其在处理大量数据时能显著提高工作效率。VBA是Microsoft Office套件中的编程环境,允许用户通过编写宏或自定义...

    批量复制粘贴工具.exe

    一次复制多行,实现快速粘贴 支持文件拖动,自定义分割符号,默认为换行分割 支持右键菜单功能;快速打开文件,清空内容

    Winform中实现文件批量复制示例代码

    在Windows Forms(Winform)应用开发中,常常需要实现文件或文件夹的批量复制功能,尤其是在数据迁移、备份等场景下。本示例代码将详细讲解如何使用C#语言在Winform环境中实现这一功能。 首先,我们需要理解C#的...

    批量粘贴神器 支持带格式文本、图片以及文件操作 功能强大!

    本工具可以将预先收集的数据,按指定顺序快速粘贴到指定软件中,每粘贴完一项数据软件会自动跳到下一项数据并复制到剪贴板中,而我们只需要完成粘贴操作即可。可以节省了反复切换软件、反复 Ctrl + C与Ctrl + V的...

    破解批改网不能粘贴的方法.pdf

    破解批改网不能粘贴的方法 在今天的数字化时代,随着网络技术的发展,考试和作业的方式也在不断演变。许多教育机构和考试平台开始使用批改网来防止学生作弊和抄袭,例如禁止粘贴的功能。但是,这也引起了学生和考试...

    自动办公-35 Python从Excel表中批量复制粘贴数据到新表

    本主题将深入探讨如何利用Python从Excel表格中批量复制并粘贴数据到新的工作表,提高办公自动化水平。 首先,我们需要了解的关键知识点是Python的pandas库,它是用于数据分析的强大工具。pandas提供了DataFrame对象...

    剪切板资源捕获器,可批量粘贴不同数据,电脑软件

    如链接、文本内容,链接可按指定筛选规则进行过滤筛选,可以设置成监听模式,在剪切板内容改变时自动捕获,可以捕获网页中的图片、视频、音乐等资源的链接地址,可以截取剪切板中指定的数据,还提供了批量数据粘贴的...

    粘贴word文档到富文本

    基于kindeditor实现批量粘贴word文档中的图文到富文本中,不过该实现需要基于第三方控件配合前段代码实现

    ARCGIS批量导入属性内容

    标题“ARCGIS批量导入属性内容”所涉及的知识点主要包括在ARCGIS软件中批量导入属性表数据的操作方法,这一过程的目的是为了将大量属性信息快捷、方便、省事地导入到ARCGIS的属性表中,并且尽量减少错误。...

    Python 自动办公- Python从Excel表中批量复制粘贴数据到新表 Python源码

    Python 自动办公- Python从Excel表中批量复制粘贴数据到新表 Python源码Python 自动办公- Python从Excel表中批量复制粘贴数据到新表 Python源码Python 自动办公- Python从Excel表中批量复制粘贴数据到新表 Python...

    复制excel内容粘贴到html表格中的输入框里

    实现将复制的excel的内容粘贴到html 表格的输入框中的功能

    C# 系统粘贴板 复制/粘贴 自定义对象

    本教程将详细讲解如何利用C#实现自定义对象的复制和粘贴,包括三种不同的方法:直接使用自定义对象、借助声音文件以及序列化后通过内存流操作。 首先,让我们探讨直接使用自定义对象复制粘贴的方法。在C#中,我们...

    F11粘贴、密码复制粘贴好用

    标题中的"F11粘贴"指的是在某些软件或操作系统中,使用F11快捷键进行内容的快速粘贴功能。这种功能通常是针对程序员、文本编辑者等用户设计的,为了提高他们的工作效率。在某些特定环境下,例如编程环境中,F11可能...

    一键复制粘贴工具V2.0.rar

    这款工具的核心功能在于批量复制和批量粘贴,对于需要在多个位置输入相同内容或者快速复制多行数据的情况,它提供了一种便捷的解决方案。 在IT行业中,尤其是在数据录入、数据分析、编程开发等领域,频繁的复制粘贴...

    python实现批量处理将图片粘贴到另一张图片上并保存

    在本文中,我们将探讨如何使用Python的Pillow库来实现批量处理图片,将一张图片粘贴到另一张图片上,并将结果保存。Pillow库是Python的一个强大的图像处理库,它提供了丰富的图像处理功能,包括读取、操作和保存各种...

    js excel 批量复制数据到 html

    本教程将详细介绍如何使用JavaScript(js)实现从Excel文档批量复制数据并粘贴到HTML表格(table)中的技术。这一功能对于数据处理、报表展示以及用户交互等方面具有很高的实用价值。 首先,我们要明白JavaScript...

    untiy webgl输入中文和复制粘贴 使用方法见https://blog.csdn.net/weixin_44568736/

    untiy webgl输入中文和复制粘贴 使用方法见https://blog.csdn.net/weixin_44568736/

Global site tag (gtag.js) - Google Analytics