客户端对象模型之Excel数据导入到列表
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="jquery-1.6.2.min.js"></script>
<script type="text/javascript">
$(function () {
$("#importbutton").attr("disabled", "disabled");
ExecuteOrDelayUntilScriptLoaded(SearchExist, 'sp.js');
}) function SearchExist(itemId) {
var projectId = getQueryString('ProjectID');
if (projectId == null || projectId == 'null' || projectId == '') {
alert("请通过项目信息来导入工作项!");
return;
}
var siteUrl = _spPageContextInfo.webServerRelativeUrl;
clientContext = new SP.ClientContext(siteUrl);
oList = clientContext.get_web().get_lists().getByTitle('项目工作项');
var camlQuery = new SP.CamlQuery();
camlQuery.set_viewXml(
'<View><Query>' +
'<Where>' +
'<Eq>' +
'<FieldRef Name=\'Project\' LookupId=\'TRUE\'/><Value Type=\'Lookup\'>' + projectId + '</Value>' +
'</Eq>' +
'</Where></Query>' +
'</View>'
); this.collListItem = oList.getItems(camlQuery);
clientContext.load(collListItem);
clientContext.executeQueryAsync(
Function.createDelegate(this, this.onSearchQuerySucceeded),
Function.createDelegate(this, this.onSearchQueryFailed)
);
} function waring() {
var filePath = $('input[type=file]').val();
if (filePath == "") {
alert('请先上传文件');
return;
}
var fileText = filePath.substring(filePath.lastIndexOf("."), filePath.length);
var fileName = fileText.toLowerCase();
if ((fileName != '.xls')) {
alert("对不起,系统仅支持上传97-2003格式的Excel文档");
return;
}
else {
$("#importbutton").attr("disabled", "disabled");
getCount(filePath);
}
}
function getCount(filePath) {
var rs = null;
var cn = null;
try {
cn = new ActiveXObject("ADODB.Connection");
var strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + filePath + ";Persist Security Info=False;Extended Properties=Excel 8.0;"
cn.Open(strConn);
rs = new ActiveXObject("ADODB.Recordset");
var SQL = "select * from [Sheet1$]";
rs.Open(SQL, cn);
if (rs.bof) {
alert('没有可用的数据');
$("#importbutton").removeAttr("disabled");
return;
}
}
catch (e) {
alert("请确保是97-2003的Excel文档,并且已将本站点添加到ie的信任站点中,启用所有的ActiveX的安全设置。");
$("#importbutton").removeAttr("disabled");
return; } if (!rs.bof) { importdata = new Map();
hasrundata = new Array();
datarelationship = new Map();
dictionary = new Map();
errorlog = new Map();
total = 0;
$("#importLog").html("");
rs.MoveFirst()
while (!rs.eof) {
var task = new Array();
var title = rs.fields(0).value.trim();
if (title != null && title != 'null' && title != '') {
total++;
for (var i = 0; i != rs.fields.count; ++i) {
try {
task[i] = rs.fields(i).value.trim();
} catch (e) {
task[i] = rs.fields(i).value;
}
}
if (!dictionary.ContainsKey(title) && !existData.ContainsKey(title)) {
dictionary.set(title, task);
}
else {
var messagespan = document.createElement("span");
$(messagespan).html("工作项[<span style='font-weight:bold;'>" + title + '</span>]名称重复,取消导入');
$(messagespan).addClass("spanerror");
var br = document.createElement("br");
$(messagespan).appendTo($("#importLog"));
$(br).appendTo($("#importLog"));
}
}
rs.MoveNext();
}
}
rs.Close();
cn.Close();
success = 0;
error = 0;
$("#importLog").html();
for (var i = 0; i < dictionary.size() ; i++) {
var arr = dictionary.get(dictionary.keys[i]);
dataAnalysis(dictionary.keys[i], arr);
}
setTimeout(setsummarymessage, 3000);
}
function dataAnalysis(title, arr) {
title = title.trim();
if (arr != null && arr != '' && arr != 'null')//说明用户的Excel中是存在这个任务的
{
if (title == arr[4] || title == arr[5]) {
GetErrors(title);
return;
}
if (!checktasktitleran(title)) {
//当条目的父级任务和前置任务都为空的时候,直接将条目加到新的集合中
if ((arr[4] == null || arr[4] == '' || arr[4] == 'null') && (arr[5] == null || arr[5] == '' || arr[5] == 'null')) {
hasrundata[hasrundata.length] = title;
createListItem(arr);
}//前置任务为空,父级任务不为空的时候
else if ((arr[4] == null || arr[4] == '' || arr[4] == 'null') && (arr[5] != null && arr[5] != '' && arr[5] != 'null')) {
if (datarelationship.ContainsKey(arr[5])) {
var backdata = datarelationship.get(arr[5]);
if (!backdata.ContainsKey(title)) {
backdata.set(title, title);
datarelationship.set(arr[5], backdata);
}
}
else {
var backdata = new Map();
backdata.set(title, title);
datarelationship.set(arr[5], backdata);
}
if (!existData.ContainsKey(arr[5])) {
if (!dictionary.ContainsKey(arr[5])) {
GetErrors(title);
}
if (errorlog.ContainsKey(arr[5])) {
GetErrors(title);
}
}
else {
hasrundata[hasrundata.length] = title;
createListItem(arr);
}
}//父级任务任务为空,前置任务不为空的时候
else if ((arr[5] == null || arr[5] == '' || arr[5] == 'null') && (arr[4] != null && arr[4] != '' && arr[4] != 'null')) {
if (datarelationship.ContainsKey(arr[4])) {
var backdata = datarelationship.get(arr[4]);
if (!backdata.ContainsKey(title)) {
backdata.set(title, title);
datarelationship.set(arr[4], backdata);
}
}
else {
var backdata = new Map();
backdata.set(title, title);
datarelationship.set(arr[4], backdata);
}
if (!existData.ContainsKey(arr[4])) {
if (!dictionary.ContainsKey(arr[4])) {
GetErrors(title);
}
if (errorlog.ContainsKey(arr[4])) {
GetErrors(title);
} }
else {
hasrundata[hasrundata.length] = title;
createListItem(arr);
}
}//父级任务和前置任务都不为空的时候
else if ((arr[5] != null && arr[5] != '' && arr[5] != 'null') && (arr[4] != null && arr[4] != '' && arr[4] != 'null')) {
if (datarelationship.ContainsKey(arr[4])) {
var backdata = datarelationship.get(arr[4]);
if (!backdata.ContainsKey(title)) {
backdata.set(title, title);
datarelationship.set(arr[4], backdata);
}
}
else {
var backdata = new Map();
backdata.set(title, title);
datarelationship.set(arr[4], backdata);
}
if (datarelationship.ContainsKey(arr[5])) {
var backdata = datarelationship.get(arr[5]);
if (!backdata.ContainsKey(title)) {
backdata.set(title, title);
datarelationship.set(arr[5], backdata);
}
}
else {
var backdata = new Map();
backdata.set(title, title);
datarelationship.set(arr[5], backdata);
}
if (existData.ContainsKey(arr[4]) && existData.ContainsKey(arr[5])) {
hasrundata[hasrundata.length] = title;
createListItem(arr);
}
else {
var flagtemp = false;
var flagtemp1 = false;
if (!existData.ContainsKey(arr[4])) {
if (!dictionary.ContainsKey(arr[4])) {
flagtemp = true;
}
if (errorlog.ContainsKey(arr[4])) {
flagtemp1 = true;
}
}
if (!existData.ContainsKey(arr[5])) {
if (!dictionary.ContainsKey(arr[5])) {
flagtemp = true;
}
if (errorlog.ContainsKey(arr[5])) {
flagtemp1 = true;
} }
if (flagtemp) {
GetErrors(title);
}
if (flagtemp1) {
GetErrors(title);
}
}
}
} }
}
function GetErrors(errortitle) {
if (!errorlog.ContainsKey(errortitle)) {
var messagespan = document.createElement("span");
$(messagespan).html("工作项[<span style='font-weight:bold;'>" + errortitle + '</span>]导入失败');
$(messagespan).addClass("spanerror");
var br = document.createElement("br");
$(messagespan).appendTo($("#importLog"));
$(br).appendTo($("#importLog"));
error++;
errorlog.set(errortitle, 1);
}
if (datarelationship.ContainsKey(errortitle)) {
var backdata = datarelationship.get(errortitle);
for (var i = 0; i < backdata.size() ; i++) {
GetErrors(backdata.keys[i]);
}
}
}
function checktasktitleran(tasktitle) {
for (var i = 0; i < hasrundata.length; i++) {
if (hasrundata[i] == tasktitle) {
return true;
}
}
return false;
}
function createListItem(task) {
var itemCreateInfo = new SP.ListItemCreationInformation();
var oListItem = oList.addItem(itemCreateInfo);
oListItem.set_item('Title', task[0].trim());
var startdate = new Date(task[1]);
var enddate = new Date(task[2]);
if (startdate > enddate) {
GetErrors(task[0].trim());
return;
}
oListItem.set_item('StartDate', startdate.getFullYear() + '/' + (startdate.getMonth() + 1) + '/' + startdate.getDate());
oListItem.set_item('DueDate', enddate.getFullYear() + '/' + (enddate.getMonth() + 1) + '/' + enddate.getDate()); var users = new Array();
users.push(SP.FieldUserValue.fromUser(task[3]));
oListItem.set_item('AssignedTo', users);
if (task[4] != null && task[4] != '' && task[4] != 'null') {
if (existData.ContainsKey(task[4])) {
oListItem.set_item('ParentTask', existData.get(task[4]));
oListItem.set_item('ParentID', existData.get(task[4]));
}
else {
var parentarr = dictionary.get(task[4]);
dataAnalysis(task[4], parentarr);
return;
}
}
if (task[5] != null && task[5] != '' && task[5] != 'null') {
if (existData.ContainsKey(task[5])) {
oListItem.set_item('Predecessors', existData.get(task[5]));
}
else {
var parentarr = dictionary.get(task[5]);
dataAnalysis(task[5], parentarr);
return;
}
}
oListItem.set_item('RelationshipType', task[6]);
oListItem.set_item('Project', getQueryString('projectId'));
oListItem.set_item('Status', task[7]);
oListItem.set_item('TaskLevel', task[8]);
if (!existData.ContainsKey(task[0].trim())) {
oListItem.update();
clientContext.load(oListItem);
clientContext.executeQueryAsync(
function () {
var Title = oListItem.get_item('Title');
if (!existData.ContainsKey(Title)) {
existData.set(Title, oListItem.get_id());
}
var messagespan = document.createElement("span");
$(messagespan).html("工作项[<span style='font-weight:bold;'>" + Title + '</span>]导入成功');
$(messagespan).addClass("spansuccess");
var br = document.createElement("br");
$(messagespan).appendTo($("#importLog"));
$(br).appendTo($("#importLog"));
success++;
if (datarelationship.ContainsKey(Title)) {
var backdata = datarelationship.get(Title);
for (var i = 0; i < backdata.size() ; i++) {
if (!importdata.ContainsKey(backdata.keys[i])) {
var childtitle = backdata.get(backdata.keys[i]);
var arr = dictionary.get(childtitle);
dataAnalysis(backdata.keys[i], arr);
}
}
}
},
function () {
var Title = oListItem.get_item('Title'); GetErrors(Title);
});
}
} function Map() {
this.keys = new Array();
this.data = new Array();
//添加键值对
this.set = function (key, value) {
if (this.data[key] == null) {//如键不存在则身【键】数组添加键名
this.keys.push(key);
}
this.data[key] = value;//给键赋值
};
//获取键对应的值
this.get = function (key) {
return this.data[key];
};
//去除键值,(去除键数据中的键名及对应的值)
this.remove = function (key) {
this.keys.remove(key);
this.data[key] = null;
};
//判断键值元素是否为空
this.isEmpty = function () {
return this.keys.length == 0;
};
//获取键值元素大小
this.size = function () {
return this.keys.length;
};
this.ContainsKey = function (key) {
if (this.data[key] == null) {//如键不存在则身【键】数组添加键名
return false;
}
else {
return true;
}
}
}
function setsummarymessage() {
if (success + error == dictionary.size()) {
var summary = document.createElement("span");
$(summary).text('导入结果:');
$(summary).addClass("spansuccess");
var totalspan = document.createElement("span");
$(totalspan).text(' 共:' + total);
$(totalspan).addClass("spantotal");
var successspan = document.createElement("span");
$(successspan).text(' 成功:' + success);
$(successspan).addClass("spansuccess");
var errorspan = document.createElement("span");
$(errorspan).text(' 失败:' + error);
$(errorspan).addClass("spanerror");
var cancelspan = document.createElement("span");
$(cancelspan).text(' 取消:' + (total - dictionary.size()));
$(cancelspan).addClass("spancancel"); $(summary).appendTo($("#importLog"));
$(totalspan).appendTo($("#importLog"));
$(successspan).appendTo($("#importLog"));
$(errorspan).appendTo($("#importLog"));
$(cancelspan).appendTo($("#importLog"));
alert("导入完成!");
$("#importbutton").removeAttr("disabled");
$("#gottaskpage").show();
$('input[type=file]').val(""); }
else {
setTimeout(setsummarymessage, 3000);
}
} function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
function gototaskpage() {
var url = _spPageContextInfo.webAbsoluteUrl + "/Lists/ProjectTasks/AllItems.aspx?FilterField1=Project%5Fx003a%5FID&FilterValue1=" + getQueryString('ProjectID');
window.location.href = url;
} </script>
</head>
<body>
<input type="file" id="importExcel" name="import" />
<input type="button" id="importbutton" value="导入" onclick="waring()" />
<input type="button" id="gottaskpage" style="display: none;" value="查看项目工作项" onclick="gototaskpage();" />
<div id="importLog"></div> </body>
</html>
客户端对象模型之Excel数据导入到列表的更多相关文章
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,
Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...
- C#将Excel数据导入数据库(MySQL或Sql Server)
最近一直很忙,很久没写博客了.今天给大家讲解一下如何用C#将Excel数据导入Excel,同时在文章最后附上如何用sqlserver和mysql工具导入数据. 导入过程大致分为两步: 1.将excel ...
- 批量Excel数据导入Oracle数据库
由于一直基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数 ...
- 使用python将excel数据导入数据库
使用python将excel数据导入数据库 因为需要对数据处理,将excel数据导入到数据库,记录一下过程. 使用到的库:xlrd 和 pymysql (如果需要写到excel可以使用xlwt) 直接 ...
- Excel 数据导入SQL XML 自动生成表头
去出差的时候应客户要求要要将Excel 文件内的数据批量导入到数据库中,而且有各种不同种类的表格,如果每一个表格多对应一个数据表的话, 按照正常的方法应该是创建数据表,创建数据库中映射的数据模型,然后 ...
- NOPI Excel 数据导入到数据库
/// <summary> /// 上传excel文件 并将文件数据导入到数据库 /// </summary> /// <param name="file&qu ...
- kettle将Excel数据导入oracle
导读 Excel数据导入Oracle数据库的方法: 1.使用PL SQL 工具附带的功能,效率比较低 可参考这篇文章的介绍:http://www.2cto.com/database/201212/17 ...
- Java代码实现excel数据导入到Oracle
1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码 import java.io.File; import java.io.Fi ...
随机推荐
- 前端把html表格生成为excel表格
最近公司改后台管理系统.要求导出台账项目等等为excel表格,找半天还真有,他是通过query.table2excel.js 实现,原谅我原生不会弄这个当然大家有可以给我留言. <!DOCTYP ...
- arcgis10.2 serverstyle 制作工具位置 小计
跟9.3时候的套路还是一样的,只是工具已经放到了arcgis desktop的安装目录的bin文件夹下面. engine和developerkit都不附带该工具. 但是engine会附带一组默认的转换 ...
- 星空灯改装成USB供电
简单的手工活,20分钟搞定 1.用一根USB线剪断,将红黑两根线分别连接到星空灯电源供电的正负极 2.由于USB输出5V 0.5A的电流,因此需要改装下,办法一,加电阻,办法二,换灯泡,由于小电阻并不 ...
- 实战:Nginx如何让用户通过用户名和密码认证访问WEB站点
有时我们会有这么一种需求,就是你的网站并不想提供一个公共的访问或者某些页面不希望公开,我们希望的是某些特定的客户端可以访问.那么我们可以在访问时要求进行身份认证,就如给你自己的家门加一把锁,以拒绝那些 ...
- C# winfrom Datagridview控件下拉菜单
拖拽一个datagridview放在界面,编辑列把下来菜单那列ColumnType设置成DataGridViewComboBoxColumn 然后在数据一栏的Items可以写下来菜单的内容也可以后台代 ...
- 关于Unity3d的Quaternion.LookRotation的学习
首先,创建两个cube GameObject物件.Origin作为原点参考.Player是我们要实验的物件.如下图所示: 创建一个脚本Quat.cs,赋给Palyer cube.脚本如下: publi ...
- 使用UILabel实现滚动字幕移动效果
使用UILabel实现滚动字幕移动效果 这个链接中的代码也实现了这种效果 https://github.com/cbpowell/MarqueeLabel 最终效果如下: 原理如下: 1. 获取文本 ...
- Python实例---利用正则实现计算器[参考版]
利用正则进行运算规则的计算 版本一: # import re # # ss = '1 - 2 * ((60 - 30 + (-40/5) * (9 - 2 * 5 / 3 + 7 / 3 * 99 / ...
- WINDOW各种命令
- Eclipse+Maven 项目创建
★:jar包下载不了的话可能是镜像里没有这个版本,换个低版本的就行 ★:eclipse工程validating很慢,可以先关掉验证(一般对项目没什么影响) ★:eclipse工程pom.xml文件报错 ...