excel宏:

随后更新

webservice:

1.创建空应用程序

2.加入web服务

3.创建数据库訪问类库DataHelper

sqlserver:

创建数据同步的存储过程

下面是一些须要的代码。比較杂乱,有空再整理整理。

DataFactory.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Configuration;



namespace DataHelper

{

    public class DataFactory

    {

        /// <summary>

        /// 获取数据类型1为sqlserver,2为access

        /// </summary>

        /// <param name="type"></param>

        /// <returns></returns>

        public static DbHelper GetHelper()

        {

            string ConnStr = ConfigurationManager.AppSettings["ConnStr"].ToString();

            int Dbtype = 1;

            Int32.TryParse(ConfigurationManager.AppSettings["DbType"].ToString(), out Dbtype);

            switch (Dbtype)

            {

                case 1:

                    return new SqlHelper(ConnStr);

                case 2:

                    return new OledbHelper(ConnStr);

                default:

                    return new SqlHelper(ConnStr);

            }

        }



        public static DbHelper GetHelper1()

        {

            string ConnStr = ConfigurationManager.AppSettings["ConnStr1"].ToString();

            int Dbtype = 1;



            Int32.TryParse(ConfigurationManager.AppSettings["DbType"].ToString(), out Dbtype);

            switch (Dbtype)

            {

                case 1:

                    return new SqlHelper(ConnStr);

                case 2:

                    return new OledbHelper(ConnStr);

                default:

                    return new SqlHelper(ConnStr);

            }

        }







        public static DbHelper GetYellowPageHelper()

        {

            string ConnStr = ConfigurationManager.AppSettings["ConnStrYP"].ToString();

            int Dbtype = 1;



            Int32.TryParse(ConfigurationManager.AppSettings["DbType"].ToString(), out Dbtype);

            switch (Dbtype)

            {

                case 1:

                    return new SqlHelper(ConnStr);

                case 2:

                    return new OledbHelper(ConnStr);

                default:

                    return new SqlHelper(ConnStr);

            }

        }





        /// <summary>

        /// Discuz数据库

        /// </summary>

        /// <returns></returns>

        public static DbHelper GetYellowPageHelperDNT()

        {

            string ConnStr = ConfigurationManager.AppSettings["ConnStrDNT"].ToString();

            int Dbtype = 1;



            Int32.TryParse(ConfigurationManager.AppSettings["DbType"].ToString(), out Dbtype);

            switch (Dbtype)

            {

                case 1:

                    return new SqlHelper(ConnStr);

                case 2:

                    return new OledbHelper(ConnStr);

                default:

                    return new SqlHelper(ConnStr);

            }

        }

    }

}

DbHelper.cs

using System;

using System.Collections.Generic;

using System.Data;

using System.Data.Common;

using System.Text;

using System.Collections.Specialized;



namespace DataHelper

{

    public abstract class DbHelper

    {

        /// <summary>

        /// 得到数据库链接

        /// </summary>

        public abstract IDbConnection Connection { get; }

        /// <summary>

        /// 打开数据库连接;  

        /// </summary>

        public abstract void Open();

        /// <summary>

        /// 关闭数据库链接;

        /// </summary>

        public abstract void Close();

        /// <summary>

        /// 開始一个事务;

        /// </summary>

        public abstract void BeginTrans();

        /// <summary>

        /// 提交一个事务;

        /// </summary>

        public abstract void CommitTrans();

        /// <summary>

        /// 回滚一个事务;

        /// </summary>

        public abstract void RollBackTrans();

        /// <summary>

        /// 运行sql语句,返回受影响集合数

        /// </summary>

        /// <param name="cmdType">命令类型</param>

        /// <param name="cmdText">命令字符串</param>

        /// <param name="commandParameters">命令參数</param>

        /// <returns></returns>

        public abstract int ExecuteNonQuery(CommandType cmdType, string cmdText, NameValueCollection pars);

        /// <summary>

        /// 运行sql语句,返回IDataReader

        /// </summary>

        /// <param name="cmdType">命令类型</param>

        /// <param name="cmdText">命令字符串</param>

        /// <param name="commandParameters">命令參数</param>

        /// <returns></returns>

        public abstract DbDataReader ExecuteReader(CommandType cmdType, string cmdText, NameValueCollection pars);

        /// <summary>

        /// 运行sql语句,返回结构的第一行,第一列的值

        /// </summary>

        /// <param name="cmdType">命令类型</param>

        /// <param name="cmdText">命令字符串</param>

        /// <param name="commandParameters">命令參数</param>

        /// <returns></returns>

        public abstract object ExecuteScalar(CommandType cmdType, string cmdText, NameValueCollection pars);

        /// <summary>

        /// 运行sql语句。获得datatable

        /// </summary>

        /// <param name="cmdType">命令类型</param>

        /// <param name="cmdText">命令字符串</param>

        /// <param name="commandParameters">命令參数</param>

        /// <returns></returns>

        public abstract DataTable GetDataTable(CommandType cmdType, string cmdText, NameValueCollection pars);

    }

}

OledbHelper.cs

using System;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.Text;

using System.Data;

using System.Data.Common;

using System.Data.OleDb;



namespace DataHelper

{

    class OledbHelper : DbHelper

    {

        private OleDbConnection conn;

        private OleDbTransaction trans;



        private bool inTransaction = false; //指示当前是否正处于事务中



        /// <summary>

        /// 构造函数,初始OledbConnection对象

        /// </summary>

        /// <param name="StrConnection"></param>

        public OledbHelper(string StrConnection)

        {

            this.conn = new OleDbConnection(StrConnection);

        }



        /// <summary>

        /// 获取Conneciton

        /// </summary>

        public override IDbConnection Connection

        {

            get { return this.conn; }

        }



        /// <summary>

        /// 打开数据库连接

        /// </summary>

        public override void Open()

        {

            if (conn.State != ConnectionState.Open)

            {

                this.conn.Open();

            }

        }





        /// <summary>

        /// 关闭数据库连接。释放资源

        /// </summary>

        public override void Close()

        {

            if (this.trans != null)

            {

                this.trans.Dispose();

            }



            if (conn.State != ConnectionState.Closed)

            {

                conn.Close();

            }





            conn.Dispose();

        }



        public override void BeginTrans()

        {

            trans = conn.BeginTransaction();

            inTransaction = true;

        }

        public override void CommitTrans()

        {

            trans.Commit();

            inTransaction = false;

        }



        public override void RollBackTrans()

        {

            trans.Rollback();

            inTransaction = false;

        }





        /// <summary>

        /// 參数准备

        /// </summary>

        /// <param name="cmdType"></param>

        /// <param name="cmdText"></param>

        /// <param name="commandParameters"></param>

        public void PrepareCommand(OleDbCommand cmd, CommandType cmdType, string cmdText, NameValueCollection pars)

        {

            if (this.trans != null)

            {

                cmd.Transaction = this.trans;

            }

            cmd.Connection = conn;

            cmd.CommandType = cmdType;

            cmd.CommandText = cmdText;



            if (pars != null && pars.Count > 0)

            {

                string[] keys = pars.AllKeys;

                for (int i = 0; i < pars.Count; i++)

                {

                    cmd.Parameters.AddWithValue(keys[i], pars[i]);

                }

            }



        }







        public override int ExecuteNonQuery(CommandType cmdType, string cmdText, NameValueCollection pars)

        {



            using (OleDbCommand cmd = new OleDbCommand())

            {

                this.PrepareCommand(cmd, cmdType, cmdText, pars);



                int val = cmd.ExecuteNonQuery();

                cmd.Parameters.Clear();

                return val;

            }



        }



        public override DbDataReader ExecuteReader(CommandType cmdType, string cmdText, NameValueCollection pars)

        {

            using (OleDbCommand cmd = new OleDbCommand())

            {

                this.PrepareCommand(cmd, cmdType, cmdText, pars);

                DbDataReader dr = cmd.ExecuteReader();

                cmd.Parameters.Clear();

                return dr;

            }



        }



        public override object ExecuteScalar(CommandType cmdType, string cmdText, NameValueCollection pars)

        {



            using (OleDbCommand cmd = new OleDbCommand())

            {

                this.PrepareCommand(cmd, cmdType, cmdText, pars);

                object val = cmd.ExecuteScalar();

                cmd.Parameters.Clear();

                return val;

            }

        }



        public override DataTable GetDataTable(CommandType cmdType, string cmdText, NameValueCollection pars)

        {

            using (OleDbCommand cmd = new OleDbCommand())

            {

                DataTable dt = new DataTable();

                this.PrepareCommand(cmd, cmdType, cmdText, pars);



                using (DbDataAdapter da = new OleDbDataAdapter())

                {

                    da.SelectCommand = cmd;

                    da.Fill(dt);

                    cmd.Parameters.Clear();

                    return dt;

                }



            }



        }



    }

}

SqlHelper.cs

using System;

using System.Collections.Generic;

using System.Collections.Specialized;

using System.Text;

using System.Data;

using System.Data.Common;

using System.Data.SqlClient;



namespace DataHelper

{

    class SqlHelper : DbHelper

    {

        private SqlConnection conn;

        private SqlTransaction trans;

        private bool inTransaction = false; //指示当前是否正处于事务中



        /// <summary>

        /// 获取IDbConnection

        /// </summary>

        public override IDbConnection Connection

        {

            get { return this.conn; }

        }



        /// <summary>

        /// 构造函数,初始SqlConnection对象

        /// </summary>

        /// <param name="StrConnection"></param>

        public SqlHelper(string StrConnection)

        {

            this.conn = new SqlConnection(StrConnection);

        }



        /// <summary>

        /// 打开数据库连接

        /// </summary>

        public override void Open()

        {

            if (conn.State != ConnectionState.Open)

            {

                this.conn.Open();

            }

        }



        /// <summary>

        /// 关闭数据库连接,释放资源

        /// </summary>

        public override void Close()

        {

            if (this.trans != null)

            {

                this.trans.Dispose();

            }



            if (conn.State != ConnectionState.Closed)

            {

                conn.Close();

            }





            conn.Dispose();

        }



        /// <summary>

        /// 開始事务

        /// </summary>

        public override void BeginTrans()

        {

            trans = conn.BeginTransaction();

            inTransaction = true;

        }

        /// <summary>

        /// 提交事务

        /// </summary>

        public override void CommitTrans()

        {

            trans.Commit();

            inTransaction = false;

        }



        /// <summary>

        /// 回滚事务

        /// </summary>

        public override void RollBackTrans()

        {

            trans.Rollback();

            inTransaction = false;

        }





        /// <summary>

        /// 參数准备

        /// </summary>

        /// <param name="cmdType"></param>

        /// <param name="cmdText"></param>

        /// <param name="commandParameters"></param>

        public void PrepareCommand(SqlCommand cmd, CommandType cmdType, string cmdText, NameValueCollection pars)

        {

            if (this.trans != null)

            {

                cmd.Transaction = this.trans;

            }

            cmd.Connection = conn;

            cmd.CommandType = cmdType;

            cmd.CommandText = cmdText;



            if (pars != null && pars.Count > 0)

            {

                string[] keys = pars.AllKeys;

                for (int i = 0; i < pars.Count; i++)

                {

                    cmd.Parameters.AddWithValue(keys[i], pars[i]);

                }

            }

        }



        /// <summary>

        /// 运行sql命令。返回受影响行数

        /// </summary>

        /// <param name="cmdType">命令类型</param>

        /// <param name="cmdText">命令</param>

        /// <param name="pars">參数组</param>

        /// <returns>受影响行数</returns>

        public override int ExecuteNonQuery(CommandType cmdType, string cmdText, NameValueCollection pars)

        {



            using (SqlCommand cmd = new SqlCommand())

            {

                this.PrepareCommand(cmd, cmdType, cmdText, pars);



                int val = cmd.ExecuteNonQuery();

                cmd.Parameters.Clear();

                return val;

            }

        }

        /// <summary>

        /// 运行sql命令,返回DbDataReader

        /// </summary>

        /// <param name="cmdType">命令类型</param>

        /// <param name="cmdText">命令</param>

        /// <param name="pars">參数组</param>

        /// <returns>DbDataReader</returns>

        public override DbDataReader ExecuteReader(CommandType cmdType, string cmdText, NameValueCollection pars)

        {

            using (SqlCommand cmd = new SqlCommand())

            {

                this.PrepareCommand(cmd, cmdType, cmdText, pars);

                DbDataReader dr = cmd.ExecuteReader();

                cmd.Parameters.Clear();

                return dr;

            }

        }



        /// <summary>

        /// 运行sql语句,返回第一行第一列

        /// </summary>

        /// <param name="cmdType"></param>

        /// <param name="cmdText"></param>

        /// <param name="pars"></param>

        /// <returns></returns>

        public override object ExecuteScalar(CommandType cmdType, string cmdText, NameValueCollection pars)

        {



            using (SqlCommand cmd = new SqlCommand())

            {

                this.PrepareCommand(cmd, cmdType, cmdText, pars);

                object val = cmd.ExecuteScalar();

                cmd.Parameters.Clear();

                return val;

            }

        }



        /// <summary>

        /// 运行sql语句。返回DataTable

        /// </summary>

        /// <param name="cmdType">命令类型</param>

        /// <param name="cmdText">命令</param>

        /// <param name="pars">參数组</param>

        /// <returns></returns>

        public override DataTable GetDataTable(CommandType cmdType, string cmdText, NameValueCollection pars)

        {

            using (SqlCommand cmd = new SqlCommand())

            {

                DataTable dt = new DataTable();

                this.PrepareCommand(cmd, cmdType, cmdText, pars);



                using (DbDataAdapter da = new SqlDataAdapter())

                {

                    da.SelectCommand = cmd;

                    da.Fill(dt);

                    cmd.Parameters.Clear();

                    return dt;

                }



            }



        }



    }

}

WebService.asmx

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Services;

using System.Data.Common;

using System.Data;

using System.Collections.Specialized;

using DataHelper;



namespace myWebService

{

    /// <summary>

    /// WebService 的摘要说明

    /// </summary>

    [WebService(Namespace = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

    [System.ComponentModel.ToolboxItem(false)]

    // 若要同意使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的凝视。

    // [System.Web.Script.Services.ScriptService]

    public class WebService : System.Web.Services.WebService

    {

        [WebMethod]

        public string HelloWorld()

        {

            string uid = GetGuid();

            string test = "n7,5,20150701,10,20150701|n8,5,20150701,10,20150701|n9,5,20150701,9,20150701";

            string[] rows=test.Split('|');           

            int rowsCount=rows.Length;

            int colsCount=rows[0].Length;

            string cmd = string.Empty;

            string floorno=string.Empty;

            NameValueCollection nvc=new NameValueCollection();          

            string result = string.Empty;

            DataHelper.DbHelper dh = DataHelper.DataFactory.GetHelper();

            dh.Open();

            dh.BeginTrans();

            try

            {

                List<String> sql = new List<string>();

                for (int i = 0; i < rowsCount; i++)

                {

                    sql.Add("insert into TARGETHISTORY(EQNO,FLOORNO,RUNSTART,RUNTIME,UPDATETIME,UID) values(@EQNO,@FLOORNO,@RUNSTART,@RUNTIME,@UPDATETIME,@UID)");

                    nvc = new NameValueCollection();

                    nvc.Add("@EQNO", rows[i].Split(',')[0]);

                    nvc.Add("@FLOORNO", rows[i].Split(',')[1]);

                    nvc.Add("@RUNSTART", rows[i].Split(',')[2]);

                    nvc.Add("@RUNTIME", rows[i].Split(',')[3]);

                    nvc.Add("@UPDATETIME", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));

                    nvc.Add("@UID", uid);

                    floorno = rows[i].Split(',')[1];

                    dh.ExecuteNonQuery(CommandType.Text, sql[i], nvc);

                }

                nvc = new NameValueCollection();

                nvc.Add("@UID", uid);

                nvc.Add("@FLOORNO", floorno);

                dh.ExecuteNonQuery(CommandType.StoredProcedure, "DeviceShareLoad", nvc);

                dh.CommitTrans();

                result= "数据导入成功!

";

            }

            catch (Exception ex)

            {

                dh.RollBackTrans();   

                dh.Close();

                result = "数据导入失败!请联系 IT!

错误原因:"+ex.ToString();                

            }

            finally

            {

                dh.Close();               

            }

            return result;

        }

        private static string GetGuid()

        {

            System.Guid guid = new Guid();

            guid = Guid.NewGuid();

            return guid.ToString();

        }

    }

}

webconfig

<?xml version="1.0" encoding="utf-8"?>



<!--

  有关怎样配置 ASP.NET 应用程序的具体消息。请訪问

  http://go.microsoft.com/fwlink/?LinkId=169433

  -->



<configuration>

    <system.web>

        <compilation debug="true" targetFramework="4.0" />

    </system.web>

  <appSettings>

    <!-- 1为sqlserver 2为 access -->

    <add key="DbType" value="1"/>

    <!-- sql server连接字符串 -->

    <add key="ConnStr" value="server=.;uid=sa;pwd=891219;database=test;"/>

    <!-- access连接字符串  -->

    <!--<add key="ConnStr" value="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|#data#.mdb"/>-->

  </appSettings>

</configuration>

存储过程

USE [test]

GO

/****** Object:  StoredProcedure [dbo].[DeviceShareLoad]    Script Date: 07/10/2015 02:49:27 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[DeviceShareLoad]

@floorno nvarchar(50),

@uid nvarchar(50)

AS

BEGIN

    merge into targettable as t

    using (select * from TARGETHISTORY where uid=@uid) as s

    on t.floorno=@floorno and s.floorno=@floorno and t.eqno=s.eqno

    when matched

    then update set t.eqno=s.eqno,t.floorno=s.floorno,t.runstart=s.runstart,t.runtime=s.runtime,t.updatetime=getdate()

    when not matched and s.floorno=@floorno

    then insert (eqno,floorno,runstart,runtime,updatetime) values(s.eqno,s.floorno,s.runstart,s.runtime,getdate())


    when not matched by source and t.floorno=@floorno

    then delete;

    SET NOCOUNT ON;

END

excel宏调用webservice使用存储过程同步excel数据的方法的更多相关文章

  1. pandas数据分析输出excel产生文本形式存储的百分比数据,如何处理?

    关键词: python.pandas.to_excel.文本形式存储的数据 需求描述: 我用 python pandas 写了数据统计与分析脚本,并把计算结果用 pandas 的 to_excel() ...

  2. NPOI操作Excel时使用列头来读取数据的方法

    首先定义扩展方法: public static ICell GetCell(this IRow row, string clounmName) { IRow firstRow = row.Sheet. ...

  3. 如何在open xml excel 中存储自定义xml数据?

    如何在open xml excel 中存储自定义xml数据? 而且不能放在隐藏的cell单元格内,也不能放在隐藏的sheet内,要类似web网站的Application变量,但还不能是VBA和宏之类的 ...

  4. 爬虫实践——数据存储到Excel中

    在进行爬虫实践时,我已经爬取到了我需要的信息,那么最后一个问题就是如何把我所爬到的数据存储到Excel中去,这是我没有学习过的知识. 如何解决这个问题,我选择先百度查找如何解决这个问题. 百度查到的方 ...

  5. Excel连接到MySQL,将Excel数据导入MySql,MySQL for Excel,,

    Excel连接到MySQL 即使当今时代我们拥有了类似微软水晶报表之类的强大报表工具和其他一些灵活的客户管 理应用工具,众多企业在分析诸如销售统计和收入信息的时候,微软的Excel依然是最常用的工具. ...

  6. ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案 try.dot.net 的正确使用姿势 .Net NPOI 根据excel模板导出excel、直接生成excel .Net NPOI 上传excel文件、提交后台获取excel里的数据

    ASP.NET Core 2.2 : 十六.扒一扒新的Endpoint路由方案   ASP.NET Core 从2.2版本开始,采用了一个新的名为Endpoint的路由方案,与原来的方案在使用上差别不 ...

  7. 个人永久性免费-Excel催化剂功能第20波-Excel与Sqlserver零门槛交互-数据上传篇

    Excel作为众多数据存储的交换介质,在不同的系统内的数据很少可以很连贯地进行整合分析,一般的业务系统都会提供导出Excel作为标配功能供用户使用系统内生成的数据. 此时最大的问题是,Excel很维去 ...

  8. 使用Excel表格的记录单功能轻松处理工作表中数据的方法

    使用Excel表格的记录单功能轻松处理工作表中数据的方法 记录单是将一条记录分别存储在同一行的几个单元格中,在同一列中分别存储所有记录的相似信息段.使用记录单功能可以轻松地对工作表中的数据进行查看.查 ...

  9. DataTable to Excel(使用NPOI、EPPlus将数据表中的数据读取到excel格式内存中)

    /// <summary> /// DataTable to Excel(将数据表中的数据读取到excel格式内存中) /// </summary> /// <param ...

随机推荐

  1. initerrlog: 无法打开错误日志文件 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log 解决办法

    initerrlog: 无法打开错误日志文件 'D:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Log 1. 设置 ...

  2. 我的第一个web开发框架

    怎么才能成为一名架构师?需要具备哪些条件? 作为一名码农我迫切希望自己成为一个比较合格的web架构师,昨晚心血来潮小弟花了4个小时的时间整了个简易的web开发框架,本着开源的精神做个分享,希望和更多的 ...

  3. windows10 自带的OpenSSH Client(Beta)

    我不知道其他版本有没有 ,我是windows10 专业版,版本1709,OS内部版本16288.1 安装过程: 1.我的电脑上面的卸载或更改程序 2.管理可选功能 3.添加功能 4.重启电脑,搞定 O ...

  4. CentOS7.5下gnome-terminal+vim的solarized配色方案

    1.简介 Solarized是一款包括浅色和深色的配色方案,适用于很多应用,可以让你的应用看起来更加漂亮!官网地址:http://ethanschoonover.com/solarized 2.设置g ...

  5. CrudRepository.findOne报错

    踩坑,写controller,用到了Repository.findOne(id);一直报错,发现CrudRepository没有方法. 排查原因是JAR包的原因. 我之前是2.0.1 springbo ...

  6. css文本、字母、数字过长 自动换行处理

    ---恢复内容开始--- white-space: normal|pre|nowrap|pre-wrap|pre-line|inherit;white-space 属性设置如何处理元素内的空白norm ...

  7. Grunt Gulp Browserify Webpack

    Grunt 是相比后面几个更早的项目,他依赖于各种插件的配置.这是一个很好的解决方案,但是请相信我,你不会想看到一个 300 行的 Gruntfile Gulp 提供了一个不一样的解决方案,而不是依赖 ...

  8. BZOJ 2809 [Apio2012]dispatching(斜堆+树形DP)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2809 [题目大意] 给出一棵树,求出每个点有个权值,和一个乘算值,请选取一棵子树, 并 ...

  9. 【推导】Codeforces Round #432 (Div. 2, based on IndiaHacks Final Round 2017) B. Arpa and an exam about geometry

    题意:给你平面上3个不同的点A,B,C,问你能否通过找到一个旋转中心,使得平面绕该点旋转任意角度后,A到原先B的位置,B到原先C的位置. 只要A,B,C构成等腰三角形,且B为上顶点.那么其外接圆圆心即 ...

  10. 【贪心】Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A. String Reconstruction

    在每个给出的子串的起始位置打个标记,记录的是从这里开始的最长子串. 然后输出的时候就扫,如果遇到开始位置,就从这里开始输出,如果其后被更长的覆盖,就跳转到更长的串进行输出. 如果位置没被覆盖,就输出' ...