LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

读取Excel的记录并导入SQL数据库

admin
2017年11月16日 23:48 本文热度 6908

准备一下,近段时间,需要把Excel的数据导入数据库中。

引用命名空间:

using System.Configuration;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;

 

你可以写一个方法,是去读取Excel文档的方法,返回DataSet数据集:

 

复制代码
private DataSet ImportExcelToDataSet(string virtualPath, string sqlQueryStatement)
    {
        string excelConnectionString = DB.ExcelConnectionString(Server.MapPath(virtualPath));
        OleDbConnection dc = new OleDbConnection(excelConnectionString);
        OleDbDataAdapter da = new OleDbDataAdapter(sqlQueryStatement, dc);
        DataSet ds = new DataSet();
        da.Fill(ds);
        return ds;
    }
复制代码


导入数据库,在数据库中,需要创建一个表来存储Excel导入来的数据:



接下来,你可以使作SqlBulkCopy的方法进行复制数据库:

 

复制代码
try
        {
            string cs = ConfigurationManager.ConnectionStrings["InsusSqlConnectionString"].ConnectionString;
            using (SqlConnection sqlConn = new SqlConnection(cs))
            {
                string sqlQueryStatement = "SELECT [Material],[Plnt],[Level],[Item],[Component],[Object description] FROM [Sheet1$]";
                string virtualPath = "~/App_Data/Book1.xlsx";

                DataSet ds = ImportExcelToDataSet(virtualPath, sqlQueryStatement);

                DataTable dt = ds.Tables[0];

                sqlConn.Open();
                using (SqlBulkCopy sqlbc = new SqlBulkCopy(sqlConn))
                {
                    sqlbc.DestinationTableName = "BOM";
                    sqlbc.ColumnMappings.Add("Material", "Material");
                    sqlbc.ColumnMappings.Add("Plnt", "Plnt");
                    sqlbc.ColumnMappings.Add("Level", "Level");
                    sqlbc.ColumnMappings.Add("Item", "Item");
                    sqlbc.ColumnMappings.Add("Component", "Component");
                    sqlbc.ColumnMappings.Add("Object description", "Object description");
                    sqlbc.WriteToServer(dt);
                    Response.Write("数据导入成功!");
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
复制代码


演示:

 

 

下面内容于2017-10-17 14:38分添加:

使用sqlDataReader来导入,没有做过多的测试,速度与DataSet快不了多少:


复制代码
private OleDbDataReader ImportExcelToDataReader(string virtualPath, string sqlQueryStatement)
    {
        string excelConnectionString = DB.ExcelConnectionString(Server.MapPath(virtualPath));
        OleDbConnection oleConn = new OleDbConnection(excelConnectionString);
        OleDbCommand oleComm = new OleDbCommand(sqlQueryStatement, oleConn);

        oleConn.Open();
        return oleComm.ExecuteReader();
    }
复制代码


SqlBulkCopy的方法:


 

复制代码
 string sqlQueryStatement = "SELECT [Material],[Plnt],[Level],[Item],[Component],[Object description] FROM [Sheet1$]";
        string virtualPath = "~/App_Data/Book1.xlsx";

        string cs = ConfigurationManager.ConnectionStrings["InsusSqlConnectionString"].ConnectionString;
        SqlConnection sqlConn = new SqlConnection(cs);

        OleDbDataReader reader = ImportExcelToDataReader(virtualPath, sqlQueryStatement);

        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn))
        {
            bulkCopy.DestinationTableName = "BOM";
            try
            {
                sqlConn.Open();
                bulkCopy.WriteToServer(reader);
                Response.Write("数据导入成功。");
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                reader.Close();
                sqlConn.Close();
            }
        }
复制代码

该文章在 2017/11/16 23:48:37 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved