Comment écrire des données dans un fichier Excel (.xlsx)

C’est ce que j’essaie de faire.

1.Créez un fichier Excel (.xlsx) c: //test/files/work1_4.13.14.xlsx avec nom + valeur (date)

exemple: work1_4.13.14.xlsx

2.Placez les en-têtes dans l’exemple de fichier: [Nom] [Âge] [Ville].

3.J’ai 3 Liste avec noms, âges, ville que je dois remplir dans une feuille Excel.

C’est mon but

Name Age City Ben 20 xyz Jack 25 xyz Mike 45 zyx 

Des idées?

Essayez ce code

 Microsoft.Office.Interop.Excel.Application oXL; Microsoft.Office.Interop.Excel._Workbook oWB; Microsoft.Office.Interop.Excel._Worksheet oSheet; Microsoft.Office.Interop.Excel.Range oRng; object misvalue = System.Reflection.Missing.Value; try { //Start Excel and get Application object. oXL = new Microsoft.Office.Interop.Excel.Application(); oXL.Visible = true; //Get a new workbook. oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add("")); oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet; //Add table headers going cell by cell. oSheet.Cells[1, 1] = "First Name"; oSheet.Cells[1, 2] = "Last Name"; oSheet.Cells[1, 3] = "Full Name"; oSheet.Cells[1, 4] = "Salary"; //Format A1:D1 as bold, vertical alignment = center. oSheet.get_Range("A1", "D1").Font.Bold = true; oSheet.get_Range("A1", "D1").VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter; // Create an array to multiple values at once. ssortingng[,] saNames = new ssortingng[5, 2]; saNames[0, 0] = "John"; saNames[0, 1] = "Smith"; saNames[1, 0] = "Tom"; saNames[4, 1] = "Johnson"; //Fill A2:B6 with an array of values (First and Last Names). oSheet.get_Range("A2", "B6").Value2 = saNames; //Fill C2:C6 with a relative formula (=A2 & " " & B2). oRng = oSheet.get_Range("C2", "C6"); oRng.Formula = "=A2 & \" \" & B2"; //Fill D2:D6 with a formula(=RAND()*100000) and apply format. oRng = oSheet.get_Range("D2", "D6"); oRng.Formula = "=RAND()*100000"; oRng.NumberFormat = "$0.00"; //AutoFit columns A:D. oRng = oSheet.get_Range("A1", "D1"); oRng.EntireColumn.AutoFit(); oXL.Visible = false; oXL.UserControl = false; oWB.SaveAs("c:\\test\\test505.xls", Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookDefault, Type.Missing, Type.Missing, false, false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); oWB.Close(); //... 

Vous pouvez utiliser ClosedXML pour cela.

Stockez votre table dans un DataTable et vous pouvez exporter la table pour excel par ce simple extrait:

 XLWorkbook workbook = new XLWorkbook(); DataTable table = GetYourTable(); workbook.Worksheets.Add(table ); 

Vous pouvez lire la documentation de ClosedXML pour en savoir plus. J’espère que cela t’aides!

J’espère que c’est exactement ce que nous recherchons.

 private void button2_Click(object sender, RoutedEventArgs e) { UpdateExcel("Sheet3", 4, 7, "Namachi@gmail"); } private void UpdateExcel(ssortingng sheetName, int row, int col, ssortingng data) { Microsoft.Office.Interop.Excel.Application oXL = null; Microsoft.Office.Interop.Excel._Workbook oWB = null; Microsoft.Office.Interop.Excel._Worksheet oSheet = null; try { oXL = new Microsoft.Office.Interop.Excel.Application(); oWB = oXL.Workbooks.Open("d:\\MyExcel.xlsx"); oSheet = Ssortingng.IsNullOrEmpty(sheetName) ? (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet : (Microsoft.Office.Interop.Excel._Worksheet)oWB.Worksheets[sheetName]; oSheet.Cells[row, col] = data; oWB.Save(); MessageBox.Show("Done!"); } catch (Exception ex) { MessageBox.Show(ex.ToSsortingng()); } finally { if (oWB != null) oWB.Close(); } } 

Il est possible d’écrire dans un fichier Excel sans l’ouvrir à l’aide de Microsoft.Jet.OLEDB.4.0 et de OleDb . En utilisant OleDb , il se comporte comme si vous OleDb sur une table en utilisant SQL.

Voici le code que j’ai utilisé pour créer et écrire dans un nouveau fichier Excel. Aucune référence supplémentaire n’est nécessaire

 var connectionSsortingng = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SomePath\ExcelWorkBook.xls;Extended Properties=Excel 8.0"; using (var excelConnection = new OleDbConnection(connectionSsortingng)) { // The excel file does not need to exist, opening the connection will create the // excel file for you if (excelConnection.State != ConnectionState.Open) { excelConnection.Open(); } // data is an object so it works with DBNull.Value object propertyOneValue = "cool!"; object propertyTwoValue = "testing"; var sqlText = "CREATE TABLE YourTableNameHere ([PropertyOne] VARCHAR(100), [PropertyTwo] INT)"; // Executing this command will create the worksheet inside of the workbook // the table name will be the new worksheet name using (var command = new OleDbCommand(sqlText, excelConnection)) { command.ExecuteNonQuery(); } // Add (insert) data to the worksheet var commandText = $"Insert Into YourTableNameHere ([PropertyOne], [PropertyTwo]) Values (@PropertyOne, @PropertyTwo)"; using (var command = new OleDbCommand(commandText, excelConnection)) { // We need to allow for nulls just like we would with // sql, if your data is null a DBNull.Value should be used // instead of null command.Parameters.AddWithValue("@PropertyOne", propertyOneValue ?? DBNull.Value); command.Parameters.AddWithValue("@PropertyTwo", propertyTwoValue ?? DBNull.Value); command.ExecuteNonQuery(); } } 

Il suffit de suivre les étapes ci-dessous:

// Démarrer Excel et obtenir un object Application.

 oXL = new Microsoft.Office.Interop.Excel.Application(); oXL.Visible = false;