How to write some data to excel file(.xlsx) How to write some data to excel file(.xlsx) asp.net asp.net

How to write some data to excel file(.xlsx)


Try this 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.    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();    oXL.Quit();    //...


You can use ClosedXML for this.

Store your table in a DataTable and you can export the table to excel by this simple snippet:

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

You can read the documentation of ClosedXML to learn more. Hope this helps!


It is possible to write to an excel file without opening it using the Microsoft.Jet.OLEDB.4.0 and OleDb. Using OleDb, it behaves as if you were writing to a table using sql.

Here is the code I used to create and write to an new excel file. No extra references are needed

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();    }}