高分求 c#中,把EXCEL的一个表导入数据库,请写下详细步骤··不胜感激··!!!!!急···············

解决方案 »

  1.   

    我的方法可能有点慢哦!!
    //打开对话框
          private void button1_Click(object sender, EventArgs e)
            {
             
                System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog();
                if (fd.ShowDialog() == DialogResult.OK)
                {
                    //TransferData(fd.FileName, "sheet1″,connString);
                    Inser(fd.FileName);
                       
                }
            }函数
      private void Inser(string FilePath)
            {
                try
                {               
                    string path = FilePath;
                    string conn = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source =" + path + ";Extended Properties=Excel 8.0";
                    //"Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source=" + Server.MapPath("../ExcelData.xls") + ";" + "Extended Properties=Excel 8.0;"
                    OleDbConnection thisconnection = new OleDbConnection(conn);
                    thisconnection.Open();
                    string Sql = "select * from [Sheet1$]";
                    OleDbDataAdapter mycommand = new OleDbDataAdapter(Sql, thisconnection);
                    DataSet ds = new DataSet();
                    mycommand.Fill(ds);
                    for (int j = 0; j < count; j++)
                    {
                        string id_1= ds.Tables[0].Rows[j][0].ToString();//Name
                        string id_2 = ds.Tables[0].Rows[j][1].ToString();//LoinId
                        string id_3 = Agent.get32Md5( ds.Tables[0].Rows[j][2].ToString());//PASS
                        string id_4 =ds.Tables[0].Rows[j][3].ToString();//CallFee
                        string id_5=ds.Tables[0].Rows[j][4].ToString ();//contact
                        string id_6=ds.Tables[0].Rows[j][5].ToString ();//TeleNumber
                        string id_7 = ds.Tables[0].Rows[j][6].ToString();//Email
                        string id_8 = ds.Tables[0].Rows[j][7].ToString();//legal
                        string id_9 = ds.Tables[0].Rows[j][8].ToString();//Address
                      
                       //执行的Sql语句
                        
                    }
                
                }
                catch (Exception ex)
                {
                    MessageBox.Show ( ex.Message);
                }        }
      

  2.   

    strConnect=string.Format("Provider=Microsoft.Jet.OLEDB.4.0; Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1\";Data Source={0};", EXCEL文件全名); 
    DbProviderFactory ExcelFact = DbProviderFactories.GetFactory("System.Data.OleDb"); 
    //实例化连接 
    DbConn = ExcelFact.CreateConnection(); 
    DbConn.ConnectionString = strConnect; //根据EXCEL文件创建DataTable 
     DbCommand pDbCmd = CreateCommand(DbConn, strSql, CommandType.Text);
    DbDataAdapter pDataAdaPter = ExcelFact.CreateDataAdapter();
    pDataAdaPter.SelectCommand = pDbCmd;
    DbCommandBuilder pDbCmdBuilder = ExcelFact.CreateCommandBuilder();
    pDbCmdBuilder.DataAdapter = pDataAdaPter;
    DataSet pDataSet = new DataSet();
    //填充数据集
    pDataAdaPter.Fill(pDataSet, strTableName);
    DataTable pDataTable = pDataSet.Tables[0];
    pDataAdaPter.AcceptChangesDuringUpdate = true;
    //保存更新
    pDataAdaPter.Update(pDataSet, strTableName);代码不是完整的,你自己再补充一下调一下,是可以实现的EXCEL导入DB的。
      

  3.   

    一、把DataTable插入数据库 
    二、把Excel数据读入DataTable 
    三、向数据库表插入数据 
      

  4.   

    楼主你的excel的数据库有多大呢?
    comm.CommandType = CommandType.StoredProcedure;
                            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                            {
                                if (ds.Tables[0].Rows[0]["结算比例(%)"].ToString() != " ")
                                {
                                 OleDbCommand oleddata = new OleDbCommand("Update cattle Set where,oled);
                                }
                             }
    这里是读取excel里一列的数据,如果你是多列,修改下就可以了。
    先读取excel的数据,然后在更新到数据库里面就可以了。
      

  5.   

    循环读Excel每行数据,然后插入DB
      

  6.   

     if (panduFile.PostedFile.FileName != "")
            {
                //上传文件的绝对路径
                string sFile = panduFile.PostedFile.FileName;
                //获取文件全名
                sFile = sFile.Substring(sFile.LastIndexOf("\\") + 1);
                //获取后缀名
                sFile = sFile.Substring(sFile.LastIndexOf("."));
                if (sFile.ToLower() != ".xls")
                {
                    Response.Write("请选择Excel文件!");
                    Response.End();
                }
                //为了防止重名,获得日期为文件名年月日时分秒毫秒
                string datatime = System.DateTime.Now.ToString("yyyMMddHHmmssffff");
                //上传后文件的新名
                sFile = datatime + sFile;
                //AppDomain.CurrentDomain.BaseDirectory.ToString() 获取此项目的根目录
                //sPath 获取上传后的路径
                string sPath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "ExcelFiles\\" + sFile;
                panduFile.PostedFile.SaveAs(sPath);
                //myFile.CopyBaseAttributes(sPath);
                this.GridView1.DataSource = GetExcelContent(sPath);
                this.GridView1.DataBind();
                this.GridView1.Visible = false;
                DataSet ds = (DataSet)Session["book"];            MyData md = new MyData();
                SqlConnection conn = md.getconn();
                if (conn.State.ToString() == "Closed")
                {
                    conn.Open();
                }
                SqlCommand cmd = new SqlCommand();
                for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {
                    string km = ds.Tables[0].Rows[i][0].ToString().Trim();
                    string ny = ds.Tables[0].Rows[i][1].ToString().Trim();
                    string tm = ds.Tables[0].Rows[i][2].ToString().Trim();
                    string da = ds.Tables[0].Rows[i][3].ToString().Trim();
                    string ss = "insert into 判断 values('" + km + "','" + ny + "','" + tm + "','" + da + "','" + DateTime.Now.ToString().Trim() + "') ";
                    cmd.Connection = conn;
                    cmd.CommandText = ss;
                    try
                    {
                        cmd.ExecuteNonQuery();                }
                    catch (Exception ex)
                    {
                        Response.Write("插入数据失败!由于:" + ex.Message);
                    }
                }
                conn.Close();
                Response.Write("<script>alert('数据已经导入到数据库!');</script>");
            }
      

  7.   

    比如我要把X.XSL的内容 插入数据库的表zxy,该怎么写代码??string Sql = "select * from [Sheet1$]"; 
    [Sheet1$]是指 数据库的表  还是EXCEL内容???
      

  8.   


    把dataset数据保存到excel
    public void CreateExcel(DataSet ds, string FileName)
        {
            HttpResponse resp;
            resp = Page.Response;
            resp.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
            resp.AppendHeader("Content-Disposition", "attachment;filename=" + FileName);
            string colHeaders = "", ls_item = "";
            //定义表对象与行对象,同时用DataSet对其值进行初始化
            DataTable dt = ds.Tables[0];
            DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
            int i = 0;
            int cl = dt.Columns.Count;
            //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
            for (i = 0; i < cl; i++)
            {
                if (i == (cl - 1))//最后一列,加n
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\n";
                }
                else
                {
                    colHeaders += dt.Columns[i].Caption.ToString() + "\t";
                }
            }
            resp.Write(colHeaders);
            //向HTTP输出流中写入取得的数据信息
            //逐行处理数据 
            foreach (DataRow row in myRow)
            {
                //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据  
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        ls_item += row[i].ToString() + "\n";
                    }
                    else
                    {
                        ls_item += row[i].ToString() + "\t";
                    }
                }
                resp.Write(ls_item);
                ls_item = "";
            }
            resp.End();
        }
      

  9.   

    补充一下  我用的是C# winform窗体!!!怎么实现啊···
      

  10.   

    OleDbConnection oled = new OleDbConnection("provider=microsoft.jet.OLEDB.4.0;Data source=d:\\mysqlserver\\dgmk.mdb");
                        string ConnectionString = "[sheet1$]";
                        OleDbConnection conn = new OleDbConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
                        string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=excel路径;Extended Properties='Excel 8.0;IMEX=1'";
                        OleDbConnection olconn = new OleDbConnection(strConn);
                        OleDbDataAdapter oada = new OleDbDataAdapter("select * from [sheet1$]", olconn);
                        DataSet ds = new DataSet();
                       
                        oled.Open();
                    try
                      {
                            oada.Fill(ds, "[sheet1$]");
                            OleDbCommand comm = new OleDbCommand("select * from 网吧名称", conn);
                            comm.CommandType = CommandType.StoredProcedure;
                            for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                            {
                                for(int j=0;双循环)
                                   {
                                if (ds.Tables[0].Rows[0][j].ToString() != " ")
                                {
                                    string o = comboBox1.Text.Trim() + "应收金额";
                                    OleDbCommand oleddata = new OleDbCommand("Update cattle Set " + o + "='" + ds.Tables[0].Rows[i][j].ToString() + "' where 网吧名称='" + ds.Tables[0].Rows[i]["网吧名称"].ToString() + "'", oled);
                                    oleddata.ExecuteNonQuery();
                                    }
                                }
                                
                            }
                            MessageBox.Show("导入完成");                      
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("excel表格格式不对,或者数据连接失败,检查后重试"+ex.ToString(), "导入失败");
                        }
      

  11.   

    我想问问楼上的兄弟们
    你们打开EXCEL的时候
    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=excel路径;Extended Properties='Excel 8.0;IMEX=1'"; 
    OleDbConnection conn = new OleDbConnection(strConn);
    conn.Open();
    这里不会出现
    “找不到可安装的ISAM”
    这个问题?
    我怎么解决不了?
    提前谢谢啦
    帮忙解决下
      

  12.   

    楼主能不能分享一下如何将EXCEL的内容导入数据库中
    我遇到了和你一样的问题
    至今没有解决
    打包的问题看看对你有帮助没?
    vs2005 打包,并自动安装SQL数据库,创建部署项目    
    1.  在“文件”菜单上指向“添加项目”,然后选择“新建项目”。    
    2.  在“添加新项目”对话框中,选择“项目类型”窗格中的“安装和部署项目”,然后选择“模板”窗格中的“安装项目”。在“名称”框中键入  setup1。    
    3.  单击“确定”关闭对话框。    
    4.  项目被添加到解决方案资源管理器中,并且文件系统编辑器打开。    
    5.  在“属性”窗口中,选择  ProductName  属性,并键入  信息管理系统  。    
        
    二).将  主程序  项目的输出添加到部署项目中    
    1.  在“文件系统编辑器”中,选择“应用程序文件夹”。在“操作”菜单上,指向“添加”,然后选择“项目输出”。    
    2.  在“添加项目输出组”对话框中,选择“项目”下拉列表中的“你的程序”。    
    3.  单击“确定”关闭对话框。    
    4.  从列表中选择“主输出”和“内容文件”组,然后单击“确定”。    
        
    三).创建安装程序类    
    1.  在“文件”菜单上指向“新建”,然后选择“项目”。    
    2.  在“新建项目”对话框中,选择“项目类型”窗格中的“Visual  Basic  项目”,然后选择“模板”窗格中的“类库”。在“名称”框中键入  installDB。    
    3.  单击“打开”关闭对话框。    
    4.  从“项目”菜单中选择“添加新项”。    
    5.  在“添加新项”对话框中选择“安装程序类”。在“名称”框中键入  installDB。    
    6.  单击“确定”关闭对话框。    
    7.  详细代码附后。 
        
    四).创建自定义安装对话框    
    1.  在解决方案资源管理器中选择“setup1”项目。在“视图”菜单上指向“编辑器”,然后选择“用户界面”。    
    2.  在用户界面编辑器中,选择“安装”下的“启动”节点。在“操作”菜单上,选择“添加对话框”。    
    3.  在“添加对话框”对话框中,选择“许可协议”对话框,然后单击“确定”关闭对话框。    
    4.  在“添加对话框”对话框中,选择“文本框  (A)”对话框,然后单击“确定”关闭对话框。    
    5.  在“操作”菜单上,选择“上移”。重复此步骤,直到“文本框  (A)”对话框位于“安装文件夹”节点之上。    
    6.  在“属性”窗口中,选择  BannerText  属性并键入:安装数据库. 
    7.  选择  BodyText  属性并键入:安装程序将在目标机器上安装数据库 
    8.  选择  Edit1Label  属性并键入:数据库名称: 
    9.  选择  Edit1Property  属性并键入  CUSTOMTEXTA1 
    10.  选择  Edit1Value  属性并键入:dbservers 
    11.  选择  Edit2Label  属性并键入:服务器名: 
    12.  选择  Edit2Property  属性并键入  CUSTOMTEXTA2 
    13.  选择  Edit2Value  属性并键入:(local) 
    14.  选择  Edit3Label  属性并键入:用户名: 
    15.  选择  Edit3Value  属性并键入:sa 
    16.  选择  Edit3Property  属性并键入  CUSTOMTEXTA3 
    17.  选择  Edit4Label  属性并键入:密码: 
    18.  选择  Edit4Property  属性并键入  CUSTOMTEXTA4 
    19.  选择  Edit2Visible、Edit3Visible  和  Edit4Visible  属性,并将它们设置为  true    
        
    五).创建自定义操作    
    1.  在解决方案资源管理器中选择“setup1”项目。在“视图”菜单上指向“编辑器”,然后选择“自定义操作”。    
    2.  在自定义操作编辑器中选择“安装”节点。在“操作”菜单上,选择“添加自定义操作”。    
    3.  在“选择项目中的项”对话框中,双击“应用程序文件夹”。    
    4.  选择“主输出来自  installDB(活动)”项,然后单击“确定”关闭对话框。    
    5.    在“属性”窗口中,选择  CustomActionData  属性并键入“/dbname=[CUSTOMTEXTA1]  /server=[CUSTOMTEXTA2]  /user=[CUSTOMTEXTA3]  /pwd=[CUSTOMTEXTA4]  /targetdir="[TARGETDIR]\"”。    
        
    附:/targetdir="[TARGETDIR]\"是安装后的目标路径,为了在installDB类中获得安装后的路径,我们设置此参数。 
        
    六).添加文件    
    1.  将SQL  Server备份成文件DB.dat添加到“setup1”项目(在企业管理器中右击数据库->所有工作->备份数据库,备份成一个文件,取名为DB.dat) 
    2.  将安装文件LisenceFile.rtf添加到“setup1”项目 
    3.  在用户界面编辑器中,选择许可协议,设置LisenceFile属性为LisenceFile.rtf文件 
    4.一般会自动将依赖项添加到“检测到的依赖项”,如果没有,那么我们要手动将其加入步骤5) 
                        Crystal_Managed2003.msm          (如果有水晶报表) 
                        dotnetfxredist_x86.msm            (.net一定是必须的) 
                          ...                                                  (如果有引用其他的dll) 
    5.  如果使用了水晶报表,手动加入要包含的文件:项目-->添加-->合并模块(添加你的程序文件)  (包括dotNetFramework和MDAC27),位于:C:\Program  Files\Common  Files\Merge  Modules\  下,*为必要的 
    具体功能如下: 
                    (托管组件  MSM  处理所有托管组件的分发,其中包括  Windows  窗体查看器、Web  窗体查看器和所有  Crystal  Decisions  命名空间) 
                    *  Crystal_Managed2003.msm 
                          Crystal_Managed2003_chs.msm 
                    (对于使报表运行所需的所有其他文件,由数据库访问  MSM  处理其分发。其中包括数据库、导出和图表驱动程序。) 
                      *  Crystal_Database_access2003.msm 
                            Crystal_Database_access2003_chs.msm 
                      (KeyCode  MSM  处理  Crystal  Decisions  密钥号码的安装,注意是添加合并模块,否则没有“MergeMouduleProperties”属性) 
                      *  Crystal_regwiz2003.msm 
                      (如果报表文件使用了  ADO.NET  的  dataset  数据集对象,那么  VC_User_CRT71_RTL_X86_---.msm  和  VC_User_STL71_RTL_X86_---.msm  模块也必须包含在安装工程中。而且这两个模块的文件安装属性的"Module  Retargetable  Folder"项必须修改成为系统目录) 
                            VC_User_CRT71_RTL_X86_---.msm 
                            VC_User_STL71_RTL_X86_---.msm 
                      (很多人经常出现查询错误,不妨加上这个) 
    5.  打开解决方案-->右键点击Crystal_regwiz2003.msm的属性,在“MergeMouduleProperties”里的  “License  Key”填入:AAP5GKS0000GDE100DS(这个是你生成Crystal  Report是用到的注册号的密码!) 
      
      
        七).打包時加入卸载功能: 
    方法一: 
    1.在打包項目中添加文件msiexec.exe(一般可在c:\windows\system32\下找到) 
    2.在文件系統視圖中選擇應用程序文件夾,在msiexec.exe上按右鍵,選擇創建快捷方式,重命名快捷方式為"卸载". 
    3.更改此快捷方式的Arguments  为"/x  {產品id}",產品id的值為打包項目的ProductCode屬性值. 
    方法二:(推荐) 
    1.先生成安装包,记下ProductCode(选择解决方案资源管理器根目录如setup1,再查看属性标签,不是右键中的属性),下面要用到 
    2.用VS.net建立一个新的控制台程序uninst.exe文件 
    'power  by:  landlordh 
    'for  2000,xp,2003 
    Module  uninstall 
              Sub  Main() 
                      Dim  myProcess  As  Process  =  New  Process 
                      If  System.Environment.OSVersion.ToString.IndexOf("NT  5")  Then 
                              myProcess.Start("msiexec",  "/X{2B65D4A9-C146-4808-AB4B-321FB0779559}")    '改为自己的ProductCode 
                      End  If 
                      myProcess.Close() 
              End  Sub 
    End  Module 
      

  13.   

    楼上兄弟 十分 感谢··
    40分给你了··
    还剩20分 问个送分题:
    我今天做软件 电脑 突然蓝屏  已经出现了  3次了
    每次都是 软件运行时···这是什么原因???
    我软件 用了 SKINENGINE`
    界面皮肤·和这个应该没关系吧?