繁体   English   中英

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

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

我想将Excel工作表数据插入SQL Server。 这个Excel数据表有很多工作表,我想用excel工作表名称插入所有数据。 我写的代码在我的SQL Server表中插入了两步。

您能告诉我如何插入具有特定工作表名称的数据吗?

例如

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

码:

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();
            }
        }
     }
 }

您是否尝试使用内置SQL选项从EXCEL导入数据? 在此处输入图片说明

这对我来说可以从EXCEL / Access导入数据。

暂无
暂无

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

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