Beispiel #1
0
        /// <summary>
        /// 列因为其下的所有子列都是隐藏的而被隐藏
        /// </summary>
        /// <param name="pColumns"></param>
        protected void HideColumnBecauseAllChildrenIsHidden(JIT.Utility.Web.ComponentModel.ExtJS.Grid.Column.Column pColumn)
        {
            var needHidden = false;

            if (pColumn.Children != null && pColumn.Children.Count > 0)
            {
                //递归隐藏
                foreach (var child in pColumn.Children)
                {
                    this.HideColumnBecauseAllChildrenIsHidden(child);
                }
                //判断当前子列是否都为隐藏
                bool isAllHidden = true;
                foreach (var child in pColumn.Children)
                {
                    if (child.IsHidden.HasValue == false || child.IsHidden.Value == false)
                    {
                        isAllHidden = false;
                        break;
                    }
                }
                if (isAllHidden)    //如果所有的子列都为隐藏的,则自身也隐藏
                {
                    needHidden = true;
                }
            }
            if (needHidden)
            {
                pColumn.IsHidden = true;
            }
        }
Beispiel #2
0
 /// <summary>
 /// 递归将Ext的表格列中的所有列抓取出来
 /// </summary>
 /// <param name="pColumn">表格列</param>
 /// <param name="pCurrentDepth">当前的深度</param>
 /// <param name="pColumns">按层级深度组织的表格列</param>
 /// <param name="pCurrentColSpan">当前列的列合并</param>
 /// <param name="pCurrentColumnStartIndex">当前列的开始索引</param>
 private void RetrieveColumns(JIT.Utility.Web.ComponentModel.ExtJS.Grid.Column.Column pColumn, int pCurrentDepth, Dictionary <int, List <InnerExcelColumn> > pColumns, out int pCurrentColSpan, int pCurrentColumnStartIndex)
 {
     pCurrentColSpan = 0;
     if (this.IsShowColumn(pColumn))
     {
         pCurrentColSpan = 1;    //列需要显示,因此占一个Excel列
         //获得当前深度的表格列列表
         List <InnerExcelColumn> depthList = null;
         if (pColumns.ContainsKey(pCurrentDepth))
         {
             depthList = pColumns[pCurrentDepth];
         }
         else
         {
             depthList = new List <InnerExcelColumn>();
             pColumns.Add(pCurrentDepth, depthList);
         }
         InnerExcelColumn col = new InnerExcelColumn();
         col.Column           = pColumn;
         col.ColSpan          = pCurrentColSpan;
         col.RowSpan          = 1;
         col.StartColumnIndex = pCurrentColumnStartIndex;
         depthList.Add(col);
         //处理子列
         if (pColumn.Children != null && pColumn.Children.Count > 0)
         {
             bool hasChildren = false;
             foreach (var item in pColumn.Children)
             {
                 if (this.IsShowColumn(item))
                 {
                     int childrenColSpan;
                     if (hasChildren)
                     {
                         pCurrentColumnStartIndex++;
                     }
                     else
                     {
                         ++pCurrentDepth;    //在第一个子节点的时候,将节点的深度+1,从而获得子节点的深度
                         hasChildren = true;
                     }
                     this.RetrieveColumns(item, pCurrentDepth, pColumns, out childrenColSpan, pCurrentColumnStartIndex);
                     pCurrentColSpan += childrenColSpan;
                     col.ColSpan      = pCurrentColSpan;
                 }
             }
             if (hasChildren)    //列合并的起始值是从1开始,根据子列对父列进行列合并时,最后要减一
             {
                 pCurrentColSpan--;
                 col.ColSpan -= 1;
             }
         }
     }
 }
Beispiel #3
0
        /// <summary>
        /// 往导出后的容器中写数据
        /// </summary>
        /// <param name="pContainer">导出后的容器,如果导出为Excel,则为WookSheet</param>
        /// <param name="pData">数据值</param>
        /// <param name="pRowIndex">行</param>
        /// <param name="pColumnIndex">列</param>
        /// <param name="pColumnType">表格列的列类型</param>
        /// <param name="pGridColumn">ExtJS的表格列</param>
        public void WriteData(object pContainer, object pData, int pRowIndex, int pColumnIndex, ColumnTypes pColumnType, JIT.Utility.Web.ComponentModel.ExtJS.Grid.Column.Column pGridColumn)
        {
            var sheet = pContainer as Worksheet;

            if (sheet != null)
            {
                //初始化
                Cell  contentCell = sheet.Cells[pRowIndex, pColumnIndex];
                Style style       = contentCell.GetStyle();
                style.HorizontalAlignment = TextAlignmentType.Right;
                //
                string cellVal = string.Empty;
                switch (pColumnType)
                {
                case ColumnTypes.Int:
                {
                    if (pData == null || string.IsNullOrWhiteSpace(pData.ToString()))
                    {
                        cellVal = "0";
                    }
                    else
                    {
                        cellVal = Convert.ToInt32(pData).ToString();
                    }
                    style.HorizontalAlignment = TextAlignmentType.Right;
                }
                break;

                case ColumnTypes.Decimal:
                {
                    if (pData == null || string.IsNullOrWhiteSpace(pData.ToString()))
                    {
                        cellVal = "0.00";
                    }
                    else
                    {
                        cellVal = Convert.ToDecimal(pData).ToString("f2");
                    }
                    style.HorizontalAlignment = TextAlignmentType.Right;
                }
                break;

                case ColumnTypes.Boolean:
                {
                    if (pData == null || string.IsNullOrWhiteSpace(pData.ToString()))
                    {
                        cellVal = "";
                    }
                    else
                    {
                        cellVal = Convert.ToBoolean(pData).ToString();
                    }
                    style.HorizontalAlignment = TextAlignmentType.Center;
                }
                break;

                case ColumnTypes.String:
                {
                    if (pData == null)
                    {
                        cellVal = "";
                    }
                    else
                    {
                        cellVal = pData.ToString();
                    }
                    style.HorizontalAlignment = TextAlignmentType.Left;
                }
                break;

                case ColumnTypes.Date:
                {
                    if (pData == null || string.IsNullOrWhiteSpace(pData.ToString()))
                    {
                        cellVal = "";
                    }
                    else
                    {
                        cellVal = Convert.ToDateTime(pData).ToString("yyyy-MM-dd");
                    }
                    style.HorizontalAlignment = TextAlignmentType.Center;
                }
                break;

                case ColumnTypes.DateTime:
                {
                    if (pData == null || string.IsNullOrWhiteSpace(pData.ToString()))
                    {
                        cellVal = "";
                    }
                    else
                    {
                        cellVal = Convert.ToDateTime(pData).ToString("yyyy-MM-dd HH:mm:ss");
                    }
                    style.HorizontalAlignment = TextAlignmentType.Center;
                }
                break;

                case ColumnTypes.Time:
                {
                    if (pData == null || string.IsNullOrWhiteSpace(pData.ToString()))
                    {
                        cellVal = "";
                    }
                    else
                    {
                        cellVal = Convert.ToDateTime(pData).ToString("HH:mm:ss");
                    }
                    style.HorizontalAlignment = TextAlignmentType.Center;
                }
                break;

                case ColumnTypes.Timespan:
                {
                    if (pData == null || string.IsNullOrWhiteSpace(pData.ToString()))
                    {
                        cellVal = "";
                    }
                    else
                    {
                        cellVal = string.Empty;
                        TimeSpan tsTemp = new TimeSpan(0, 0, Convert.ToInt32(pData));
                        int      iLevel = 0;
                        if (tsTemp.Days > 0)
                        {
                            iLevel = 4;
                        }
                        else if (tsTemp.Hours > 0)
                        {
                            iLevel = 3;
                        }
                        else if (tsTemp.Minutes > 0)
                        {
                            iLevel = 2;
                        }
                        else
                        {
                            iLevel = 1;
                        }
                        switch (iLevel)
                        {
                        case 1:
                            cellVal = tsTemp.Seconds.ToString() + "秒";
                            break;

                        case 2:
                            cellVal = tsTemp.Minutes.ToString() + "分" + tsTemp.Seconds.ToString() + "秒";
                            break;

                        case 3:
                            cellVal = tsTemp.Hours.ToString() + "小时" + tsTemp.Minutes.ToString() + "分" + tsTemp.Seconds.ToString() + "秒";
                            break;

                        case 4:
                            cellVal = tsTemp.Days + "天" + tsTemp.Hours.ToString() + "小时" + tsTemp.Minutes.ToString() + "分" + tsTemp.Seconds.ToString() + "秒";
                            break;
                        }
                    }
                }
                break;

                case ColumnTypes.Percent:
                {
                    if (pData == null)
                    {
                        cellVal = "";
                    }
                    else
                    {
                        var val      = Convert.ToDecimal(pData);
                        var accuracy = pGridColumn.Accuracy;
                        if (accuracy.HasValue == false)
                        {
                            accuracy = 0;
                        }
                        cellVal = (val * 100).ToString("f" + accuracy.Value.ToString()) + "%";
                    }
                }
                break;

                default:
                {
                    if (pData == null)
                    {
                        cellVal = "";
                    }
                    else
                    {
                        cellVal = pData.ToString();
                    }
                }
                break;
                }
                //
                contentCell.PutValue(cellVal);
            }
            else
            {
                throw new ArgumentNullException("pContainer", "pContainer为null或不是Aspose.Cells.Worksheet对象.");
            }
        }