当前位置:编程学习 > C#/ASP.NET >>

问一个C#从excel导入数据到sql2005的问题

--------------------编程问答-------------------- 主从表导入

直接select * From book获取excel数据

在插入到数据库就好了

另外excel要做成固定的模板,按照你的模板填入数据


没有模板的话,客户今天是这样的表,明天是那样的表式行不同的

建议做成主从表,主表一个工作表,从表一个工作表

如果客户想简化录入的话,你可以看看VBA编程,简单的写的程序,可以解决excel很多问题 --------------------编程问答-------------------- 上面的显示乱了,截个图 --------------------编程问答-------------------- 灰常简单。
   /// <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();
            }
        }
--------------------编程问答-------------------- 如果excel文件多了,逻辑复杂了,要求多了,可以考虑用SQL SERVER配套的SSIS,这个还是很专业、很强大的。

看你的标题跟过来的,对你目前的需求可能没啥帮助,呵呵!
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,