Following example shows how to write a report in Excel or HTML files by using only the GemBox.Spreadsheet .NET component.

GemBox.Spreadsheet is a C# / VB.NET component that provides a simple and efficient way to read, write, convert, and print native Microsoft Excel (XLSX, XLS) and other spreadsheet (ODS, CSV) formats and various document formats (HTML, PDF, XPS) from .NET applications without the need for Microsoft Excel on either the developer or client machines.
GemBox.Spreadsheet Free is free of charge, while GemBox.Spreadsheet Professional is a commercial version that is licensed per developer.
For more information, see GemBox.Spreadsheet Features or try our examples.

Example reads template Excel file (in XLS format), fills it with report data and writes the new file:

C# code:

// Load the template file.
var workbook = ExcelFile.Load("InvoiceTemplate.xls");

// Select the first worksheet.
var worksheet = workbook.Worksheets[0];

// Fill the data.
worksheet.Cells["J5"].Value = 14;
worksheet.Cells["J6"].Value = new DateTime(2008, 4, 20);
worksheet.Cells["J6"].Style.NumberFormat = "m/dd/yyyy";

worksheet.Cells["D12"].Value = "ACME Corp";
worksheet.Cells["D13"].Value = "240 Old Country Road, Springfield, IL";
worksheet.Cells["D14"].Value = "USA";
worksheet.Cells["D15"].Value = "Joe Smith";

worksheet.Cells["E18"].Value = "6-APR-08 until 7-APR-08.";

worksheet.Cells[21, 1].Value = new DateTime(2008, 4, 6);
worksheet.Cells[21, 1].Style.NumberFormat = "dddd, mmmm dd, yyyy";
worksheet.Cells[21, 4].Value = 8;

worksheet.Cells["B36"].Value = "Payment via check.";

// Save the file.
workbook.Save("NewReport.xls");

Visual Basic .NET code:

' Load the template file.
Dim workbook = ExcelFile.Load("InvoiceTemplate.xls")

' Select the first worksheet.
Dim worksheet = workbook.Worksheets(0)

' Fill the data.
worksheet.Cells("J5").Value = 14
worksheet.Cells("J6").Value = New DateTime(2008, 4, 20)
worksheet.Cells("J6").Style.NumberFormat = "m/dd/yyyy"

worksheet.Cells("D12").Value = "ACME Corp"
worksheet.Cells("D13").Value = "240 Old Country Road, Springfield, IL"
worksheet.Cells("D14").Value = "USA"
worksheet.Cells("D15").Value = "Joe Smith"

worksheet.Cells("E18").Value = "6-APR-08 until 7-APR-08."

worksheet.Cells(21, 1).Value = New DateTime(2008, 4, 6)
worksheet.Cells(21, 1).Style.NumberFormat = "dddd, mmmm dd, yyyy"
worksheet.Cells(21, 4).Value = 8

worksheet.Cells("B36").Value = "Payment via check."

' Save the file.
workbook.Save("NewReport.xls")

Template file had no report data and looked like this:

Invoice Template

New file was created by using the code above and looks like this:

New Report