打开EXCel表,并转成TABLE

1.打开excel文件

 1         private void button1_Click(object sender, EventArgs e)
 2         {
 3             OpenFileDialog file1 = new OpenFileDialog();
 4             //file1.ShowDialog();
 5             file1.Filter = " Microsoft Excel files(*.xls)|*.xls;*.xlsx";
 6             file1.InitialDirectory = "f:\\wenbin\\工作文件\\KPI";
 7             file1.RestoreDirectory = true;
 8             file1.CheckPathExists = true;
 9             file1.CheckFileExists = true;
10             if (file1.ShowDialog() == DialogResult.OK)
11             {
12                 fileName = file1.FileName;
13                 textBox1.Text = fileName;
14             }
15         }
button1_Click

2.整理数据,录入数据库

 1 private void button2_Click(object sender, EventArgs e)
 2         {
 3             if (fileName == "")
 4             {
 5                 MessageBox.Show("请选择文件!");
 6             }
 7             else
 8             {
 9                 //此连接只能操作Excel2007之前(.xls)文件
10                 //string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
11                 //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
12                 //"HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反。
13                 //"IMEX=1 "如果列中的数据类型不一致,使用"IMEX=1"可必免数据类型冲突。 
14                 string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + fileName + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'";
15                 OleDbConnection _conn = new OleDbConnection(strConn);
16                 try
17                 {
18                     _conn.Open();
19                     DataTable datatable = _conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
20                     string ExcelTableName = datatable.Rows[0]["TABLE_NAME"].ToString().Trim();
21                     DataTable dt = new DataTable();
22                     OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [" + ExcelTableName + "]", _conn);
23                     adapter.Fill(dt);
24                     string sql = "";
25                     for (int i = 2; i < dt.Rows.Count; i++)
26                     {
27                         for (int j = 1; j < 6; j++)
28                         {
29                             var a = dt.Rows[i][j].ToString();
30                             if (dt.Rows[i][j].ToString() != "")
31                             {
32                                 switch (j)
33                                 {
34                                     case 1:
35                                         sql = "update ots_issue_hander set KPI_ACTUAL_DUTYPARTY ='承运商' WHERE OMS_NO =?";
36                                         pValue.Add(dt.Rows[i][0].ToString().Trim());
37                                         break;
38                                     case 2:
39                                         sql = "update ots_issue_hander h set h.Kpi_Actual_Return_Date =to_date('2099-1-1','yyyy-mm-dd') where oms_no =?";
40                                         pValue.Add(dt.Rows[i][0].ToString().Trim());
41                                         break;
42                                     case 3:
43                                         sql = "update ots_issue_hander h set h.DISCREPANCY_REMARK = '承运商' where oms_no =?";
44                                         pValue.Add(dt.Rows[i][0].ToString().Trim());
45                                         break;
46                                     case 4:
47                                         sql = "update ots_issue_hander h set kpi_return_intime_flag='承运商' where oms_no =?";
48                                         pValue.Add(dt.Rows[i][0].ToString().Trim());
49                                         break;
50                                     case 5:
51                                         sql = "update ots_issue_hander h set kpi_return_intime_flag=? where (kpi_return_intime_flag<>'承运商' OR kpi_return_intime_flag is null) and oms_no =?";
52                                         pValue.Add(dt.Rows[i][j]);
53                                         pValue.Add(dt.Rows[i][0].ToString().Trim());
54                                         break;
55                                 }
56                                 //do st
57                                 if (sql != "")
58                                 {
59                                     //实际导入请注销下面一行
60                                     //if (sql=="update ots_issue_hander h set kpi_return_intime_flag=? where kpi_return_intime_flag<>'承运商' and oms_no =?")
61                                     //{
62                                     //    conn.DoExecuteSql(sql, (string[])pValue.ToArray(typeof(string)));
63                                     //}
64                                     conn.DoExecuteSql(sql, (string[])pValue.ToArray(typeof(string)));
65                                     isSuccess = true;
66                                     r = i - 1;
67                                 }
68                                 pValue.Clear();
69 
70                             }
71                         }
72                     }
73                     if (isSuccess == true)
74                     {
75                         MessageBox.Show("'" + r + "'行全部导入成功!");
76                     }
77                 }
78                 catch (Exception ex)
79                 {
80                     throw ex;
81                     //sendEmail("471478656@qq.com;", "", "KPI_RDC_DATA_BASE出错了", "错误原因:" + ex.ToString());
82                 }
83                 finally
84                 {
85                     _conn.Close();
86                 }
87             }
88         }
button2_Click

3.

 1         /// <summary>
 2         /// 执行update/delete/insert语句
 3         /// </summary>
 4         /// <param name="strSql"></param>
 5         /// <param name="parValue"></param>
 6         /// <returns></returns>
 7         public int DoExecuteSql(string strSql, string[] parValue)
 8         {
 9             int num = 0;
10             try
11             {
12                 Open();
13                 OleDbCommand cmd = new OleDbCommand(strSql, connection);
14                 for (int i = 0; i < parValue.Length; i++)
15                 {
16                     cmd.Parameters.Add(new OleDbParameter("@para" + i.ToString(), OleDbType.VarChar, 2000));
17                     cmd.Parameters["@para" + i.ToString()].Value = parValue[i].ToString();
18                 }
19                 num = cmd.ExecuteNonQuery();
20                 return num;
21             }
22             catch (Exception e)
23             {
24                 throw new Exception("执行 update/delete/insert 出错,当前语句:" + strSql + "  错误原因:" + e.Message);
25             }
26         }
DoExecuteSql

 

4.全局变量

1         private string fileName = "";
2         private Conn conn = new Conn();
3         ArrayList pValue = new ArrayList();
4         bool isSuccess = false;
5         int r = 0;
View Code

posted @ 2016-07-28 16:49  花生打代码会头痛  阅读(250)  评论(0)    收藏  举报