zoukankan      html  css  js  c++  java
  • c#将Excel数据导入到数据库的实现代码

    这篇文章主要介绍了c#将Excel数据导入到数据库的实现代码,有需要的朋友可以参考一下

    假如Excel中的数据如下:

    数据库建表如下:

    其中Id为自增字段:

    代码:

    代码如下:

    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.Data.OleDb;
    using System.Configuration;
    using System.Data.SqlClient;
    namespace InExcelOutExcel
    {
    public partial class ExcelToDB : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    FileSvr fileSvr = new FileSvr();
    System.Data.DataTable dt = fileSvr.GetExcelDatatable("C:\Users\NewSpring\Desktop\Demo\InExcelOutExcel\InExcelOutExcel\excel\ExcelToDB.xlsx", "mapTable");
    fileSvr.InsetData(dt);
    }
    }
    class FileSvr
    {
    /// <summary>
    /// Excel数据导入Datable
    /// </summary>
    /// <param name="fileUrl"></param>
    /// <param name="table"></param>
    /// <returns></returns>
    public System.Data.DataTable GetExcelDatatable(string fileUrl, string table)
    {
    //office2007之前 仅支持.xls
    //const string cmdText = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;IMEX=1';";
    //支持.xls和.xlsx,即包括office2010等版本的 HDR=Yes代表第一行是标题,不是数据;
    const string cmdText = "Provider=Microsoft.Ace.OleDb.12.0;Data Source={0};Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
    System.Data.DataTable dt = null;
    //建立连接
    OleDbConnection conn = new OleDbConnection(string.Format(cmdText, fileUrl));
    try
    {
    //打开连接
    if (conn.State == ConnectionState.Broken || conn.State == ConnectionState.Closed)
    {
    conn.Open();
    }
    
    System.Data.DataTable schemaTable = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
    //获取Excel的第一个Sheet名称
    string sheetName = schemaTable.Rows[0]["TABLE_NAME"].ToString().Trim();
    //查询sheet中的数据
    string strSql = "select * from [" + sheetName + "]";
    OleDbDataAdapter da = new OleDbDataAdapter(strSql, conn);
    DataSet ds = new DataSet();
    da.Fill(ds, table);
    dt = ds.Tables[0];
    return dt;
    }
    catch (Exception exc)
    {
    throw exc;
    }
    finally
    {
    conn.Close();
    conn.Dispose();
    }
    }
    /// <summary>
    /// 从System.Data.DataTable导入数据到数据库
    /// </summary>
    /// <param name="dt"></param>
    /// <returns></returns>
    public int InsetData(System.Data.DataTable dt)
    {
    int i = 0;
    string lng = "";
    string lat = "";
    string offsetLNG = "";
    string offsetLAT = "";
    foreach (DataRow dr in dt.Rows)
    {
    lng = dr["LNG"].ToString().Trim();
    lat = dr["LAT"].ToString().Trim();
    offsetLNG = dr["OFFSET_LNG"].ToString().Trim();
    offsetLAT = dr["OFFSET_LAT"].ToString().Trim();
    //sw = string.IsNullOrEmpty(sw) ? "null" : sw;
    //kr = string.IsNullOrEmpty(kr) ? "null" : kr;
    string strSql = string.Format("Insert into DBToExcel (LNG,LAT,OFFSET_LNG,OFFSET_LAT) Values ('{0}','{1}',{2},{3})", lng, lat, offsetLNG, offsetLAT);
    string strConnection = ConfigurationManager.ConnectionStrings["ConnectionStr"].ToString();
    SqlConnection sqlConnection = new SqlConnection(strConnection);
    try
    {
    // SqlConnection sqlConnection = new SqlConnection(strConnection);
    sqlConnection.Open();
    SqlCommand sqlCmd = new SqlCommand();
    sqlCmd.CommandText = strSql;
    sqlCmd.Connection = sqlConnection;
    SqlDataReader sqlDataReader = sqlCmd.ExecuteReader();
    i++;
    sqlDataReader.Close();
    }
    catch (Exception ex)
    {
    throw ex;
    }
    finally
    {
    sqlConnection.Close();
    }
    //if (opdb.ExcSQL(strSql))
    // i++;
    }
    return i;
    }
    }
    }



    运行结果:

  • 相关阅读:
    html5+css3酷炫音频播放器代码
    js/html/css做一个简单的图片自动(auto)轮播效果//带注释
    gVIM+zencoding快速开发HTML/CSS/JS(适用WEB前端)
    使用libcurl,根据url下载对应html页面
    CSS+HTML+JQuery简单菜单
    【POJ1845】Sumdiv(数论/约数和定理/等比数列二分求和)
    【CodeForces727E/CF727E】Games on a CD (字符串哈希)
    【洛谷3224/BZOJ2733】[HNOI2012]永无乡 (Splay启发式合并)
    【BZOJ2565】最长双回文串 (Manacher算法)
    【洛谷2926/BZOJ1607】[USACO08DEC]Patting Heads拍头(筛法)
  • 原文地址:https://www.cnblogs.com/CandiceW/p/4204547.html
Copyright © 2011-2022 走看看