zoukankan      html  css  js  c++  java
  • 导入Excel数据

    using System;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using Microsoft.Office.Interop.Excel;
    using System.IO;
    using System.Reflection;
    using System.Web;
    using System.Collections;
    using System.Web.UI.WebControls;
    using System.Collections.Generic;
    using Microsoft.SharePoint.Administration;
    using System.Data.OleDb;
    using System.Data;
    using System.Linq;
    using System.Drawing;
    using System.Data.SqlClient;
    
    namespace MyDemo.Layouts.MyDemo
    {
        public partial class Excel : LayoutsPageBase
        {
            string rootUrl = Common.rootUrl;//连接地址
            string strExcelConn;//Excel使用的Connction
                
            protected void Page_Load(object sender, EventArgs e)
            {
            }
            protected void ButImport_Click(object sender, EventArgs e)
            {
                if (FileUploadImport.HasFile)
                {
                    string strLoginName = HttpContext.Current.User.Identity.Name.ToString();    //获取用户名
                    string folderTemp = strLoginName.Substring(strLoginName.LastIndexOf('\') + 1);
                    SPSecurity.RunWithElevatedPrivileges(delegate()
                    {
                        try
                        {
                            string FileException = System.IO.Path.GetExtension(FileUploadImport.FileName).ToLower();//选中文件的类型
                            //通过判断类型是否为xlsx和xls来判断是否为Excel文件
                            if (FileException == ".xlsx" || FileException == ".xls")
                            {
                                string FileFolder = Server.MapPath("~/_layouts/15/images/" + folderTemp + "Upfile/");//获取文件地址
                                if (!Directory.Exists(FileFolder))     //根目录 
                                {
                                    Directory.CreateDirectory(FileFolder);//判断上传目录是否存在     自动创建 
                                }
                                string StrFilepath = FileFolder + FileUploadImport.FileName;//FileUpload文件路径
                                FileUploadImport.SaveAs(StrFilepath);//将导入文件保存在Web服务器上此路径
                                using (SPSite site = new SPSite(rootUrl))
                                {
                                    //获取站点
                                    SPWeb web = site.RootWeb;
                                    SPList list = web.GetList(rootUrl + "/Lists/HomePage/AllItems.aspx");
                                    //允许站点在GET请求上进行更新
                                    web.AllowUnsafeUpdates = true;
                                    //添加列表项                     
                                    string strExcel = ExcelSheetName(StrFilepath)[0].ToString();//获取Excel表文件名
                                    int ExcelRow = ExcelDataSource(StrFilepath, strExcel).Tables[0].Rows.Count;//获取Excel表中的行数
                                    int ExcelColumn = ExcelDataSource(StrFilepath, strExcel).Tables[0].Columns.Count;//获取Excel表中的列数
                                    try
                                    {
                                        for (int i = 0; i < ExcelRow; i++)
                                        {
                                            SPListItem newItem = list.AddItem();
                                            for (int j = 0; j < ExcelColumn; j++)
                                            {
                                                newItem[ChangeRowName(list, ExcelDataSource(StrFilepath, strExcel).Tables[0].Columns[j].ColumnName)] = ExcelDataSource(StrFilepath, strExcel).Tables[0].Rows[i][j].ToString();
                                            }
                                            newItem.Update();
                                        }
                                    }
                                    catch (Exception ex)
                                    {
                                        Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type='text/javascript'>alert('Excel表列名与系统不符合,请检查Excel表列名!');</script>");
                                    }                           
                                }
                            }
                            else
                            {
                                Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type='text/javascript'>alert('您选择的文件不是Excel格式!');</script>");
                            }
                        }
                        catch (Exception ex)
                        {
                            throw ex;
                        }
                        finally
                        {
                            string strFileFolder = Server.MapPath("~/_layouts/15/images/" + folderTemp + "Upfile/");
                            if (Directory.Exists(strFileFolder))     //根目录 
                            {
                                //Directory.CreateDirectory(strFileFolder);//判断上传目录是否存在     自动创建 
                                Directory.Delete(strFileFolder, true);//删除临时文件
                            }
                        }
                    });
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(Page.ClientScript.GetType(), "myscript", "<script  type='text/javascript'>alert('上传失败!');</script>");
                }
                
            }
    
            protected void ButExport_Click(object sender, EventArgs e)
            {
                string strLoginName = HttpContext.Current.User.Identity.Name.ToString();    //获取用户名
                string folderTemp = strLoginName.Substring(strLoginName.LastIndexOf('\') + 1);
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    try
                    {
                        string FileName = DateTime.Now.ToString("yyyy.MM.dd HH.mm.ss") + ".xlsx";//以日期定义要导出的文件名
                        string FileFolder = Server.MapPath("~/_layouts/15/images/" + folderTemp + "Upfile/");
                        if (!Directory.Exists(FileFolder))     //根目录 
                        {
                            Directory.CreateDirectory(FileFolder);//判断上传目录是否存在     自动创建 
                        }
                        string strFilePath = FileFolder + FileName;
                        System.Data.DataTable dt = new System.Data.DataTable();
    
                        using (SPWeb spweb = new SPSite(rootUrl).OpenWeb())
                        {
                            SPList spList = spweb.GetList(rootUrl + "/Lists/ProjectList/AllItems.aspx");
                            dt.Columns.Add("", typeof(string));
                            dt.Columns.Add("标题", typeof(string));
                            dt.Columns.Add("项目标题", typeof(string));
                            dt.Columns.Add("用户名", typeof(string));
                            SPListItemCollection itemColl = spList.Items;
                            foreach (SPListItem item in itemColl)
                            {
                                string strTitle = item["标题"].ToString();
                                string strManager = item["项目标题"].ToString();
                                string strSchedule = item["用户名"].ToString();
                                dt.Rows.Add("", strTitle, strManager, strSchedule);
                            }
                        }
                        //创建一个Excel应用程序对象,如果未创建成功则推出。
                        Application excel1 = new Application();
                        if (excel1 == null)
                        {
                            System.Web.HttpContext.Current.Response.Write("无法创建Excel对象,可能你的电脑未装Excel");
                        }
                        Workbooks workBooks1 = excel1.Workbooks;
                        Workbook workBook1 = workBooks1.Add(XlWBATemplate.xlWBATWorksheet);
                        Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)excel1.Worksheets[1];   //取得sheet1          
    
                        for (int i = 0; i < dt.Columns.Count; i++)
                        {
    
                            worksheet.Cells[1, i + 1] = dt.Columns[i].ColumnName.ToString();
                        }
                        //把DataTable的数据导入到Excel中(这里用的是两个for循环,当表中行,列比较少时       还 可以,但是比较多时,速度就会很慢,我电脑两万五千条用了尽量分钟)
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            for (int j = 0; j < dt.Columns.Count; j++)
                            {
                                worksheet.Cells[i + 2, j + 1] = dt.Rows[i][j].ToString();
                            }
                        }
                        try
                        {
                            //保存Excel
                            workBook1.Saved = true;
                            workBook1.SaveCopyAs(FileFolder+FileName);
                        }
                        catch (Exception ex)
                        {
                            System.Web.HttpContext.Current.Response.Write("导出文件时出错,文件可能正被打开!
    " + ex.ToString());
                        }
                        workBook1.Close();
                        excel1.Visible = true;
                        if (excel1 != null)
                        {
                            excel1.Workbooks.Close();
                            excel1.Quit();
    
                            int generation = System.GC.GetGeneration(excel1);
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(excel1);
    
                            excel1 = null;
                            System.GC.Collect(generation);
                        }
    
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    } 
                });
            }
            //连接到Excel
             public DataSet ExcelDataSource( string filepath , string sheetname )
            {
                strExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties='Excel 12.0;HDR=YES'";
                OleDbConnection conn = new OleDbConnection(strExcelConn);
                OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strExcelConn);
                DataSet ds = new DataSet();
                oada.Fill(ds);
                return ds;
            }
    
            //获得Excel中的所有sheetname。
            public ArrayList ExcelSheetName( string filepath )
            {
                strExcelConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filepath + ";Extended Properties='Excel 12.0;HDR=YES'";
                ArrayList al = new ArrayList();
                OleDbConnection conn = new OleDbConnection(strExcelConn);
                conn.Open();
                System.Data.DataTable sheetNames = conn.GetOleDbSchemaTable( System.Data.OleDb.OleDbSchemaGuid.Tables,new object[]{null,null,null,"TABLE"} );
                conn.Close();
                foreach ( DataRow dr in sheetNames.Rows )
                {
                    al.Add(dr[2]);
                }
                return al;
            }
            public string ChangeRowName(SPList splist, string rowName)
            {
                try
                {
                    return splist.Fields[rowName].InternalName;
                }
                catch (Exception)
                {
                    return "";
                }
            }
        }
    }
    

      

  • 相关阅读:
    浏览器回退
    几个小东西
    获取用户的IP
    easyui datagrid中 formatter的用法
    vscode安装go语言插件失败解决方法
    c#项目NLOG不显示日志
    C# 抽象类与接口的区别
    用SQL Server事件探查器创建跟踪
    使用MathJax在博客园里添加数学公式
    概率主题模型简介 Introduction to Probabilistic Topic Models
  • 原文地址:https://www.cnblogs.com/yixiaozi/p/3844282.html
Copyright © 2011-2022 走看看