打开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 }
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 }
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 }
4.全局变量
1 private string fileName = ""; 2 private Conn conn = new Conn(); 3 ArrayList pValue = new ArrayList(); 4 bool isSuccess = false; 5 int r = 0;

浙公网安备 33010602011771号