Ejemplo n.º 1
0
        /// <summary>
        /// Adds a new sheet.
        /// </summary>
        /// <param name="data">The data to show in the sheet.</param>
        /// <param name="name">The sheet's name.</param>
        /// <returns>The new sheet</returns>
        public ExcelSheet AddSheet(JsonObjectList data, string name = null)
        {
            if (String.IsNullOrWhiteSpace(name))
            {
                name = "Content " + _sheetNameCounter.ToString(CultureInfo.InvariantCulture);
                _sheetNameCounter++;
            }

            var newSheet = new ExcelSheet(name)
            {
                Data = data
            };

            this.Sheets.Add(newSheet);
            return(newSheet);
        }
        public void OnAfterReturnItems(SearchWinReturnedEventArg e)
        {
            switch (e.SearchWinType)
            {
            case SearchWinType.Input_Text:
                foreach (string data in e.PostData.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
                {
                    if (!string.IsNullOrEmpty(data))
                    {
                        AddChild(data);
                    }
                }
                break;

            default:
                JsonObjectList <JsonItem> list = JsonParser.ParseJsonResponse <JsonItem>(e.PostData);
                foreach (JsonItem item in list)
                {
                    if (string.IsNullOrEmpty(item.DetailUrl))
                    {
                        ITopClient     client = GetProductTopClient();
                        ItemGetRequest req    = new ItemGetRequest();
                        req.Fields = "detail_url";
                        req.Iid    = item.Id;
                        req.Nick   = item.Nick;
                        Item rsp = client.Execute <Item>(req, new ItemJsonParser());
                        if (rsp != null && !string.IsNullOrEmpty(rsp.DetailUrl))
                        {
                            item.DetailUrl = rsp.DetailUrl;
                        }
                    }
                    AddChild(item.ToJsonString());
                }
                break;
            }
            Response.Redirect(Request.Url.AbsoluteUri);
        }
        public void OnAfterReturnItems(SearchWinReturnedEventArg e)
        {
            JsonObjectList <JsonItem> list = JsonParser.ParseJsonResponse <JsonItem>(e.PostData);

            Response.Write(list.TotalCount);
        }
Ejemplo n.º 4
0
        private IEnumerable <TExcelType> ReadExcelSheetData <TExcelType>(WorkBook workBook, int sheetNum, ref JsonObjectList errorList) where TExcelType : ExcelData
        {
            if (workBook == null)
            {
                return(new List <TExcelType>());
            }
            if (sheetNum < 0)
            {
                return(new List <TExcelType>());
            }

            var tempDataList = new List <TExcelType>();

            workBook.Sheet = sheetNum;

            var lastRow = workBook.LastRow;
            var lastCol = workBook.LastCol;


            var myObject = CreateGeneric(typeof(TExcelType)) as ExcelData;

            // get properties of the ExcelMemberData only once
            PropertyInfo[] pps = myObject.GetType().GetProperties();

            ExcelGenericAttribute xlAttr = ExcelGenericAttribute.GetAttribute(myObject.GetType());

            for (var i = 1; i <= lastRow; i++)
            {
                var mbrLine = CreateGeneric(typeof(TExcelType)) as ExcelData;
                mbrLine.ExcelLine = i + 1;


                if (xlAttr != null && xlAttr.AllowBlank && IsLineEmpty(workBook, i, pps.Length))
                {
                    mbrLine.BlankLineFound = true;
                    continue;
                }

                foreach (PropertyInfo p in pps)
                {
                    ExcelColumnAttribute xlColAttr = ExcelColumnAttribute.GetAttribute(p);
                    if (xlColAttr == null || xlColAttr.OutputOnly)
                    {
                        continue;
                    }

                    var xlValue = workBook.getText(i, xlColAttr.Column);

                    try
                    {
                        ExcelColumnAttribute.Validate(p, xlValue, mbrLine);

                        mbrLine.CustomPropertyValidation(p, xlValue, mbrLine);
                    }catch (Exception er)
                    {
                        var importStats = BaseImportWorker.GetImportStatus("GroupProperty", BaseUserContext.Instance.UserName);
                        importStats.Status        = new { Msg = "Errors while validating" };
                        importStats.ImportProgres = 100;

                        mbrLine.IsValid      = false;
                        mbrLine.ErrorMessage = p.Name + ":" + er.Message;
                    }

                    if (mbrLine.CurrentPropertyIsBlank && xlColAttr.IgnoreLineIfBlank)
                    {
                        mbrLine.IsValid    = false;
                        mbrLine.WasIgnored = true;
                        continue;
                    }

                    try
                    {
                        if (mbrLine.IsValid && !mbrLine.CurrentPropertyIsBlank)
                        {
                            p.SetValue(mbrLine, mbrLine.ValidValue, null);
                        }
                    }
                    catch (Exception er)
                    {
                        if (mbrLine.IsValid) // to keep the first error
                        {
                            mbrLine.IsValid      = false;
                            mbrLine.ErrorMessage = er.Message;
                        }
                    }

                    if (!mbrLine.IsValid)
                    {
                        break;
                    }
                }

                if (!mbrLine.IsValid && !mbrLine.WasIgnored)
                {
                    var jso = new JsonObject();
                    jso.AddProperty("line", i + 1);
                    jso.AddProperty("sheet", sheetNum);
                    jso.AddProperty("error", mbrLine.ErrorMessage);
                    errorList.Add(jso);
                }

                tempDataList.Add((TExcelType)mbrLine);
            }

            return(tempDataList);
        }