本帖最后由 zdh120712 于 2010-02-10 10:08:58 编辑

解决方案 »

  1.   

    主从表导入直接select * From book获取excel数据在插入到数据库就好了另外excel要做成固定的模板,按照你的模板填入数据
    没有模板的话,客户今天是这样的表,明天是那样的表式行不同的建议做成主从表,主表一个工作表,从表一个工作表如果客户想简化录入的话,你可以看看VBA编程,简单的写的程序,可以解决excel很多问题
      

  2.   

    灰常简单。
       /// <summary>
            /// 从Excel文件中获取信息
            /// </summary>
            /// <param name="fileName"></param>
            /// <param name="isContianCaption"></param>
            /// <returns></returns>
            public DataTable GetDataFormExcel(string fileName)
            {
                //string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + "Extended Properties='Excel 8.0;IMEX=1;'";
                string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + "Extended Properties=Excel 8.0;";
                OleDbConnection conn = null;
                DataTable dtExcel = new DataTable();
                try
                {
                    conn = new OleDbConnection(strConn);
                    conn.Open();
                    //取得表名
                    DataTable schemaTable = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
                    string tableName = schemaTable.Rows[1][2].ToString().Trim();
     
                    //第三行为表数据            
                    string sql = " select * from [" + tableName + "] where 1=1 ";
     
                    OleDbCommand oleCommand = new OleDbCommand(sql, conn);
                    OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
                    DataSet myDataSet = new DataSet();
                    // 将 Excel 的[Sheet1]表内容填充到 DataSet 对象 
                    oleAdapter.Fill(myDataSet, tableName);
                    DataTable dt = myDataSet.Tables[0];
                    dt.Columns.Add("Index");
                    //移除不符合条件的行
                    DataRow[] rows = dt.Select("[Port of Discharge ] is not null");
                    DataTable returnDt = dt.Clone();
                    for (int i = 0; i < rows.Length; i++)
                    {
                        rows[i]["Index"] = i;
                        returnDt.ImportRow(rows[i]);
                    }
                    return returnDt;
                }
                catch (Exception ex)
                {
                    return null;
                }
                finally
                {
                    if (conn != null && conn.State != ConnectionState.Closed)
                        conn.Close();
                }
            }
      

  3.   

    如果excel文件多了,逻辑复杂了,要求多了,可以考虑用SQL SERVER配套的SSIS,这个还是很专业、很强大的。看你的标题跟过来的,对你目前的需求可能没啥帮助,呵呵!