public void ShouldSerialize() { var model = PxExtend.PxExtend.CreatePxModel("TestFiles\\BE0101A1.px"); var ser = new XlsxSerializer(); var stream = new MemoryStream(); try { ser.Serialize(model, stream); MemoryStream destination = new MemoryStream(); stream.CopyTo(destination); string actual = Encoding.UTF8.GetString(stream.ToArray()); Assert.IsTrue(actual.Length >= 1); } catch (Exception e) { Assert.Fail(); } }
//#start_publishing protected override void Test(Stream target) { var model = new List <QuestionSheetItem> { new QuestionSheetItem { Question = "Does XlsSerializer support custom value converters?", Answer = true }, new QuestionSheetItem { Question = "Is it complicated?", Answer = false }, new QuestionSheetItem { Question = "Is there any comparable library?", Answer = null } }; var serializer = new XlsxSerializer(new XlsxSerializerSettings(new CustomBoolTypeConverter())); serializer.Serialize(model, target); var deserialized = serializer.Deserialize <List <QuestionSheetItem> >(target); Assert.Equal(model, deserialized, CompareItems <QuestionSheetItem>((a, b) => { Assert.Equal(a.Question, b.Question); Assert.Equal(a.Answer, b.Answer); return(true); })); }
//#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 void SerializeAndStream() { // Using stream As IO.MemoryStream = New IO.MemoryStream() // Dim excelSerializer As New ExcelFileSerializer // If Me.SelectedFormat.Equals(Plugins.FileFormats.XLS_DOUBLE_COLUMN) Then // excelSerializer.DoubleColumn = DoubleColumnType.AlwaysDoubleColumns // Else // 'Get doublecolumn from application setting // excelSerializer.DoubleColumn = Settings.Files.DoubleColumnFile // End If // 'Get information level from application setting // excelSerializer.InformationLevel = Settings.Files.CompleteInfoFile // 'End If // excelSerializer.Serialize(PaxiomManager.PaxiomModel, stream) // StreamFile(stream, Me.SelectedFileType.MimeType, Me.SelectedFileType.FileExtension) //End Using using (System.IO.MemoryStream stream = new System.IO.MemoryStream()) { PCAxis.Excel.XlsxSerializer ser; ser = new XlsxSerializer(); if (this.SelectedFormat.Equals("FileTypeExcelXDoubleColumn")) { ser.DoubleColumn = DoubleColumnType.AlwaysDoubleColumns; } else { //Get doublecolumn from application setting ser.DoubleColumn = Settings.Files.DoubleColumnFile; } // 'Get information level from application setting ser.InformationLevel = Settings.Files.CompleteInfoFile; ser.Serialize(PaxiomManager.PaxiomModel, stream); StreamFile(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "xlsx"); } }
public Paxiom.IPXModelStreamSerializer Create(string fileInfo) { PCAxis.Excel.XlsxSerializer ser; ser = new XlsxSerializer(); if (fileInfo.Equals("FileTypeExcelXDoubleColumn")) { ser.DoubleColumn = DoubleColumnType.AlwaysDoubleColumns; } else { //Get doublecolumn from application setting ser.DoubleColumn = Settings.Files.DoubleColumnFile; } // 'Get information level from application setting ser.InformationLevel = Settings.Files.CompleteInfoFile; return(ser); }
/// <summary> /// Serializes and sends table data back to the client /// </summary> /// <param name="context"></param> private void SendTableData(HttpContext context, string language, string db, string[] tablePath, ResponseBucket cacheResponse) { //// TODO: Limit data size? //string data = ""; //using (var stream = new StreamReader(context.Request.InputStream)) //{ // data = stream.ReadToEnd(); //} var tableQuery = JsonHelper.Deserialize <TableQuery>(cacheResponse.PostData) as TableQuery; if (tableQuery.Response == null || tableQuery.Response.Format == null) { tableQuery.Response = new QueryResponse() { Format = _defaultResponseFormat }; } // Initialize the builder PCAxis.Paxiom.IPXModelBuilder builder = GetPXBuilder(language, db, tablePath); builder.DoNotApplyCurrentValueSet = true; // DoNotApplyCurrentValueSet means the "client that made the request" is an api(, not a GUI) so that // CNMM2.4 property DefaultInGUI (for Valueset/grouping) should not be used builder.SetPreferredLanguage(language); builder.BuildForSelection(); // Process selections var selections = PCAxisRepository.BuildSelections(builder, tableQuery); // Check that the number of selected cells do not exceed the limit long cellCount = 1; foreach (var sel in selections) { if (sel.ValueCodes.Count > 0) { cellCount *= sel.ValueCodes.Count; } } if (cellCount > Settings.Current.FetchCellLimit) { Write403Response(context); return; } builder.BuildForPresentation(selections.ToArray()); // Output handling starts here context.Response.Clear(); IWebSerializer serializer; switch (tableQuery.Response.Format != null ? tableQuery.Response.Format.ToLower() : null) { case null: case "px": serializer = new PxSerializer(); break; case "csv": serializer = new CsvSerializer(); break; case "json": serializer = new JsonSerializer(); break; case "json-stat": serializer = new JsonStatSeriaizer(); break; case "json-stat2": serializer = new JsonStat2Seriaizer(); break; case "xlsx": serializer = new XlsxSerializer(); break; //case "png": // int? width = tableQuery.Response.GetParamInt("width"); // int? height = tableQuery.Response.GetParamInt("height"); // string encoding = tableQuery.Response.GetParamString("encoding"); // serializer = new ChartSerializer(width, height, encoding); // break; case "sdmx": serializer = new SdmxDataSerializer(); break; default: throw new NotImplementedException("Serialization for " + tableQuery.Response.Format + " is not implemented"); } //serializer.Serialize(builder.Model, context.Response); serializer.Serialize(builder.Model, cacheResponse); //context.Response.AddHeader("Content-Type", cacheResponse.ContentType); //context.Response.OutputStream.Write(cacheResponse.ResponseData, 0, cacheResponse.ResponseData.Length); context.Send(cacheResponse, true); //Logs usage _usageLogger.Info(String.Format("url={0}, type=data, caller={3}, cached=false, format={1}, matrix-size={2}", context.Request.RawUrl, tableQuery.Response.Format, builder.Model.Data.MatrixSize, context.Request.UserHostAddress)); }