C# 如何将EXCEL插入到数据库?

C# 如何将EXCEL插入到数据库?,第1张

using System

using System.Collections.Generic

using System.Linq

using System.Web

using System.Web.UI

using System.Web.UI.WebControls

using System.Data

using System.Collections

using System.Windows.Forms

using System.Data.OleDb

using System.Data.Common

using System.Data.SqlClient

public partial class Excel导入_Default : System.Web.UI.Page

{

    private static string filename

    private static string savePath

    private static DataSet ds //要插入的数据

    private static DataTable dt

    protected void Page_Load(object sender, EventArgs e)

    {

    }

    //上传文件到指定的服务器

    protected void Button1_Click1(object sender, EventArgs e)

    {

        filename = this.fileUploadExcel.FileName

        //savePath必须包含表名在内的所有路径名

        savePath = @"G:\项目组文件\项目.net学习资料\工程\Health\Excel导入\Files\" + this.fileUploadExcel.FileName    //上传服务器文件的存储,存在当前新建的文件夹

        this.fileUploadExcel.SaveAs(savePath)

        Boolean judge_excel = Judge_Excel()

        if (!judge_excel)

        {

            MessageBox.Show("上传的不是excel文件", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Error)

            return

        }

        else

            MessageBox.Show("上传文件成功", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)

        //测试,将excel中的sheet1导入到sqlserver中   

        //string connString = "server=localhostuid=sapwd=sqlgisdatabase=master"

        //System.Windows.Forms.OpenFileDialog fd = new OpenFileDialog()

        //if (fd.ShowDialog() == DialogResult.OK)

        //{

        //    //TransferData(fd.FileName, "sheet1", connString)

        //}

    }

    //判断文件是否是excel文件函数

    protected Boolean Judge_Excel()

    {

        string fileExtend = System.IO.Path.GetExtension(this.fileUploadExcel.FileName)

        if (fileExtend == ".xlsx" || fileExtend == ".xls")

            return true

        else

            return false

    }

    //获取excel数据按钮的触发,

    protected void Button2_Click(object sender, EventArgs e)

    {

        ExcelToDataSet()

        MessageBox.Show("获取数据成功", "标题", MessageBoxButtons.OKCancel, MessageBoxIcon.Information)

    }

    //从excel表中获取数据的函数

    public void ExcelToDataSet()

    {

        string strConn = "Provider = Microsoft.Jet.OLEDB.4.0  Data Source = " + savePath + "Extended Properties=\"Excel 8.0HDR=YesIMEX=1\""

        OleDbConnection conn = new OleDbConnection(strConn) //连接excel            

        if (conn.State.ToString() == "Open")

        {

            conn.Close()

        }

        conn.Open()    //外部表不是预期格式,不兼容2010的excel表结构

        string s = conn.State.ToString()

        OleDbDataAdapter myCommand = null

        ds = null

        /*DataTable yTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" })//获取表的框架,几行几列

        string tableName = yTable.Rows[0]["filename"].ToString() //表示的是几行几列  

        string strSel = "select * from [" + filename + "]"//xls */

        string strExcel = "select * from [sheet1$]"  //如果有多个sheet表时可以选择是第几张sheet表    

        myCommand = new OleDbDataAdapter(strExcel, conn)//用strExcel初始化myCommand,查看myCommand里面的表的数据??

        ds = new DataSet()

        myCommand.Fill(ds)     //把表中的数据存放在ds(dataSet)

        conn.Close()

        try

        {

            dt = ds.Tables[0]

            this.dataGridView1.DataSource = dt

        }

        catch (Exception err)

        {

            MessageBox.Show(" *** 作失败!" + err.ToString())

        }

    }

    //excel导入数据库sql的按钮触发

    protected void Button3_Click(object sender, EventArgs e)

    {

        //string path = @"D:\数据库SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Test.mdf"

        string connString = "server=localhostuid=sapwd=1234database=Test"   //连接数据库的路径方法

        //String connString=@"server=localhostuid=sapwd=1234database=D:\数据库SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\Test.mdf"

        SqlConnection conn = new SqlConnection(connString)

        conn.Open()

        DataRow dr = null

        int C_Count = dt.Columns.Count//获取列数

        for (int i = 0 i < dt.Rows.Count i++)  //记录表中的行数,循环插入

        {

            dr = dt.Rows[i]

            insertToSql(dr, C_Count, conn)

        }

        conn.Close()

       

        if (dataGridView1.Rows.Count > 0)  //把数据库表中的数据显示到表中,可判断有没有数据

        {

            MessageBox.Show("导入成功!")

        }

        else

        {

            MessageBox.Show("没有数据!")

        }

    }

    //使用bcp,不容易出错而且效率高

    /*try

    {

        using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connString))

        {

            bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied)

            bcp.BatchSize = 100//每次传输的行数   

            bcp.NotifyAfter = 100//进度提示的行数   

            bcp.DestinationTableName = savePath//目标表   

            bcp.WriteToServer(ds.Tables[0])

        }   

    }

    catch

    {

        System.Windows.Forms.MessageBox.Show(ex.Message)

    }*/

    //插入数据库的函数

    protected void insertToSql(DataRow dr, int column_count, SqlConnection conn)

    {

        //excel表中的列名和数据库中的列名一定要对应  

        string name = dr[0].ToString()//需要把内个列都列出来

        string age = dr[1].ToString()

        string sex = dr[2].ToString()

        //当数据库中有多个表时,怎么分辨插入的表

        string sql = "insert into 客户 values('" + name + "','" + age + "','" + sex + "')"

        SqlCommand cmd = new SqlCommand(sql, conn)

        cmd.ExecuteNonQuery()

    }

    //从excel表中获取数据并存在

    //    protected void ImportFromExcel()

    //    {

    //        string execelConnectionStr = @"Provider=Microsoft.Jet.OLEDB.4.0Data Source=filename

    //        Extended Properties=""Excel 8.0HDR=YESIMEX=1\"""//表第一行是标题,不做为数据使用, Excel 档案只能用来做“读取”用途。

    //        ds = new DataSet()

    //        string connString = "Provider = Microsoft.Jet.OLEDB.4.0  Data Source = " 

    //            + savePath + "Extended Properties=\"Excel 8.0HDR=YesIMEX=1\""

    //        DataTable table = OleDbHelper.GetExcelTables(connString)

    //        if (table == null || table.Rows.Count <= 0)

    //        {

    //            return

    //        }

    //        foreach (DataRow dr in table.Rows)

    //        {

    //            string cmdText = "select * from [" + dr["TABLE_NAME"].ToString() + "]"

    //            DataTable dt = OleDbHelper.FillDataTable(connString, cmdText)

    //            dt.TableName = dr["TABLE_NAME"].ToString()

    //            ds.Tables.Add(dt)

    //        }

    //    }

}

1、打开SQL Server 2014 Management Studio 数据库,并且登录进去;

2、新建一个数据库,将excel导入,在新建的数据名字上,鼠标右键,选择任务选项,之后导入数据,就会看到导入excel文件的窗口;

3、下拉框选中Microsoft Excel,浏览添加你需要导入到数据库的excel文件,然后点击下一步;

4、下拉框选中sql开头的,验证方式自己选择,一般是默认的验证方式,然后下面的数据库;

5、出现的这个页面不用动任何 *** 作,直接继续点击下一步即可;

6、现在表示导入成功,上面有各类详细的数据,可以选择关闭,这个时候记得刷新数据库的表,否则看不到新导入的数据。

方法/步骤

1

1)打开你的sql server,找到要导入数据的数据库,右键——〉任务——〉导入数据

2

2)按照图示选择要导入的excel

3

3)选择导入到哪个数据库

4

4)导入excel选择第一项即可,选择第二项是表与表直接内容的筛选复制

5

5)选择源表和源视图

6

6)编辑映射页面

7

7)继续下一步,点击完成,看到传输数据完成页面

8

8)进入数据库刷新,查看刚刚导入的表,完成!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6795795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存