SqlBulkCopy - La table externe n'est pas au format attendu

c# sqlbulkcopy visual-studio-2010

Question

J'essaie d'utiliser SqlBulkCopy selon l'exemple de la section Importation de données de feuille de calcul Excel dans la table de base de données SQL Server à l'aide de SqlBulkCopy .

J'ai créé le tableau et la feuille Excel, OK et fait le codage, mais je continue à obtenir

La table externe n'est pas au format attendu.

à la ligne connection.open() .

Comment puis-je me débarrasser de ce problème?

    // Connection String to Excel Workbook
    String savePath = @"C:\TEMP\";

    String fileName = "upload.xls";
    savePath += fileName;
    //newpath += fileName;
    FileUpload1.SaveAs(savePath);

    string excelConnectionString =
        "Provider=Microsoft.Jet.OLEDB.4.0;" +
        "Data    Source=" + savePath + ";" +
        "Extended Properties=Excel 8.0;";

    // Create Connection to Excel Workbook
    using (OleDbConnection connection = new OleDbConnection(excelConnectionString))
    {
        OleDbCommand command = new OleDbCommand("Select ID,Data FROM [Data$]", connection);

        connection.Open();

        // Create DbDataReader to Data Worksheet
        using (DbDataReader dr = command.ExecuteReader())
        {
            // SQL Server Connection String
            string sqlConnectionString = "Data Source=GRACC011334\\SQLEXPRESS;Initial Catalog=ComputerBroadcastNetwork;Integrated Security=True";

            // Bulk Copy to SQL Server
            using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
            {
                bulkCopy.DestinationTableName = "ExcelData";
                bulkCopy.WriteToServer(dr);
            }
        }
    }

Réponse acceptée

Je l'ai. Je devais changer le format de la chaîne de connexion et le changer en

string excelConnectionString = (@"Provider=Microsoft.Jet.OLEDB.4.0;DataSource=C:\TEMP\Book1.xls;Extended Properties='Excel 8.0;HDR=NO;IMEX=1'"); 

Réponse populaire

Pour moi, cette erreur a été provoquée en essayant de copier en bloc à partir d'une feuille de calcul au format de fichier .xlsx plus récent. Après avoir converti la feuille de calcul au format .xls plus ancien, j’ai été en mesure de faire la copie sans recevoir l’erreur.

J'utilise la même chaîne de connexion que vous avez spécifiée ci-dessus, avec

Fournisseur = Microsoft.Jet.OLEDB.4.0 et propriétés étendues = Excel 8.0

Donc, apparemment, les fichiers .xlsx nécessitent des propriétés de fournisseur et / ou étendues différentes



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi