Come importare correttamente le colonne excel con testo a capo attivato con Microsoft.ACE.OLEDB e SqlBulkCopy

c# excel oledb sqlbulkcopy sql-server

Domanda

Sto importando le righe da un foglio Excel in una tabella server SQL utilizzando l'inserimento di massa. Alcune colonne nella sorgente di Excel hanno l'opzione di abilitazione del testo e causano alcuni problemi.

Se hai scritto "testo spostato (1)" e "testo spostato (2)", appariranno come nella cella di Excel.

wrapped text (1) 
wrapped text (2)

Il problema che sto ottenendo è, quando quella riga viene importata nel server SQL, apparirà come di seguito

wrapped text (1)wrapped text (2)//Note that there is no space between the two texts

Mi piacerebbe che appaiano come sotto

 wrapped text (1) wrapped text (2)//note the space between them

Di seguito è riportata la pace del codice che sto utilizzando per l'importazione

 public static void insertdata1(string strexcelConnectionString, string strcommand, string strsqlConnectionString, string strtrunsqlQuery, string strtablename)
    {
        using (OleDbConnection connection = new OleDbConnection(strexcelConnectionString))
        {
            connection.Open();
            OleDbCommand command = new OleDbCommand(strcommand, connection);
            //truncate the table before inserting new data.
            SqlConnection cnntrunc = new SqlConnection(strsqlConnectionString);
            //open the connection.
            cnntrunc.Open();
            //begin the transaction.
            SqlTransaction myTrans = cnntrunc.BeginTransaction();//New a transaction                        
            SqlCommand truntble = new SqlCommand();
            truntble.Transaction = myTrans;
            truntble.Connection = cnntrunc;
            try
            {
                //Create DbDataReader to Data Worksheet.
                using (DbDataReader dr = command.ExecuteReader())
                {                     
                    //Bulk Copy to SQL Server.
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(strsqlConnectionString))
                    {
                        bulkCopy.DestinationTableName = strtablename;
                        bulkCopy.WriteToServer(dr);
                    }
                    //commit the transaction.
                    myTrans.Commit();
                }
            }
            catch (OleDbException ex)
            {
               //my error handling code here
            }
            catch (InvalidOperationException ex)
            {
                myTrans.Rollback();
                //more logging here
                throw ex;
            }
            finally
            {
                cnntrunc.Close();
            }
        }
    }

E blow è la mia stringa di connessione excel

strexcelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Server.MapPath(strfilename) + "; Extended Properties=\"Excel 12.0 XML;HDR=YES;IMEX=1;\"";

Risposta accettata

Dopo il mio BulkInsert, sto aggiornando le mie colonne problematiche come descritto qui. Come controllare i miei dati in SQL Server hanno ritorno a capo e avanzamento riga?



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché