//#start_publishing protected override void Test(Stream target) { // You can use a singleton instance: IXlsxSerializer serializer = XlsxSerializer.Instance; // Or instantiate the class: serializer = new XlsxSerializer(); }
public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, System.Net.Http.HttpContent content, System.Net.TransportContext transportContext) { // Create a document builder. var document = new SqadXlsxDocumentBuilder(writeStream); if (value == null) { return(document.WriteToStream()); } var valueType = value.GetType(); // Get the item type. var itemType = FormatterUtils.IsSimpleType(valueType) ? null : FormatterUtils.GetEnumerableItemType(valueType); // If a single object was passed, treat it like a list with one value. if (itemType == null) { itemType = valueType; } // Used if no other matching serialiser can be found. IXlsxSerializer serializer = null; // Determine if a more specific serialiser might apply. if (Serializers != null) { foreach (var s in Serializers) { if (!s.CanSerializeType(valueType, itemType) || s.SerializerType != _serializerType) { continue; } serializer = s; break; } } serializer?.Serialize(itemType, value, document, null, null, null); if (!document.IsVBA) { content.Headers.ContentDisposition.FileName = content.Headers.ContentDisposition.FileName.Replace("xlsm", "xlsx"); } return(document.WriteToStream()); }