IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

comment gérer l'exception Cannot expand named range.


Sujet :

C#

  1. #1
    Membre à l'essai
    Femme Profil pro
    Phd student
    Inscrit en
    Décembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Phd student

    Informations forums :
    Inscription : Décembre 2015
    Messages : 26
    Points : 14
    Points
    14
    Par défaut comment gérer l'exception Cannot expand named range.
    Bonjour;
    j'essai d'importer un ensemble de pair de valeurs (val1,val2) généré par une méthode vers excel pour dessiner un graphique en utilisant ces valeurs, mais j'obtiens toujours cette exception Cannot expand named range. (à la ligne 27 : cmd1.ExecuteNonQuery();)
    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    private int index = 0;
            private bool first = true;
            private void InsertValuesIntoExcel(int vala, int valb)
            {
                string fileName = @"C:\Users\LUNA\Documents\test.xlsx";
                string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;" +
                        "Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=0'", fileName);
     
     
                using (OleDbConnection cn = new OleDbConnection(connectionString))
                {
                    cn.Open();
                    if (first)
                    {
                        OleDbCommand cmd0 = new OleDbCommand(@"CREATE TABLE [RawData] " +
                                                             "([valueA] int, " + "[valueB] int)", cn);
                        cmd0.ExecuteNonQuery();
                        first = false;
                    }
                    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [RawData] " +
                         "([valueA],[valueB]) " +
                         "VALUES(@value1,@value2)", cn);
                    cmd1.Parameters.AddWithValue("@value1", vala);
                    cmd1.Parameters.AddWithValue("@value2", valb);
                    //cmd1.Parameters.Add("@value1", OleDbType.Integer).Value = vala;
                    //cmd1.Parameters.Add("@value2", OleDbType.Integer).Value = valb;
                    cmd1.ExecuteNonQuery(); // l'exception se fait ICI
                }
     
            }
     
            private void DesignChartInExcel(int nbLigne)
            {
                string fileName = @"C:\Users\LUNA\Documents\test.xlsx";
                object missing = Type.Missing;
     
                object misValue = System.Reflection.Missing.Value;
     
                //create excel
                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
     
                //add excel workbook
                Microsoft.Office.Interop.Excel.Workbook wb = excel.Workbooks.Open(fileName);
                // Add chart.
                var sheet = (Worksheet)excel.ActiveSheet;
                var charts = sheet.ChartObjects() as
                    Microsoft.Office.Interop.Excel.ChartObjects;
                var chartObject = charts.Add(60, 10, 600, 300) as
                    Microsoft.Office.Interop.Excel.ChartObject;
                var chart = chartObject.Chart;
                // Set chart range.
                var range = (Range)sheet.get_Range("A1", "b101");
               // range.NumberFormat = "0";
                chart.SetSourceData(range,Missing.Value);
     
                // Set chart properties.
                chart.ChartType = Microsoft.Office.Interop.Excel.XlChartType.xlLine;
                chart.ChartWizard(Source: range,
                    Title: "Complexity Chart - AFDC is satisfied",
                    CategoryTitle: "X",
                    ValueTitle: "Y");
                //wb.Save();
                wb.Close(true, misValue, misValue);
                excel.Quit();
     
                releaseObject(sheet);
                releaseObject(wb);
                releaseObject(excel);
            }
     
            private void releaseObject(object obj)
            {
                try
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
                    obj = null;
                }
                catch (Exception ex)
                {
                    obj = null;
                    //MessageBox.Show("Exception Occured while releasing object " + ex.ToString());
                }
                finally
                {
                    GC.Collect();
                }
            }
    Merci

  2. #2
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Je fais cela de mémoire, mais il me semble que la gestion des requêtes paramétrées diffèrent en fonction du fournisseur utilisé. SqlClient utilise bien des variables nommées @MaVariable, mais OleDb utilise des ? avec une gestion de l'ordre des paramètres. Je crois que OleDB ne supporte pas les paramètres nommés.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Phd student
    Inscrit en
    Décembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Phd student

    Informations forums :
    Inscription : Décembre 2015
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Je n'ai pas compris ce que vous voulez dire? Est ce que vous pouvez me donner plus d'explications ?
    Merci

  4. #4
    Expert éminent sénior

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Points : 10 543
    Points
    10 543
    Billets dans le blog
    21
    Par défaut
    Autrement dit

    Ca
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [RawData] " +
                         "([valueA],[valueB]) " +
                         "VALUES(@value1,@value2)", cn);
                    cmd1.Parameters.AddWithValue("@value1", vala);
                    cmd1.Parameters.AddWithValue("@value2", valb);
    Ce n'est pas possible avec OleDbCommand mais l'est avec SqlCommand par exemple.

    Avec OleDbCommand, il faut utiliser des ?
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [RawData] " +
                         "([valueA],[valueB]) " +
                         "VALUES(?, ?)", cn);
                    cmd1.Parameters.AddWithValue("@value1", vala);
                    cmd1.Parameters.AddWithValue("@value2", valb);

  5. #5
    Membre à l'essai
    Femme Profil pro
    Phd student
    Inscrit en
    Décembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Phd student

    Informations forums :
    Inscription : Décembre 2015
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Je vous remercie je vais essayer ce nouveau code.

  6. #6
    Membre à l'essai
    Femme Profil pro
    Phd student
    Inscrit en
    Décembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Phd student

    Informations forums :
    Inscription : Décembre 2015
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Bonjour ;
    j'ai essayé de changer les paramètres mais toujours le même problème, lorsque je vérifié la feuille d'excel je trouve uniquement deux lignes rempli puis ça s’arrête.

  7. #7
    Membre à l'essai
    Femme Profil pro
    Phd student
    Inscrit en
    Décembre 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Algérie

    Informations professionnelles :
    Activité : Phd student

    Informations forums :
    Inscription : Décembre 2015
    Messages : 26
    Points : 14
    Points
    14
    Par défaut
    Je vous remercie le problème a été résolu, au fait c'était à cause du signe $ que j'ai oublié de mettre avec le nom de la table.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     private int index = 0;
            private bool first = true;
            private void InsertValuesIntoExcel(int gag, int wgag)
            {
                string fileName = @"C:\Users\LUNA\Documents\projetluna.xlsx";
                string connectionString = String.Format(@"Provider=Microsoft.ACE.OLEDB.12.0;" +
                        "Data Source={0};Extended Properties='Excel 12.0;HDR=YES;IMEX=0'", fileName);
     
     
                using (OleDbConnection cn = new OleDbConnection(connectionString))
                {
                    cn.Open();
                    if (first)
                    {
                        OleDbCommand cmd0 = new OleDbCommand(@"CREATE TABLE [RawData] " +
                                                             "([GAG] int, " + "[WGAG] int)", cn);
                        cmd0.ExecuteNonQuery();
                        first = false;
                    }
                    OleDbCommand cmd1 = new OleDbCommand("INSERT INTO [RawData$] " +
                         "([GAG],[WGAG]) " +
                         "VALUES(@value1,@value2)", cn);
                    cmd1.Parameters.AddWithValue("@value1", gag);
                    cmd1.Parameters.AddWithValue("@value2", wgag);
                    //cmd1.Parameters.Add("@value1", OleDbType.Integer).Value = gag;
                    //cmd1.Parameters.Add("@value2", OleDbType.Integer).Value = wgag;
                    cmd1.ExecuteNonQuery();
                }
     
            }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Cannot expand named range
    Par ibtissamr dans le forum ODI (ex-Sunopsis)
    Réponses: 0
    Dernier message: 12/05/2015, 17h55
  2. [XL-2010] Erreur "Cannot expand named range" sur Tableau nommé - Serveur CITRIX
    Par Arkio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/08/2014, 10h26
  3. Comment gérer les exceptions sur un tdbgrid?
    Par zanoubya dans le forum Débuter
    Réponses: 5
    Dernier message: 21/12/2011, 15h14
  4. Comment gérer une exception ?
    Par Hydro999 dans le forum R
    Réponses: 2
    Dernier message: 08/09/2010, 16h43
  5. [C#/SQL] Comment gérer les exceptions d'une Procédure stockée ?
    Par thomas_strass dans le forum Accès aux données
    Réponses: 10
    Dernier message: 06/07/2005, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo