Feature: MS Excel (xlsx) Import/Export

Microsoft Excel files can be used to import/export devices. Several
import bugs were also fixed in the process.
This commit is contained in:
Gary Sharp
2017-03-25 15:37:28 +11:00
parent ed66f4f285
commit 5ce9e51ae7
51 changed files with 1959 additions and 1083 deletions
@@ -0,0 +1,21 @@
using System;
namespace Disco.Models.Services.Devices.Exporting
{
public class DeviceExportFieldMetadata
{
public string Name { get; set; }
public string ColumnName { get; set; }
public Type ValueType { get; set; }
public Func<DeviceExportRecord, object> Accessor { get; set; }
public Func<object, string> CsvEncoder { get; set; }
public DeviceExportFieldMetadata(string Name, Type ValueType, Func<DeviceExportRecord, object> Accessor, Func<object, string> CsvEncoder)
{
this.Name = Name;
this.ValueType = ValueType;
this.Accessor = Accessor;
this.CsvEncoder = CsvEncoder;
}
}
}
@@ -12,10 +12,7 @@ namespace Disco.Models.Services.Devices.Exporting
public DeviceExportTypes ExportType { get; set; }
public int? ExportTypeTargetId { get; set; }
/// <summary>
/// Adds '=' to the beginning of the string to stop Excel removing the leading zeros
/// </summary>
public bool ExcelCsvFormat { get; set; }
public bool ExcelFormat { get; set; }
// Device
[Display(ShortName = "Device", Name = "Serial Number", Description = "The device serial number")]
@@ -135,7 +132,7 @@ namespace Disco.Models.Services.Devices.Exporting
return new DeviceExportOptions()
{
ExportType = DeviceExportTypes.All,
ExcelCsvFormat = true,
ExcelFormat = true,
DeviceSerialNumber = true,
ModelId = true,
ProfileId = true,
@@ -4,7 +4,7 @@ namespace Disco.Models.Services.Devices.Exporting
{
public class DeviceExportResult
{
public MemoryStream CsvResult { get; set; }
public MemoryStream Result { get; set; }
public int RecordCount { get; set; }
}
}