using System.Collections.Generic;
using System.Drawing;
using System.IO;
using OfficeOpenXml;
using OfficeOpenXml.Style;
namespace WebInterface.Helpers
{
///
/// Lot # / work order # template generator
///
public class ExcelTemplateGenerator
{
///
/// Generates Excel spreadsheet data entry template
///
/// Data type of source data
/// Source data to display in template
/// Column header text
/// Generated spreadsheet
public static byte[] Generate(List sourceData, string headerText)
{
//Create worksheet to hold data
ExcelPackage package = new ExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Data Entry Template");
//Write header
worksheet.Cells[1, 1].Value = headerText;
worksheet.Cells[1, 1].Style.HorizontalAlignment = ExcelHorizontalAlignment.Center;
worksheet.Cells[1, 1].Style.Font.Bold = true;
worksheet.Cells[1, 1].Style.Fill.PatternType = ExcelFillStyle.Solid;
worksheet.Cells[1, 1].Style.Fill.BackgroundColor.SetColor(Color.Gainsboro);
worksheet.Column(1).Width = 45;
//Write uploaded data
if (sourceData != null)
{
int row = 2;
foreach (T element in sourceData)
{
worksheet.Cells[row++, 1].Value = element;
}
}
//Write result
MemoryStream fileStream = new MemoryStream();
package.SaveAs(fileStream);
fileStream.Position = 0;
byte[] data = fileStream.ToArray();
return data;
}
///
/// Generates Excel spreadsheet data entry template
///
/// Source data to display in template
/// Column header text
/// Generated spreadsheet
public static byte[] Generate(object[][] sourceData, string[] headerText)
{
//Create worksheet to hold data
ExcelPackage package = new ExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Data Entry Template");
int numColumns = headerText.Length;
//Write header
ExcelRange header = worksheet.Cells[1, 1, 1, numColumns];
header.LoadFromArrays(new List