MaximeChardonnay
-
Modifié le 1 mars 2022 à 12:19
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023
-
11 févr. 2022 à 07:22
Bonjour, je débute dans la programmation C# et je souhaite récupérer les éléments d'un classeur Excel déjà remplit.
Je précise déjà remplit car je peux récupérer mes éléments depuis la feuille active mais je n'arrive pas à atteindre les autres feuilles.
J'utilise Microsoft.Office.Interop.Excel pour information.
Voici le code :
namespace WinFormsApp3
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
appli = new Microsoft.Office.Interop.Excel.Application();
appli.Visible = false;
//---------- création du classeur ---------
classeur = (Microsoft.Office.Interop.Excel._Workbook)(appli.Workbooks.Open("f:\\AA.xlsx", M, M, M, M, M, M, M, M, M, M, M, M, M, M));
//------ activer la feuille ----------
feuille1 = (Microsoft.Office.Interop.Excel._Worksheet)classeur.ActiveSheet;
//Remplir les en-têtes
feuille1.Name = "";
feuille1.Cells[1, 1] = "";
feuille1.Cells[1, 2] = "";
try
{
int n = 2;
while (feuille1.Cells[n, 1].Text != "")
{
comboBox1.Items.Add(feuille1.Cells[n, 1].Value);
n++;
}
//----- Auto-Enregistrement ---------------
//classeur.Close(true, M, M); // M représenter "Missing Value"
}
catch (Exception ex) { MessageBox.Show("L'erreur est : " + ex.Message); }
finally
{
//feuille = null;
//classeur = null;
//appli.Quit();
//appli = null;
}
}
Microsoft.Office.Interop.Excel.Application appli;
Microsoft.Office.Interop.Excel._Workbook classeur;
Microsoft.Office.Interop.Excel._Worksheet feuille1;
Microsoft.Office.Interop.Excel._Worksheet feuille2;
Microsoft.Office.Interop.Excel._Worksheet feuille3;
object M = System.Reflection.Missing.Value;
object FileName = "f:\\AA.xlsx";
public void fermeture()
{
classeur.Close(true, M, M); // M représenter "Missing Value"
feuille1 = null;
feuille2 = null;
classeur = null;
appli.Quit();
appli = null;
}
public void button1_Click_1(object sender, EventArgs e)
{
feuille2.Cells[10, 1] = "essai";
fermeture();
}
}
}
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023622 11 févr. 2022 à 07:15
Bonjour
Et pourquoi t’embêter avec l’API ?
Pour lire un fichier excel tu peux t’y connecter comme s’il s’agissait d’une base de données.
Tu peux aussi agir directement sur le fichier (s’il s’agit d’un xlsx).
Et si tu regardes dans les nugets, y’en a qui te permettent de « piocher » les données avec Linq par exemple
Whismeril
Messages postés18292Date d'inscriptionmardi 11 mars 2003StatutContributeurDernière intervention26 mars 2023622 11 févr. 2022 à 07:22
11 févr. 2022 à 07:22
Et là un exemple avec l’API https://codes-sources.commentcamarche.net/source/50624-piloter-excel-via-microsoft-office-interop-excel
Mais je le pense vraiment, dans visual studio, tu vas dans la recherche de nugets tu tapes linq excel et tu auras la façon la plus simple