简体   繁体   English

SqlBulkCopy C#Excel具有工作表名称的所有数据

[英]SqlBulkCopy C# Excel all data with sheet names

I want insert Excel sheet data to SQL Server. 我想将Excel工作表数据插入SQL Server。 This Excel data sheet has many work sheet, I want insert all data with excel sheet name. 这个Excel数据表有很多工作表,我想用excel工作表名称插入所有数据。 I wrote code it insert two step in my SQL Server table. 我写的代码在我的SQL Server表中插入了两步。

Can you please tell me how to insert data with particular sheet name. 您能告诉我如何插入具有特定工作表名称的数据吗?

Eg 例如

Name Address WorksheetName
N1   A1     Sheet1
N2   A2     Sheet1
N3   A3         Sheet2 

Code: 码:

OleDbConnection oledbconn = new OleDbConnection(excelConnectionString);

oledbconn.Open();

DataTable dt = oledbconn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

if (dt == null)
{
   Response.Write("No record Found");
   //return;
}

DataRow row = dt.Rows[1];

// Get Excel sheet Name
//String[] SheetName = new String[dt.Rows.Count];
foreach (var sheetName in GetExcelSheetNames(excelConnectionString))
{
    for (int c = 0; c < sheetName.Length; c++)
    {
        string SheetName = row[c].ToString();
        string myExcelDataQuery = "SELECT * FROM [" + SheetName + "]";

        OleDbCommand oledbcmd = new OleDbCommand(myExcelDataQuery, oledbconn);
        OleDbDataReader dr = oledbcmd.ExecuteReader();

        string conn = ConfigurationManager.ConnectionStrings["TlcmealsContext"].ConnectionString;
        SqlConnection connectionString = new SqlConnection(conn);

        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connectionString))
        {
            bulkCopy.DestinationTableName = "ExcelTemps";

            try
            {
                bulkCopy.WriteToServer(dr);

                bulkCopy.WriteToServer(dt.CreateDataReader());
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            finally
            {
                // Close the SqlDataReader. The SqlBulkCopy
                // object is automatically closed at the end
                // of the using block.
                dr.Close();
            }
        }
     }
 }

Did you try to use built-in SQL option to import data from EXCEL? 您是否尝试使用内置SQL选项从EXCEL导入数据? 在此处输入图片说明

This has worked for me to import data from EXCEL/Access. 这对我来说可以从EXCEL / Access导入数据。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM