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

    假如Excel中的数据如下:
    21.jpg
     
     
    数据库建表如下:
     
    22.jpg
     
    其中Id为自增字段:
    23.jpg
     
     
     代码如下:
    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:UsersNewSpringDesktopDemoInExcelOutExcelInExcelOutExcelexcelExcelToDB.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;
            }
        }
    }
     
     运行结果:
     
    24.jpg
     
  • 相关阅读:
    如何优化数据库中数据的查询
    2句sql语句的比较
    未来五年程序员应当具备的十项技能
    中小IT企业如何留住80后技术人才
    ORACLE的sign函数和DECODE函数
    Windows Server 2008系统 安装Oracle 10g 错误
    ORACLE 错误 ora01830 解决方法
    oracle instr函数
    Oracle 9i安装时没有找到OCS4J.properties 解决办法
    C# 中的委托和事件
  • 原文地址:https://www.cnblogs.com/DBtwoer/p/3659149.html
Copyright © 2011-2022 走看看