C#连接Excel并构建一个新的DataTable

String targetPath = System.IO.Path.GetFullPath(@"..\..\CopyExcel\temp.xls");
string excelonstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + targetPath + ";" +
 "Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";
OleDbConnection excelcon = new OleDbConnection(excelonstr);
DataSet _tempds = new DataSet();
excelcon.Open();
DataTable sheetNames = excelcon.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
string fristsheetName = sheetNames.Rows[0]["TABLE_NAME"].ToString();//获许第一个sheet名字
OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + fristsheetName + "]", excelonstr);
oada.Fill(_tempds);
//构建一个新的Datatable
            DataTable retable = new DataTable();
            retable.Columns.Add("barcode", typeof(string));
            retable.Columns.Add("jz", typeof(double));
            retable.Columns.Add("wlgg", typeof(string));
            retable.Columns.Add("wlh", typeof(string));
            retable.Columns.Add("mz", typeof(double));
            if (_tempds.Tables.Count == 0 || _tempds.Tables[0].Rows.Count == 0)
            {
                MessageBox.Show("所倒入的EXCEL未有数据.");
                return;
            }
            foreach (DataRow dr in _tempds.Tables[0].Rows)
            {
                object objjz = dr["aa"];
                object objbarcode = dr["bb"];
                object objwlgg = dr["cc"];
                object objwlh = dr["dd"];
                object objmz = dr["ee"];
                decimal dmz = 0.00m;
                if (objjz is DBNull || objbarcode is DBNull || objwlgg is DBNull || objwlh is DBNull) continue;
                try
                {
                    dmz = Convert.ToDecimal(objmz);
                }
                catch
                {
                    MessageBox.Show("'aa'一列有错误,请更改.");
                }

                retable.Rows.Add(dr["aa"].ToString(), Convert.ToDecimal(dr["bb"]), dr["cc"], dr["dd"], dmz);
            }
 
posted @ 2011-03-01 14:21  Jon.Zhiwei@hotmail.com  Views(287)  Comments(0)    收藏  举报