J'ai créé un programme sous Winform C# visual studio sous Window 11 Famille 64bit et Framework cible .NET 8.0.
Ce programme a fonctionné parfaitement.
Lorsque je l'ai repris, sans le modifier, il ne fonctionne plus sur les interop Excel et Word.
Processeur 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 1.69 GHz
Mémoire RAM installée 16,0*Go (15,8*Go utilisable)
Type du système Système d’exploitation 64*bits, processeur x64
Après maintes recherches, j'ai décidé de recréer un projet minimalise en WindowsForm, puis en Winform C#, avec le même code et le même interop Excel de COM.
Le résultat est assez surprenant mais je retrouve l'erreur de mon programme initial !!!
Une simple Form, un datagrid et un fichier Excel de data à charger dans le Datagrid1. Simple !
Voici le programme winform qui bug sur Workbooks et Sheets[1] ( erreurs CS 1061)
*********************************************************************************************
namespace WinFormsApp1
{ using Excel = Microsoft.Office.Interop.Excel;
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void ChargerFichierExcelDansDataGridView(string filename)
{
Excel.Application xlApp = new Excel.Application();
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(filename);
Excel.Worksheet xlWorksheet = (Excel.Worksheet)xlWorkbook.Sheets[1];
// Obtenez le nombre de lignes et de colonnes
int rowCount = xlWorksheet.UsedRange.Rows.Count;
int colCount = xlWorksheet.UsedRange.Columns.Count;
for (int i = 1; i <= rowCount; i++)
{
DataGridViewRow row = new DataGridViewRow();
for (int j = 1; j <= colCount; j++)
{
if (i == 1) // Si c'est la première ligne, ajoutez les en-têtes de colonnes
{
DataGridViewTextBoxColumn column = new DataGridViewTextBoxColumn();
column.HeaderText = ((Excel.Range)xlWorksheet.Cells[i, j]).Text;
dataGridView1.Columns.Add(column);
}
else // Ajoutez les données aux lignes suivantes
{
row.Cells.Add(new DataGridViewTextBoxCell
{
Value = ((Excel.Range)xlWorksheet.Cells[i, j]).Text
});
}
}
if (i > 1)
{
dataGridView1.Rows.Add(row);
}
}
xlWorkbook.Close(false);
xlApp.Quit();
// Libérez les ressources COM utilisées par Excel
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorksheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlWorkbook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(xlApp);
}
private void Form1_Load(object sender, EventArgs e)
{
string filename = @"C:\PROJETS C#\PROJET ETIQUETTE BOIS ET BUCHES\ETIQUETTE DE PRODUCTION\SUIVI DE PROD M.xlsx";
ChargerFichierExcelDansDataGridView(filename);
}
}
}
**********************************************************************************************************************
Si quelqu'un connait l'astuce pour lever ce bug interop Excel, je l'en remercie par avance.
Partager