今天在给公司做网站时,主管给了一个新的需求给我,由于公司的电话表数据比较多,需要导入到数据库表中,所以特意的从网上查阅了一些资料,简易的写了个粗略的类,基本原理是:把Excel做为数据源,形成datable对象, 然后在数据库建立一张表一列一列的将数据添加到新表中,实现的类:
1 using System;
2 using System.Data;
3 using System.Configuration;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.HtmlControls;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Xml.Linq;
12 using System.Data.OleDb;
13 using System.Data.SqlClient;
14 using PublicClass;
15 /// <summary>
16 /// 将Excel数据添加到数据库的表
17 /// </summary>
18 public class ExceltoSqlserver
19 {
20 public ExceltoSqlserver()
21 {
22 //
23 //TODO: 在此处添加构造函数逻辑
24 //
25 }
26
27 OleDbConnection myoledb;
28 OleDbCommand oledbcmd;
29 SqlConnection sqlcn;
30 SqlCommand sqlcmd=new SqlCommand();
31 MySQL mysql=new MySQL();
32 /// <summary>
33 /// 获取Excel数据源连接对象
34 /// </summary>
35 /// <param name="path">Excel路径</param>
36 /// <returns></returns>
37 public OleDbConnection getoledbcn(string path)
38 {
39 OleDbConnection oledb = new OleDbConnection("Provider =Microsoft.Jet.OLEDB.4.0;Data Source = \'"+path+"\';Extended Properties=\'Excel 8.0;IMEX=1;\'");
40 return oledb;
41 }
42 /// <summary>
43 /// 多sql命令
44 /// </summary>
45 /// <param name="strcmd">数据库操作命令数组</param>
46 /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
47 public int sqlCommand(string[] strcmd)
48 {
49 sqlcn=mysql.retconnection();
50 SqlTransaction trans; //定义事务变量
51 sqlcn.Open();
52 trans = sqlcn.BeginTransaction(); //开始事务
53 int i;
54 //循环执行数组命令
55 for (i = 0; i < strcmd.Length; i++)
56 {
57 sqlcmd.Connection = sqlcn;
58 sqlcmd.CommandTimeout = 0;
59 sqlcmd.CommandType = CommandType.Text;//字符串命令类型
60 sqlcmd.CommandText = strcmd[i];
61 sqlcmd.Transaction = trans; //命令获取事务
62 if (sqlcmd.ExecuteNonQuery() <= 0)
63 {
64 //执行失败,事务回滚。
65 trans.Rollback();
66 return 0;
67 }
68 }
69 trans.Commit(); //执行事务;事务结束点。能执行则成功
70 sqlcn.Close();
71 return 1;
72 }
73
74 /// <summary>
75 /// 将Excel数据表转换成databtable
76 /// </summary>
77 /// <returns></returns>
78 public DataTable Mydatatable()
79 {
80 myoledb = getoledbcn(@"E:\Book1.xls");
81 OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from [Sheet1$]", myoledb);
82 DataSet ds = new DataSet();
83 oledbda.Fill(ds,"temp");
84 return ds.Tables["temp"];
85
86 }
87 /// <summary>
88 /// 将Excel数据保存到表中
89 /// </summary>
90 public int exToSql()
91 {
92
93 MySQL mysql = new MySQL();
94 DataTable dt = Mydatatable();
95 string[] strcmd = new string[dt.Rows.Count];
96 for (int i = 0; i < dt.Rows.Count; i++)
97 {
98 strcmd[i]= "insert into tb_excel(title) values(\'" + dt.Rows[i].ItemArray[0].ToString().Trim() +"\')"; //添加一列字段
99
100 }
101 if (sqlCommand(strcmd) > 0)
102 {
103 return 1;
104 }
105 else
106 {
107 return 0;
108 }
109
110
111 }
112 }
113
114
2 using System.Data;
3 using System.Configuration;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.HtmlControls;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Xml.Linq;
12 using System.Data.OleDb;
13 using System.Data.SqlClient;
14 using PublicClass;
15 /// <summary>
16 /// 将Excel数据添加到数据库的表
17 /// </summary>
18 public class ExceltoSqlserver
19 {
20 public ExceltoSqlserver()
21 {
22 //
23 //TODO: 在此处添加构造函数逻辑
24 //
25 }
26
27 OleDbConnection myoledb;
28 OleDbCommand oledbcmd;
29 SqlConnection sqlcn;
30 SqlCommand sqlcmd=new SqlCommand();
31 MySQL mysql=new MySQL();
32 /// <summary>
33 /// 获取Excel数据源连接对象
34 /// </summary>
35 /// <param name="path">Excel路径</param>
36 /// <returns></returns>
37 public OleDbConnection getoledbcn(string path)
38 {
39 OleDbConnection oledb = new OleDbConnection("Provider =Microsoft.Jet.OLEDB.4.0;Data Source = \'"+path+"\';Extended Properties=\'Excel 8.0;IMEX=1;\'");
40 return oledb;
41 }
42 /// <summary>
43 /// 多sql命令
44 /// </summary>
45 /// <param name="strcmd">数据库操作命令数组</param>
46 /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
47 public int sqlCommand(string[] strcmd)
48 {
49 sqlcn=mysql.retconnection();
50 SqlTransaction trans; //定义事务变量
51 sqlcn.Open();
52 trans = sqlcn.BeginTransaction(); //开始事务
53 int i;
54 //循环执行数组命令
55 for (i = 0; i < strcmd.Length; i++)
56 {
57 sqlcmd.Connection = sqlcn;
58 sqlcmd.CommandTimeout = 0;
59 sqlcmd.CommandType = CommandType.Text;//字符串命令类型
60 sqlcmd.CommandText = strcmd[i];
61 sqlcmd.Transaction = trans; //命令获取事务
62 if (sqlcmd.ExecuteNonQuery() <= 0)
63 {
64 //执行失败,事务回滚。
65 trans.Rollback();
66 return 0;
67 }
68 }
69 trans.Commit(); //执行事务;事务结束点。能执行则成功
70 sqlcn.Close();
71 return 1;
72 }
73
74 /// <summary>
75 /// 将Excel数据表转换成databtable
76 /// </summary>
77 /// <returns></returns>
78 public DataTable Mydatatable()
79 {
80 myoledb = getoledbcn(@"E:\Book1.xls");
81 OleDbDataAdapter oledbda = new OleDbDataAdapter("select * from [Sheet1$]", myoledb);
82 DataSet ds = new DataSet();
83 oledbda.Fill(ds,"temp");
84 return ds.Tables["temp"];
85
86 }
87 /// <summary>
88 /// 将Excel数据保存到表中
89 /// </summary>
90 public int exToSql()
91 {
92
93 MySQL mysql = new MySQL();
94 DataTable dt = Mydatatable();
95 string[] strcmd = new string[dt.Rows.Count];
96 for (int i = 0; i < dt.Rows.Count; i++)
97 {
98 strcmd[i]= "insert into tb_excel(title) values(\'" + dt.Rows[i].ItemArray[0].ToString().Trim() +"\')"; //添加一列字段
99
100 }
101 if (sqlCommand(strcmd) > 0)
102 {
103 return 1;
104 }
105 else
106 {
107 return 0;
108 }
109
110
111 }
112 }
113
114