using System.IO; using System.Linq; using ExcelLibrary.SpreadSheet; using MileageTraker.Web.Models; using MileageTraker.Web.Utility; using MileageTraker.Web.ViewModels; using MileageTraker.Web.ViewModels.Log; namespace MileageTraker.Web.DAL { public static class LogImportTemplateWriter { public static byte[] Write() { var example = new ImportLogViewModel { CityName = "City Name", Date = "10/20/2010", EndOdometer = "10010", GasPurchased = "3.141", LogType = "Commuting", Notes = "Template", Purpose = "Training", VehicleId = "1000" }; const string headerFormat = "[Blue]"; var worksheet = new Worksheet("LogImport"); ExcelWriter.WriteColumnHeaders(worksheet, formatString: headerFormat); ExcelWriter.WriteItems(worksheet, new[] { example }, 1); // write the example item var propertyCount = ExcelWriter.GetPropertyCount(); worksheet.Cells[0, propertyCount + 1] = new Cell("Accepted values for fields:", headerFormat); // purposes var dataService = new DataService(); var puposes = from pt in dataService.GetPurposeTypes() orderby pt.SortOrder ascending select pt.Purpose; worksheet.Cells[1, propertyCount + 2] = new Cell("Purpose", headerFormat); ExcelWriter.WriteItems(worksheet, puposes, 2, propertyCount + 2); // log types var logTypes = from i in (new MileageLogType()).GetSelectListItems() select i.Text; worksheet.Cells[1, propertyCount + 1] = new Cell("Type", headerFormat); ExcelWriter.WriteItems(worksheet, logTypes, 2, propertyCount + 1); ExcelWriter.PadWorksheet(worksheet); // save it var workbook = new Workbook(); workbook.Worksheets.Add(worksheet); using (var stream = new MemoryStream()) { workbook.Save(stream); return stream.ToArray(); } } } }