Пример #1
0
        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();
        }
Пример #4
0
        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");
            }
        }
Пример #5
0
        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);
        }
Пример #6
0
        /// <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));
        }