Bonjour la communauté. s'il vous plait j'ai un souci. je suis entrain de réaliser un projet dans le but de m'exercer un peu. je veut réaliser un programme c# windows form pour la gestion de bibliothèque et pour cela j'utilise un datagridview pour la collecte des fichiers et un fichier excel pour l'enregistrement de ces données. au chargement de la fenêtre les données devrons être charger dans le datagrid l'utilisateur devrais pouvoir ensuite ajouter des lignes dans le datagrid sauf que le message d'exception qui est affiché es: "impossible d'ajouter par programmation des lignes à la collection de lignes datagridview lorsque le contrôle est lié aux données". du coup impossible pour l'utilisateur d'ajouter une nouvelle. le code pour la connexion au fichier excel pour l'insertion des données dans le datagrid
Code pour le bouton ajouter pour une nouvelle ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 System.Data.OleDb.OleDbConnection MyConnection; System.Data.DataSet DtSet; System.Data.OleDb.OleDbDataAdapter MyCommand; MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Users\NGOUNOU\Desktop\Livre.xlsx';Extended Properties=Excel 12.0;"); MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Feuil1$]", MyConnection); MyCommand.TableMappings.Add("Table", "Net-informations.com"); DtSet = new System.Data.DataSet(); MyCommand.Fill(DtSet); dataGridView1.DataSource = DtSet.Tables[0]; MyConnection.Close();
Le deuxième problème réside dans l'enregistrement dans le fichier excel. quand j'appuis sur le bouton enregistré une exception est généré
Code : Sélectionner tout - Visualiser dans une fenêtre à part dataGridView1.Rows.Add(IntLivre.Text, MaisonEdition.Text, AuteurLivre.Text, type, LbDate.Text);
l'image de l'execption
et le sode du bouton enregistré
j'aimerai savoir qu'elles sont mes erreurs et si possible des solutions et d'autre méthode pour l'importation et l'exportation des données via excel et s'il y une autre méthode plus efficace de gérer ses données que de passer par le fichier excel.
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 private void Btn_Enregistre_Click(object sender, EventArgs e) { if (MessageBox.Show("voulez vous enregistrer les données?", "confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Information) == DialogResult.Yes) { try { string chemin = ""; saveFileDialog1.Filter = "Document Excel|.*xlsx"; if (saveFileDialog1.ShowDialog() == DialogResult.OK) chemin = saveFileDialog1.FileName; StreamWriter writer = new StreamWriter(chemin); Microsoft.Office.Interop.Excel._Application app = new Microsoft.Office.Interop.Excel.Application(); Microsoft.Office.Interop.Excel._Workbook workbook = app.Workbooks.Add(Type.Missing); Microsoft.Office.Interop.Excel._Worksheet worksheet = null; worksheet = workbook.Sheets[1]; worksheet = workbook.ActiveSheet; worksheet.Name = "CustommerDetail"; for (int i = 1; i < dataGridView1.Columns.Count + 1; i++) { worksheet.Cells[i, 1] = dataGridView1.Columns[i - 1]; } for (int i = 0; i < dataGridView1.Rows.Count; i++) { for (int j = 0; j < dataGridView1.Columns.Count; j++) { worksheet.Cells[i + 2, j + 1] = dataGridView1.Rows[i].Cells[j].Value.ToString(); } } var sauvegarder = new SaveFileDialog(); sauvegarder.FileName = "Livre"; sauvegarder.DefaultExt = "xlsx"; if (sauvegarder.ShowDialog() == DialogResult.OK) { workbook.SaveAs(sauvegarder.FileName, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); } app.Quit(); } catch (Exception E) { MessageBox.Show("erreur d'enregistrement"+E.Message); } } }
Merci à vous
Partager