Problème de mappage SqlBulkCopy avec des arrêts complets dans les noms de colonne

c# sqlbulkcopy sql-server

Question

J'essaie d'importer une feuille Excel dans la base de données SQL Server. Le problème qui se pose concerne le mappage des colonnes. Si le nom de la colonne dans la feuille Excel se termine par un arrêt complet (par exemple: 'Non', 'Nom'

Message = Le nom de colonne 'N °' donné ne correspond à aucune colonne de la source de données.

Mais si je supprime l'arrêt complet, cela fonctionne parfaitement.

Le code source pour le mappage en C # est le suivant

     private void InsertExcelRecords()
     {
    string FilePath = "C:\\Upload\\" + FileUpload.FileName;
    string fileExtension = Path.GetExtension(FileUpload.PostedFile.FileName);
    FileUpload.SaveAs("C:\\Upload\\" + FileUpload.FileName);

    ExcelConn(FilePath, fileExtension);
    Econ.Open();
    DataTable dtExcelSheetName = Econ.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);

    string getExcelSheetName = dtExcelSheetName.Rows[0]["Table_Name"].ToString();

    Query = string.Format("Select * FROM [{0}]", getExcelSheetName + "A7:I");

    OleDbCommand Ecom = new OleDbCommand(Query, Econ);

    DataSet ds = new DataSet();
    OleDbDataAdapter oda = new OleDbDataAdapter(Query, Econ);
    Econ.Close();
    oda.Fill(ds);
    DataTable Exceldt = ds.Tables[0];
    connection();  
    SqlBulkCopy objbulk = new SqlBulkCopy(con);   
    objbulk.DestinationTableName = "BankTransaction";
    objbulk.ColumnMappings.Add("No", "Number");  
    con.Open();
    objbulk.WriteToServer(Exceldt);
    con.Close();
}

S'il vous plaît laissez-moi savoir si vous avez besoin de plus d'informations.

Réponse acceptée

Vous ne pourrez pas récupérer les noms de colonnes avec. à partir d'une feuille Excel utilisant OLEDB ou ODBC. Parce que ce n'est pas une syntaxe valide ou reconnaissable.

'.' nous l'utilisons généralement pour faire la distinction entre deux [schémas]. [table]. [colonne] comme ça.

OLEDB, ODBC Remplacer le nom de la colonne '.' caractère avec '#'

Donc, vous devez remplacer votre code

objbulk.ColumnMappings.Add("No.", "Number")

avec

objbulk.ColumnMappings.Add("No#", "Number")


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