当前位置:数据库 > Excel >>

c#.net从excel表导入数据到网页而达到快速增加数据库行的操作

- 我的平台是vs2008+sql2005- 我想在网页实现,添加一个按钮,规定excel表的格式之后,能把excel的相应行的数据全部导入到sql2005里面,要准确对好我的sql预定的列- 大概的方法是怎样,希望能提供重要代码或例子参考,感谢
答案:这样的问题很多了 
你需要一个放一个fileupload控件 用来上传excel ,还需要在项目里建一个文件夹用来存放你要上传的excel 。因为系统总是先把文件传到服务器上再进行操作,而不是对每个人的桌面excel直接操作。
using System.Data.SqlClient;
using System.Data.OleDb; //  要加这两句
public DataSet ExecleDs(string filenameurl, string table) // 这个函数就是将上传的excel读入dataset
    {
               string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + filenameurl + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";  // 这里excel03 如要该成07版再问我或者百度
        string strcom = "select *from [Sheet1$]";
        OleDbConnection conn = new OleDbConnection(strConn);
        conn.Open();
        DataSet ds = new DataSet();
        OleDbDataAdapter odda = new OleDbDataAdapter(strcom, conn);
        odda.Fill(ds, table);
        return ds;

    }

 protected void  Button4_Click(object sender, EventArgs e) // 你的那个确定按钮
{
    SqlConnection con = new SqlConnection();
        con.ConnectionString = "server='CWJMXT-14\\SQLEXPRESS';database='E-test';uid='sa';pwd=‘..'" ; // 你自己的数据库连接  
        if (FileUpload1.HasFile == false)//HasFile用来检查FileUpload是否有指定文件
        {
            Response.Write("<script>alert('请您选择Excel文件')</script> ");
            return;//当无文件时,返回
        }
        string IsXls = System.IO.Path.GetExtension(FileUpload1.FileName).ToString().ToLower();//System.IO.Path.GetExtension获得文件的扩展名
        if (IsXls != ".xls")
        {
            Response.Write("<script>alert('只可以选择Excel文件')</script>");
            return;//当选择的不是Excel文件时,返回
        }

        con.Open();
        string filename = FileUpload1.FileName;              //获取Execle文件名  DateTime日期函数
        // Label2.Text = filename;
        string savePath = Server.MapPath(("~\\upfiles\\") + filename);//Server.MapPath 获得虚拟服务器相对路径
        FileUpload1.SaveAs(savePath);                        //SaveAs 将上传的文件内容保存在服务器上
        DataSet ds = ExecleDs(savePath, filename);           //调用自定义方法
        DataRow[] dr = ds.Tables[0].Select();            //定义一个DataRow数组
        int rowsnum = ds.Tables[0].Rows.Count;
        if (rowsnum == 0)
        {
            Response.Write("<script>alert('Excel表为空表,无数据!')</script>");   //当Excel表为空时,对用户进行提示
        }
        else
        {
            for (int i = 0; i < dr.Length; i++)
            {
                //string pininputdate = dr[i]["].ToString();//日期 excel列名【名称不能变,否则就会出错】

                string insertstr = "insert into item1(试题组别,试题类型,试题题目,选项A,选项B,选项C,选项D,正确答案,随机或必出)values('" + dr[i][0].ToString() + "','" + dr[i][1].ToString() + "','" + dr[i][2].ToString() + "','" + dr[i][3].ToString() + "','" + dr[i][4].ToString() + "','" + dr[i][5].ToString() + "','" + dr[i][6].ToString() + "','" + dr[i][7].ToString() + "','" + dr[i][8].ToString() + "')";    //这里就是具体怎么样一行一行将dataset中的数据导入sql的 你也可以加一些其他判断什么的。                SqlCommand cmd = new SqlCommand(insertstr, con);
                try
                {
                    cmd.ExecuteNonQuery();
                }
                catch (MembershipCreateUserException ex)       //捕捉异常
                {
                    Response.Write("<script>alert('导入内容:" + ex.Message + "')</script>");
                }

            }
            Response.Write("<script>alert('Excle表导入成功!');location='itemmaintain.aspx'</script>");
        }
        con.Close();
    }
其他:楼上的说的很详细了,赞同。 

上一个:怎么把EXCEL的某个列的数据,按照已存在的表数据,导入相应的SQL的表
下一个:EXCEL表里怎么用SQL语句,或者是怎么引用别一个表的字段?

Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,