Como gravar alguns dados no arquivo excel (.xlsx)

É isso que estou tentando fazer.

1.Criar o arquivo excel (.xlsx) c: //test/files/work1_4.13.14.xlsx com nome + valor (data)

exemplo: work1_4.13.14.xlsx

2.Configure os headers no exemplo de arquivo: [Nome] [Idade] [Cidade].

3. Eu tenho 3 lista com nomes, idades, cidade que eu preciso preencher na folha de excel.

Esse é meu objective

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

Alguma ideia?

Experimente este código

 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. string[,] saNames = new string[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(); //... 

Você pode usar o ClosedXML para isso.

Armazene sua tabela em um DataTable e você pode exportar a tabela para excel por este simple snippet:

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

Você pode ler a documentação do ClosedXML para saber mais. Espero que isto ajude!

Espero que aqui seja exatamente o que estamos procurando.

 private void button2_Click(object sender, RoutedEventArgs e) { UpdateExcel("Sheet3", 4, 7, "Namachi@gmail"); } private void UpdateExcel(string sheetName, int row, int col, string 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 = String.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.ToString()); } finally { if (oWB != null) oWB.Close(); } } 

É possível gravar em um arquivo excel sem abri-lo usando o Microsoft.Jet.OLEDB.4.0 e o OleDb . Usando o OleDb , ele se comporta como se você estivesse escrevendo para uma tabela usando sql.

Aqui está o código que usei para criar e gravar em um novo arquivo do Excel. Nenhuma referência extra é necessária

 var connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\SomePath\ExcelWorkBook.xls;Extended Properties=Excel 8.0"; using (var excelConnection = new OleDbConnection(connectionString)) { // 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(); } } 

basta seguir os passos abaixo:

// Inicie o Excel e obtenha o object Aplicativo.

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