Afficher une photo dans un document Excel à partir de son chemin

Signaler
Messages postés
44
Date d'inscription
lundi 27 août 2007
Statut
Membre
Dernière intervention
1 novembre 2016
-
Bonjour à tous,
Je souhaiterais afficher une photo dans un document Excel à partir de son chemin sous C#. Si quelqu'un à une idée et qu'il voudrait bien aider.
J'enregistre le chemin de la façon suivante:
Récupération:

private void lblPhoto_Click(object sender, EventArgs e)
{
try
{
// Nom du fichier de la photo à ajouter
OpenFileDialog ofdImage = new OpenFileDialog();
ofdImage.Title = "Selectionner la Photo à inserer";
ofdImage.CheckFileExists = true;
//ofdImage.InitialDirectory = Application.StartupPath;
ofdImage.Filter = "Fichiers image (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";
ofdImage.FilterIndex = 1;
ofdImage.RestoreDirectory = true;

if (ofdImage.ShowDialog() == DialogResult.OK)
{
// Affichage de la photo au format bitmap
this.pbxPhoto.Image = (Image)new Bitmap(ofdImage.FileName);
this.txtNomPhoto.Text = ofdImage.FileName.ToString();

// Pas encore d'id pour la nouvelle Photo
this.gbxEquipage.Text = "Nouvel Equipage";
this.gbxEquipage.Tag = null;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Erreur");
}
}

Enregistrement:

private void btnNouveau_Click(object sender, EventArgs e)
{
#region NOUVEAU
if (this.btnNouveau.Text == "&Nouveau")
{
this.toolTip1.SetToolTip(this.btnNouveau, "Sauvegarder Nouvel Enregistrement");
this.toolTip1.SetToolTip(this.btnAnnuler, "Annuler tout");
this.pbxPhoto.BackColor = Color.Blue;

Defaut();
Montrer_btn(true);
this.txtMatricule.Text = " ";
this.txtMatricule.SelectAll();
this.txtMatricule.Focus();
this.txtCodeEquipage.Text = "";
this.lblTotal.Visible = false;

this.btnNouveau.Text = "&Sauver";
this.btnNouveau.BackColor = Color.Blue;

this.btnAnnuler.Text = "&Annuler";
this.btnAnnuler.BackColor = Color.MediumSeaGreen;

this.btnModifier.Enabled = false;
this.btnSupprimer.Enabled = false;
this.btnPrecedent.Enabled = false;
this.btnSuivant.Enabled = false;
this.btnPremier.Enabled = false;
this.btnDernier.Enabled = false;
this.lblPosition.Text = "00/00";
this.AcceptButton = this.btnNouveau;
this.dgvEquipages.Visible = false;
}
#endregion

#region SAUVER
else if (this.btnNouveau.Text == "&Sauver")
{
if ((this.txtCodeEquipage.Text == "") || (this.txtCodeEquipage.Text == " "))
{
MessageBox.Show("Le Matricule du Soldat\nest obligatoire", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtMatricule.Text = " ";
this.txtMatricule.Focus();
this.txtMatricule.SelectAll();
}
else
{
if ((this.txtGrade.Text == "") | (this.txtGrade.Text == "---"))
{
MessageBox.Show("Veuillez saisir le Grade\ndans la zone correspondante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtGrade.Text = "---";
this.txtGrade.Focus();
this.txtGrade.SelectAll();
}
else
{
if ((string.IsNullOrEmpty(this.txtNomEquipage.Text)) || (this.txtNomEquipage.Text == " "))
{
MessageBox.Show("Veuillez Saisir\nle Nom du Militaire svp", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtNomEquipage.Text = " ";
this.txtNomEquipage.Focus();
this.txtNomEquipage.SelectAll();
}
else
{
if ((string.IsNullOrEmpty(this.txtPrenomEquipage.Text)) || (this.txtPrenomEquipage.Text == " "))
{
MessageBox.Show("Veuillez Saisir\nle Prénom du Militaire svp", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtPrenomEquipage.Text = " ";
this.txtPrenomEquipage.Focus();
this.txtPrenomEquipage.SelectAll();
}
else
{
if (this.tDateNaissance.Text == "")
{
MessageBox.Show("Veuillez Indiquer la Date\nde Naissance\ndu Militaire", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtDateNaissance.Focus();
this.txtDateNaissance.Select();
}
else
{
if ((this.txtLieuNaissance.Text == "") | (this.txtLieuNaissance.Text == "---------------"))
{
MessageBox.Show("Veuillez saisir\nle Lieu de Naissance\ndans la zone correspondante", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.txtLieuNaissance.Text = "---------------";
this.txtLieuNaissance.Focus();
this.txtLieuNaissance.SelectAll();
}
else
{
if (this.pbxPhoto.Image == null)
{
MessageBox.Show("Veuillez Ajouter la photo\ndu Militaire", "Enregistrement", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.lblPhoto.ForeColor = Color.Red;
}
else
{
//Declaration d'une boite de dialogue "YesNo"
//Si l'utilisateur confirme l'Enregistrement on exécute la requette
if (MessageBox.Show("Êtes-vous sûr de vouloir Ajouter" + "\n" +
"un nouvel enregistrement?", this.Text, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
OleDbConnection Cnex = new OleDbConnection(strConex);
Cnex.Open();
System.Data.OleDb.OleDbDataReader DtReader;
String Sqlquery = "SELECT * FROM [PERSONNELS] where matricule=@p01";
System.Data.OleDb.OleDbCommand Cmder = new System.Data.OleDb.OleDbCommand(Sqlquery, Cnex);
Cmder.Parameters.Add(new OleDbParameter("p01", System.Data.OleDb.OleDbType.VarWChar, 50,
ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, (this.txtCodeEquipage.Text)));
DtReader = Cmder.ExecuteReader();
if (DtReader.Read() != true)
{
// Connexion à la base de données
OleDbConnection Conex = new OleDbConnection(strConex);
//Préparation des paramètres
OleDbParameter Param_CodeEqui = new OleDbParameter("@CodeEqui", OleDbType.VarWChar, 50); //0
OleDbParameter Param_CodeGrd = new OleDbParameter("@CodeGrd", OleDbType.VarWChar, 5);//1
OleDbParameter Param_NomEq = new OleDbParameter("@NomEq", OleDbType.VarWChar, 50); //2
OleDbParameter Param_PrenomEq = new OleDbParameter("@PrenomEq", OleDbType.VarWChar, 50); //3
OleDbParameter Param_DateNaiss = new OleDbParameter("@DateNaiss", OleDbType.Date, 8);//4
OleDbParameter Param_CodeLieu = new OleDbParameter("@CodeLieu", OleDbType.VarWChar, 50);//5
OleDbParameter Param_NomPhoto = new OleDbParameter("@NomPhoto", OleDbType.VarWChar, 50);//6
Param_CodeEqui.Value = this.txtMatricule.Text; //0
Param_CodeGrd.Value = this.txtGrade.Text;//1
Param_NomEq.Value = this.txtNomEquipage.Text;//2
Param_PrenomEq.Value = this.txtPrenomEquipage.Text;//3
Param_DateNaiss.Value = this.txtDateNaissance.Text;//4
Param_CodeLieu.Value = this.txtLieuNaissance.Text;//5
Param_NomPhoto.Value = this.txtNomPhoto.Text;//6
string sInsertionSQL = string.Format("INSERT INTO PERSONNELS([matricule], [grade]," + "\n" +
"[nom], [prenoms], [date_naissance], [lieu], [nom_photo])" + "\n" +
"VALUES ({0},{1},{2},{3},{4},{5},{6})",
Param_CodeEqui.ParameterName, //0
Param_CodeGrd.ParameterName,//1
Param_NomEq.ParameterName,//2
Param_PrenomEq.ParameterName,//3
Param_DateNaiss.ParameterName,//4
Param_CodeLieu.ParameterName,//5
Param_NomPhoto.ParameterName,//6

OleDbCommand Comd = new OleDbCommand(sInsertionSQL.ToString(), Conex);

Comd.Parameters.Add(Param_CodeEqui); //0
Comd.Parameters.Add(Param_CodeGrd);//1
Comd.Parameters.Add(Param_NomEq);//2
Comd.Parameters.Add(Param_PrenomEq);//3
Comd.Parameters.Add(Param_DateNaiss);//4
Comd.Parameters.Add(Param_CodeLieu);//5
Comd.Parameters.Add(Param_NomPhoto);//6

Conex.Open();
Comd.ExecuteNonQuery();

MessageBox.Show("Nouvel Enregistrement\najouté avec succès", "Ajout", MessageBoxButtons.OK, MessageBoxIcon.Information);

Conex.Close();
Defaut();
Montrer_btn(true);

this.txtMatricule.Text = " ";
this.txtMatricule.SelectAll();
this.txtMatricule.Focus();
this.txtCodeEquipage.Text = "";

this.lblTotal.Visible = false;
this.btnAnnuler.Enabled = true;
this.btnAnnuler.Text = "&Annuler";
this.btnAnnuler.BackColor = Color.Green;
this.btnNouveau.Text = "&Sauver";
this.btnNouveau.BackColor = Color.Green;
this.dgvEquipages.Visible = false;
}
else
{
MessageBox.Show("Le titulaire du matricule\nest déjà enregistré", "Enregistrer", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
DtReader.Close();
Cnex.Close();
}
}
}
}
}
}
}
}
}
#endregion
}


AFFICHAGE

private void Afficher()
{
try
{
this.txtCodeEquipage.Text = DtSet.Tables[0].Rows[i - 1][0].ToString();
this.txtMatricule.Text = DtSet.Tables[0].Rows[i - 1][0].ToString();
this.txtGrade.Text = DtSet.Tables[0].Rows[i - 1][1].ToString();
this.txtNomEquipage.Text = DtSet.Tables[0].Rows[i - 1][2].ToString();
this.txtPrenomEquipage.Text = DtSet.Tables[0].Rows[i - 1][3].ToString();
this.txtDateNaissance.Text = DtSet.Tables[0].Rows[i - 1][4].ToString();
this.txtLieuNaissance.Text = DtSet.Tables[0].Rows[i - 1][5].ToString();
this.txtNomPhoto.Text = DtSet.Tables[0].Rows[i - 1][6].ToString();

}
catch
{
this.lblPosition.Text = "0/0";
}
}



AFFICHAGE DE LA PHOTO

private void txtNomPhoto_TextChanged(object sender, EventArgs e)
{
try
{
FileStream fs;
fs = new FileStream(this.txtNomPhoto.Text, FileMode.Open, FileAccess.Read);
this.pbxPhoto.Image = System.Drawing.Image.FromStream(fs);
fs.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Erreur");
}
}



Comment pensez-vous que je puisse afficher cette photo dans un document EXCEL. Merci pour votre aide.