using Microsoft.SharePoint;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Text; namespace MySharePointProject.UploadExcelVisualWebPart
{
[ToolboxItemAttribute(false)]
public partial class UploadExcelVisualWebPart : WebPart
{
// 仅当使用检測方法对场解决方式进行性能分析时才取消凝视下面 SecurityPermission
// 特性。然后在代码准备进行生产时移除 SecurityPermission 特性
// 特性。由于 SecurityPermission 特性会绕过针对您的构造函数的调用方的
// 安全检查,不建议将它用于生产。
// [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Assert, UnmanagedCode = true)]
public UploadExcelVisualWebPart()
{
} protected override void OnInit(EventArgs e)
{
base.OnInit(e);
InitializeControl();
} protected void Page_Load(object sender, EventArgs e)
{
} protected void btnUpload_Click(object sender, EventArgs e)
{
//取得XML配置文件里的导入配置,第一项字符串所代表的是须要把Excel第一列导入到的SharePoint栏名
List<string> lis = getAppManager("123");
//把文件上传到本地
this.ExcelFileUpload.SaveAs(@"C:\a\test.xlsx"); ImportExcel(lis, @"C:\a\test.xlsx", "WageList", "");// "/2014/1"
}
/// <summary>
/// 从配置文件XML取得列表
/// </summary>
/// <param name="strListId"></param>
/// <returns></returns>
private List<string> getAppManager(string strListId)
{
List<string> FieldList = new List<string>();
XElement root = XElement.Load(@"C:\XMLFile1.xml");//XElement.Load(System.Web.HttpContext.Current.Server.MapPath("XMLFile1.xml"));
IEnumerable<XElement> address = from el in root.Elements("listId")
where (string)el.Attribute("id") == strListId
select el;
foreach (XElement el in address)
{
foreach (XNode node in el.Nodes())
{
XElement nod = (XElement)node;
string FieldName = nod.Value;
FieldList.Add(FieldName);
}
}
return FieldList;
}
/// <summary>
///
/// </summary>
/// <param name="l">配置列表</param>
/// <param name="filePath">Excel 文件路径</param>
/// <param name="listName">列表名称</param>
/// <param name="folder">列表目录</param>
private void ImportExcel(List<string> l, string filePath, string listName, string folder)
{
DataTable dt = ExcelToDS(filePath);
SPSite spSite = SPContext.Current.Site; SPWeb spWeb = spSite.RootWeb; SPList list = spWeb.GetListFromUrl("/Lists/" + listName + "/AllItems.aspx");
foreach (DataRow row in dt.AsEnumerable())
{
//向列表中指定的目录中加入列表项
SPListItem spListItem = list.AddItem("/Lists/WageList" + folder, SPFileSystemObjectType.File);
for (int i = 0; i < l.Count; i++)
{
spListItem[spListItem.Fields[l[i]].InternalName] = row[i];
} //别忘了保存
spListItem.Update();
} }
/// <summary>
/// 传入Excel的地址,得到Sheet1的DataTable
/// </summary>
/// <param name="Path"></param>
/// <returns></returns>
public DataTable ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "Data Source=" + Path + ";" + "Extended Properties='Excel 12.0;HDR=Yes;IMEX=1';"; OleDbConnection conn = new OleDbConnection(strConn);
try
{
DataTable dt = new DataTable();
if (conn.State != ConnectionState.Open)
conn.Open();
string strExcel = "select * from [Sheet1$]";
OleDbDataAdapter adapter = new OleDbDataAdapter(strExcel, conn);
adapter.Fill(dt);
return dt;
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (conn.State != ConnectionState.Closed)
conn.Close();
}
}
}
}

SharePoint2013导入Excel到列表的更多相关文章

  1. [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  2. Oracle导入excel数据方法汇总[转]

    摘要:在程序编制过程和数据汇总交换过程中,经常会碰到需要将其他人员在office办公环境下编制的文件数据内容导入oracle中的情况.目前程序开发者经常使用的方法有如下几种:1,使用oracle提供的 ...

  3. 使用NPOI生成Excel级联列表

    目录 1    概要    1 2    磨刀不误砍柴工——先学会Excel中的操作    2 3    利用NPOI生成导入模板    7 3.1    设置workbook&sheet   ...

  4. 结合bootstrap fileinput插件和Bootstrap-table表格插件,实现文件上传、预览、提交的导入Excel数据操作流程

    1.bootstrap-fileinpu的简单介绍 在前面的随笔,我介绍了Bootstrap-table表格插件的具体项目应用过程,本篇随笔介绍另外一个Bootstrap FieInput插件的使用, ...

  5. 纳税服务系统【用户模块之使用POI导入excel、导出excel】

    前言 再次回到我们的用户模块上,我们发现还有两个功能没有完成: 对于将网页中的数据导入或导出到excel文件中,我们是完全没有学习过的.但是呢,在Java中操作excel是相对常用的,因此也有组件供我 ...

  6. EasyPoi导入Excel

    EasyPoi的导出Excel功能和导入功能同样简单.我之前强调过,EasyPoi的原理本质就是Poi,正如MyBatis Plus的本质原理就是MyBatis. POI导入功能可以参考如下地址:ht ...

  7. 转:[Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!

    引言 项目中常用到将数据导入Excel,将Excel中的数据导入数据库的功能,曾经也查找过相关的内容,将曾经用过的方案总结一下. 方案一 NPOI NPOI 是 POI 项目的 .NET 版本.POI ...

  8. springboot批量导入excel数据

    1 背景 小白今天闲着没事,在公司摸鱼,以为今天有事无聊的一天,突然上头说小子,今天实现一下批量导入Excel数据吧,当时我的内心是拒绝的,然后默默打开idea. 2 介绍 2.1 框架 java本身 ...

  9. 从零开始实现放置游戏(六)——实现挂机战斗(4)导入Excel数值配置

    前面我们已经实现了在后台管理系统中,对配置数据的增删查改.但每次添加只能添加一条数据,实际生产中,大量数据通过手工一条一条添加不太现实.本章我们就实现通过Excel导入配置数据的功能.这里我们还是以地 ...

随机推荐

  1. Oracle RMAN 备份及不完全恢复(删除archievelog)

    RMAN备份命令 backup Database format='/home/oracle/backup/bak_full_%U_%T' tag='bak_full'; sql 'alter syst ...

  2. CompileGLShader

    //-----------------------------------------------------------------------------// Purpose: Compiles ...

  3. 验收测试 - WebDriver 5

    验收测试 - WebDriver - 配置 什么是WebDriver 这样说好了,它翻译起来就是Web驱动,用我的经验来说,它就是驱动浏览器运行的一个驱动器 有什么作用? 就像一个司机可以驱动一台汽车 ...

  4. Yii2系列教程四:实现用户注册,验证,登录

    上一篇写了一点点Yii2的数据库相关知识和强大的Gii,这一篇就如上一篇的最后所说的一样:在Yii2中实现用户的注册和登录. 你可以直接到Github下载源码,以便可以跟上进度,你也可以重头开始,一步 ...

  5. ExtentReports 结合 TestNg 生成自动化 html 报告 (支持多 suite)

    转载:https://testerhome.com/topics/8134 重要说明:报告监听器源码修复一些bug,不再此处更新代码,最新代码可以到github查看最新报告监听器源码 前几天分享了ht ...

  6. 各版本JDK1.5-1.8新特性

    概述 一jdk15新特性 泛型 foreach 自动拆箱装箱 枚举 静态导入Static import 元数据Metadata 线程池 Java Generics 二jdk16新特性 Desktop类 ...

  7. where 泛型类型参数及约束

    private void InsertData<TRowMetadata, TFieldMetadata, TCellMetadata>(IMetadataReader<TRowMe ...

  8. nodejs 获取指定路径下所有的文件夹名

    示例:获取 ./components 下所有的文件夹名称 let components = [] const files = fs.readdirSync('./components') files. ...

  9. jQuery 实现观察者模式

    github: https://github.com/mmikowski/jquery.event.gevent demo: $('body').append( "<div id='s ...

  10. JDBC的常用API

    一.Connection接口: 1.createStatement():创建数据库连接 2.prepareStatement(Stringsql):创建预处理语句 3.prepareCall(Stri ...