向Sql 中导入Excel数据时,使用MS SQL的DTS功能
 可以很方便的导入,同时引用Dll文件,可以在程序中对导入过程进行控制。
创建DTS包的过程如下:
 1。在SQL企业管理器中,工具菜单选数据转换服务,导入数据
 按照它的图形化向导提示,可以一步步创建一个DTS包,可以选择保存在数据库。
 2。在SQL企业管理器中,左边树形结构中选择 数据转化服务,本地包中
 可以新建一个包,同样有图形化的界面建立包:拖一个Excel数据源,拖一个Sql数据源
 然后在任务里选 数据转化任务,原数据选Excel源,目的选SQL,然后在转化的肩头上选属性
 里面可以配置转化过程。注意带有主键的数据表,要把选项中 启用标示插入去掉
 在C#里调用过程如下:
 private void RunDTS()
 2  {
 3   DTS.Package2Class package = new Package2Class();
 4   object p = null;
 5   package.LoadFromSQLServer("ws-victor-03", null, null, DTS.DTSSQLServerStorageFlags.DTSSQLStgFlag_UseTrustedConnection,
 6    null, null, null, "TestDTS", ref p);
 7   package.Connections.Item(1).DataSource = "dts.XLS";
 8   package.Execute();
 9  }
现在项目中遇到问题:
 1。插入数据时需要插入时间等Excel数据源中不存在的数据
 2。Excel数据源中数据有的需要转化,像数值形,导入后变成了1。23131E12等形式
 3。插入数据时需要从Sql中查询数据再插入
现在解决了第一条和第三条的一步分:
 在上述配置 数据转化任务 时,
 DTSDestination("ICC") = DTSSource("SIM Number");
     DTSDestination("IMSI") = DTSSource("IMSI");
     DTSDestination("PIN1") = DTSSource("PIN1");
     DTSDestination("PUK1") = DTSSource("PUK1");
     DTSDestination("PIN2") = DTSSource("PIN2");
     DTSDestination("PUK2") = DTSSource("PUK2");
     DTSDestination("MSISDN") = DTSSource("MSISDN");
     DTSDestination("Fax") = DTSSource("Fax");
     DTSDestination("Data") = DTSSource("Data");
     DTSDestination("Barring") = DTSSource("Barring");
     DTSDestination("MailFormID")  = DTSGlobalVariables("MailFromID").Value;
     DTSDestination("ReceiveDate") = new Date().getYear() + "-" + new Date().getMonth() + "-" + new Date().getDate();
     return(DTSTransformStat_OK);
 其中,MailFromID为全局变量,添加方法为包 菜单 属性里面选择全局变量,可在C#中对其进行赋值:
foreach(GlobalVariable global in package.GlobalVariables)
 {
     if (global.Name == "MailFromID") {
         package.GlobalVariables.Remove(global.Name);
     }
 }
 package.GlobalVariables.AddGlobalVariable("MailFromID",MailFromID);
插入时间:
 DTSDestination("ReceiveDate") = new Date().getYear() + "-" + new Date().getMonth() + "-" + new Date().getDate();
 用javascript拼出来的 哈哈
插入数据时需要从Sql中查询数据再插入:
 在包里添加新的任务:
 执行Sql任务
 SELECT AddressList.*
 FROM AddressList
 WHERE (ID = ?)
 然后配置 输入和输出参数
还剩下第2条没搞定,希望这2天能搞定~
http://calmzeal.cnblogs.com/archive/2006/05/28/411499.html