将Excel表中的数据导入到数据库

时间:2022-11-17 13:25:16

网上查到的有参考价值的就一家,自己调试发现可行。感谢原创文章:将Excel中数据导入数据库(一)

 

  1   1 using System;
2 2 using System.Collections.Generic;
3 3 using System.Linq;
4 4 using System.Web;
5 5 //using System.Web.UI;
6 6 //using System.Web.UI.WebControls;
7 7 using System.Data;
8 8 using System.Data.OleDb;
9 9 using System.Configuration;
10 10 using System.Data.SqlClient;
11 11 namespace ConsoleApplication1
12 12 {
13 13 class FileSvr
14 14 {
15 15 /// <summary>
16 16 /// 应用程序的主入口点。
17 17 /// </summary>
18 18 [STAThread]
19 19 static void Main(string[] args)
20 20 {
21 21 FileSvr fileSvr = new FileSvr();
22 22 System.Data.DataTable dt = fileSvr.GetExcelDatatable("F:\\ExcelToDB1.xls", "mapTable");
23 23 int count = fileSvr.InsetData(dt);
24 24 Console.WriteLine(count);
25 25 }
26 26
27 27 /// <summary>
28 28 /// Excel数据导入Datable
29 29 /// </summary>
30 30 /// <param name="fileUrl"></param>
31 31 /// <param name="table"></param>
32 32 /// <returns></returns>
33 33 public System.Data.DataTable GetExcelDatatable(string fileUrl, string table)
34 34 {
35 35 //office2007之前 仅支持.xls
36 36 const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";
37 37 ////支持.xls和.xlsx,即包括office2010等版本的 HDR=Yes代表第一行是标题,不是数据;
38 38 //const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
39 39 System.Data.DataTable dt = null;
40 40 //建立连接
41 41 OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
42 42 try
43 43 {
44 44 //打开连接
45 45 if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
46 46 {
47 47 conn.Open();
48 48 }
49 49
50 50 System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
51 51 //获取Excel的第一个Sheet名称
52 52 string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();
53 53 //查询sheet中的数据
54 54 string strSql = "select * from [" + sheetName + "]";
55 55 OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
56 56 DataSet ds = new DataSet();
57 57 da.Fill(ds, table);
58 58 dt = ds.Tables[0];
59 59 return dt;
60 60 }
61 61 catch (Exception exc)
62 62 {
63 63 throw exc;
64 64 }
65 65 finally
66 66 {
67 67 conn.Close();
68 68 conn.Dispose();
69 69 }
70 70 }
71 71 /// <summary>
72 72 /// 从System.Data.DataTable导入数据到数据库
73 73 /// </summary>
74 74 /// <param name="dt"></param>
75 75 /// <returns></returns>
76 76 public int InsetData(System.Data.DataTable dt)
77 77 {
78 78 int i = 0;
79 79 string words = "";
80 80 string wordKind = "";
81 81 string fellingkind = "";
82 82 string power = "";
83 83 string polar = "";
84 84 string assistfellingkind = "";
85 85 string assistpower = "";
86 86 string assistpolar = "";
87 87 foreach (DataRow dr in dt.Rows)
88 88 {
89 89 words = dr["Words"].ToString().Trim();
90 90 wordKind = dr["wordKind"].ToString().Trim();
91 91 fellingkind = dr["fellingkind"].ToString().Trim();
92 92 power = dr["power"].ToString().Trim();
93 93 polar = dr["polar"].ToString().Trim();
94 94 assistfellingkind = dr["assistfellingkind"].ToString().Trim();
95 95 assistpower = dr["assistpower"].ToString().Trim();
96 96 assistpolar = dr["assistpolar"].ToString().Trim();
97 97 //sw = string.IsNullOrEmpty(sw) ? "null" : sw;
98 98 //kr = string.IsNullOrEmpty(kr) ? "null" : kr;
99 99 string strSql = string.Format("Insert into tb_MyFellingWords (Words,wordKind,fellingkind,power,polar,assistfellingkind,assistpower,assistpolar) Values ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}')", words, wordKind, fellingkind, power, polar, assistfellingkind, assistpower, assistpolar);
100 100
101 101
102 102 //连接帐套数据库, 要跟据帐套参数定义创建连接字符串
103 103 string sConn = "Server={0};Database={1};User ID={2};Password={3};Connection TimeOut=180;";
104 104 sConn = String.Format(sConn,
105 105 "20120906-1046",
106 106 "CSFramework3.Test",
107 107 "sa",
108 108 "sa");
109 109 SqlConnection sqlConnection = new SqlConnection(sConn);
110 110 try
111 111 {
112 112 // SqlConnection sqlConnection = new SqlConnection(strConnection);
113 113 sqlConnection.Open();
114 114 SqlCommand sqlCmd = new SqlCommand();
115 115 sqlCmd.CommandText = strSql;
116 116 sqlCmd.Connection = sqlConnection;
117 117 SqlDataReader sqlDataReader = sqlCmd.ExecuteReader();
118 118 i++;
119 119 Console.WriteLine(i);
120 120 sqlDataReader.Close();
121 121 }
122 122 catch (Exception ex)
123 123 {
124 124 throw ex;
125 125 }
126 126 finally
127 127 {
128 128 sqlConnection.Close();
129 129 }
130 130 //if (opdb.ExcSQL(strSql))
131 131 // i++;
132 132 }
133 133 return i;
134 134 }
135 135 }
136 136 }
137 137