利用OLEDB+SqlClient实现EXCEL批量导入数据

以下是几个自己写的类

        /// <summary>
        /// 取得Excel对象
        /// </summary>
        /// <param name="strConn">OLEDB连接字符串</param>
        /// <param name="sql">SQL语句</param>
        /// <returns></returns>
        public static DataTable GetExecuteDataTable(string strConn, string sql)
        {
            DataTable dt = new DataTable();
            using (OleDbConnection conn = new OleDbConnection(strConn))
            {
                using (OleDbDataAdapter oda = new OleDbDataAdapter(sql, conn))
                {
                    oda.Fill(dt);
                    return dt;
                }
            }
        }

        /// <summary>
        /// 导入数据
        /// </summary>
        /// <param name="sql">sql语句</param>
        /// <param name="mydelegate">执行插入的方法</param>
        /// <returns>返回受影响的行数</returns>
        public static int Introduction(string sql, Func<SqlConnection,int> mydelegate)
        {
            int rownumber = 0;//受影响的行数
            using (SqlConnection conn = new SqlConnection(connStr))
            {
                conn.Open();
                rownumber = mydelegate(conn);
            }
            return rownumber;
        }

        /// <summary>
        /// 生成插入语句
        /// </summary>
        /// <param name="table"></param>
        /// <param name="column"></param>
        /// <returns></returns>
        public static string CreateInsertSQL(string table, params string[] column)
        {
            StringBuilder sb = new StringBuilder();//拼接字段
            StringBuilder sb1 = new StringBuilder();//拼接参数字段
            foreach (string item in column)
            {
                sb.Append(string.Format("{0},", item));
                sb1.Append(string.Format("@{0},", item));
            }
            return string.Format("INSERT INTO {0} ({1}) VALUES ({2})", table, sb.ToString().TrimEnd(‘,‘), sb1.ToString().TrimEnd(‘,‘));
        }
       string excelConn = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;", excelpath);
            string excelSql = string.Format("SELECT [网点编号],[网点名称],[派工单位],[所属区域],[变更信息] FROM [table$]");
            string sql = Caihuashun_SQLHelper.CreateInsertSQL("[Caihuashun_Units_T]", "wdbh", "wdmc", "pgdw", "ssqy", "biangeng");
            DataTable exceldt = Caihuashun_SQLHelper.GetExecuteDataTable(excelConn, excelSql);
            Func<SqlConnection, int> myDelegate = (conn) =>
            {
                int i = 0;
                foreach (Caihuashun_Units_T item in DtToList(exceldt))
                {
                    using (SqlCommand cmd = new SqlCommand(sql, conn))
                    {
                        SqlParameter[] sp = {
                                                new SqlParameter("@wdbh",item.wdbh),
                                                new SqlParameter("@wdmc",item.wdmc),
                                                new SqlParameter("@pgdw",item.pgdw),
                                                new SqlParameter("@ssqy",item.ssqy),
                                                new SqlParameter("@biangeng",item.biangeng)
                                            };
                        cmd.Parameters.AddRange(sp);
                        i += cmd.ExecuteNonQuery();
                    }
                }
                return i;
            };
            return Caihuashun_SQLHelper.Introduction(sql, myDelegate);
try
            {
                OpenFileDialog open = new OpenFileDialog();
                open.Filter = "Execl files (*.xls)|*.xls";//打开文件的类型
                open.Title = "选择要导入的文件";
                open.FilterIndex = 0;//文件类型默认第一个
                open.RestoreDirectory = true;//上一次选择的目录
                if (open.ShowDialog() == DialogResult.OK)
                {
                    function.MboxSuccess(string.Format("成功导入{0}条数据!", bll.Introduction(open.FileName)));
                }
            }
            catch (Exception ex)
            {
                function.MboxError(ex.Message);
            }

利用OLEDB+SqlClient实现EXCEL批量导入数据,布布扣,bubuko.com

时间: 2024-10-03 23:02:24

利用OLEDB+SqlClient实现EXCEL批量导入数据的相关文章

Excel批量导入数据之数据校验

最近,工作上接到Excel批量导入数据的需求.在这里,小编想分享的是数据校验那些事,至于如何读取Excel数据,大家可以百度下. 一般而言,Excel批量导入数据,我们都会给客户提供一个固定的模板以输入我们期望的数据.然而,客户的操作,我们是无法预料的,他们有可能增加一列或者删除一列,有可能去掉Excel某个字段的输入限制等等. Excel模板,有可能只有一个,有可能若干个.各个模板的数据列,或交叉相同,或存在个性化列. 同一个模板,也许因某列数据的不同,而需要填充不同数据列. ...... 面

poi excel批量导入 解决各类型的数据

String value=this.getValue((HSSFCell) row.getCell(position)) 数字类型  时间类型 字符串类型验证没问题, 数字类型如果是1234.0会将其变成1234  如果是1234.5保存仍然保持小数位1234.5,用来解决电话号码和普通数字问题 时间类型将其格式化成了 2015-12-09 12:13:12这种格式便于保存数据库 //解决类型问题,获得数值 public String getValue(HSSFCell cell) { Stri

Dynamics 2015 数据管理 之 如何批量导入数据到 正式区(一)

单一个项目的数据导入可以在具体功能 中导入,大体位置如下. 如果项目新上线的话,要批量导入数据的话,就要到如下的功能中实现了. 进入方式: 在 设置 ---- 数据管理 下载 下载后,用EXCEL打开, 给业务人员批量输入数据. 编辑好以后,上传吧,点 导入. 下一步即可以,导入以后,可以返回看看数据导入的情况,格式有没有错误等.

.NET从EXCEL文件导入数据

.NET com组件 这种方法在计算机没有安装office套件时,也是能够使用的.所以不依赖于软件, 但是还是需要xcel.exe编译后的dll文件打包到相应的程序中来引用.这样将dll文件" 随身携带",就可以了.还是挺不错的! 1.注册Microsoft.Office.Interop.Excel.dll 在office安装文件夹下找到excel.exe,路径D:\Program Files(x86)\Microsoft Office\Office15.将excel.exe文件复制到

asp.net 从Excel表导入数据到数据库中

http://www.cnblogs.com/hfzsjz/archive/2010/12/31/1922901.html http://hi.baidu.com/ctguyg/item/ebc857e90e436ae1fb42ba01 1 <form action="" method="post" runat ="server"> 2 <div> 3 <span>请选择文件:</span><

JAVA实现Excel批量导入

一.模板下载: 先将模板放在项目WebRoot下的download文件夹下: /** * @Title: downloadFile * @Description: 模板下载 (网络地址) * @param @param id * @param @param url * @param @param fileName * @param @param response * @param @param request * @param @throws Exception * @return void *

Excel批量导入商品,遇到导入失败记录到另一个Excel中供下载查看

1 /// <summary> 2 /// EXCEL批量导入 3 /// </summary> 4 /// <param name="filePath">文件路径</param> 5 /// <param name="shop">店铺</param> 6 /// <returns></returns> 7 public string BatchUploadProduct

JEPLUS平台Excel批量导入的操作配置——JEPLUS软件快速开发平台

JEPLUS平台Excel批量导入的操作配置 JEPLUS平台支持Excel数据的批量导入,但是很多客户不明白批量导入怎么配置,今天这个笔记就简单说一下JEPLUS的Excel数据批量导入怎么来配置. 一.效果展示 二.Excel数据批量导入操作的配置过程 1.添加Excel数据批量导入操作需要的按钮 找到目标功能,添加业务需求说需要的按钮,操作如图: 2.为新添加的按钮编写业务所需要的JS事件 Excel数据批量导入时应该按照平台规定的模板来添加,首先还是为"下载模板"这个按钮添加J

django 批量导入数据

一.需求 我在数据库中建了一张表,用来保存ucloud云上的project id 和project name models.py代码如下 #coding:utf-8 from django.db import models class Project(models.Model):     name = models.CharField(u'项目名称',max_length=32,blank=True)     id = models.CharField(u'项目ID',max_length=32