private string ExportToCSV() { System.Text.StringBuilder sb = new System.Text.StringBuilder(); //-------------------------------- slice--------------------------------------- Hierarchy[] hiers = this.Axes[2].Hierarchies.ToSortedByUniqueNameArray(); for (int i = 0; i < hiers.Length; i++) { Hierarchy hier = hiers[i]; //not displaying without mems if (hier.FilterMember == null) { continue; } DataMember mem = hier.FilterMember; //not displaying only with "All" members if (mem.LevelDepth == 0 && !(mem is CalculatedMember) && hier.Levels[0].IsAllLevel) { continue; } // add hier and mem sb.Append(hier.DisplayName); sb.Append(": "); Olap.CalculatedMemberTemplates.MembersAggregate aggMem = mem as Olap.CalculatedMemberTemplates.MembersAggregate; if (aggMem != null) //if aggregate, show children instead of agg itself { for (int j = 0; j < aggMem.Members.Count; j++) { sb.Append(aggMem.Members[j].Name); if (j < aggMem.Members.Count - 1) { sb.Append(", "); } } } else { sb.Append(mem.Name); } sb.Append("\r\n"); } sb.Append("\r\n"); //----------------------------------------------------------------------------- int Ax0MemCount = this.Cellset.Axis0TupleMemCount; int Ax1MemCount = this.Cellset.Axis1TupleMemCount; int Ax0PosCount = this.Cellset.Axis0PosCount; int Ax1PosCount = this.Cellset.Axis1PosCount; Hierarchy ax1Hier = null; Hierarchy ax0Hier = null; //-------------------------------- table--------------------------------------- System.Web.UI.HtmlControls.HtmlTableRow tr = null; System.Web.UI.HtmlControls.HtmlTableCell td = null; if (this.Cellset.IsValid == false) { return("Cellset contains no data"); } for (int i = 0; i < Ax0MemCount; i++) { for (int j = 0; j < Ax1MemCount; j++) { //hier uname in last row if (i == Ax0MemCount - 1) { sb.Append(this.Axes[1].Hierarchies[j].DisplayName); } sb.Append("\t"); } ax0Hier = this.Axes[0].Hierarchies[i]; for (int j = 0; j < Ax0PosCount; j++) { CellsetMember mem = this.Cellset.GetCellsetMember(0, i, j); sb.Append(mem.Name); sb.Append("\t"); } // hier name in last col sb.Append(ax0Hier.DisplayName); sb.Append("\r\n"); } for (int i = 0; i < Ax1PosCount; i++) { for (int j = 0; j < Ax1MemCount; j++) { ax1Hier = this.Axes[1].Hierarchies[j]; CellsetMember mem = this.Cellset.GetCellsetMember(1, j, i); sb.Append(mem.Name); sb.Append("\t"); } for (int j = 0; j < Ax0PosCount; j++) { Cell olapCell = this.Cellset.GetCell(j, i); sb.Append(olapCell.FormattedValue.Replace(System.Globalization.NumberFormatInfo.CurrentInfo.NumberGroupSeparator, "")); sb.Append("\t"); } sb.Append("\r\n"); } return(sb.ToString()); }
public void SetHierarchyAggregate(string UniqueName , bool Value) { Hierarchy hier=_report.Schema.Hierarchies[UniqueName]; if(hier==null) throw new Exception("Error: invalid identifier"); if(Value==true) { MembersAggregate aggr=new MembersAggregate(null, hier , MembersAggregate.AggregateFunction.AGGREGATE); hier.AddMember(aggr, true); } else hier.AddMember(hier.Levels[0].DefaultMember, true); }
private string ExportToHTML() { System.Text.StringBuilder sb = new System.Text.StringBuilder(); // style sb.Append(@" <html><head><meta charset='utf-8'></meta> <style> .tbl1_H { text-align:left; PADDING-RIGHT: 2pt; border: solid 1px #aaaaaa; PADDING-LEFT: 2pt; FONT-SIZE: 8pt; COLOR: black; font-face: tahoma ; ; padding-top: 1px ; padding-bottom: 1px; BACKGROUND-COLOR: #e0e0e0; } .tbl1_H1 { text-align:left; PADDING-RIGHT: 2pt; border: solid 1px #aaaaaa; PADDING-LEFT: 2pt; FONT-SIZE: 8pt; COLOR: black; FONT-WEIGHT: bold; font-face: tahoma ; ; padding-top: 1px ; padding-bottom: 1px; BACKGROUND-COLOR: #e0e0e0; } .tbl1_H2 { text-align:center; PADDING-RIGHT: 2pt; border: solid 1px #aaaaaa; PADDING-LEFT: 2pt; FONT-SIZE: 8pt; COLOR: black; font-face: tahoma ; padding-top: 1px ; padding-bottom: 1px; BACKGROUND-COLOR: #e0e0e0; } .tbl1_H3 { text-align:center; PADDING-RIGHT: 2pt; border: solid 1px #aaaaaa; PADDING-LEFT: 2pt; FONT-SIZE: 8pt; COLOR: black; FONT-WEIGHT: bold; font-face: tahoma ; ; padding-top: 1px ; padding-bottom: 1px; BACKGROUND-COLOR: #e0e0e0; } .tbl1_HC { background-color:#FFFFC0; FONT-SIZE: 8pt; font-face: tahoma;PADDING-LEFT: 2pt;PADDING-RIGHT: 2pt; } .tbl1_T { border-collapse:collapse; } .tbl1_C { text-align:right; PADDING-RIGHT: 2pt; PADDING-LEFT: 2pt; FONT-SIZE: 8pt; BACKGROUND-COLOR: white; font-face: tahoma; padding-top: 1px ; padding-bottom: 1px; border: solid 1px #888888; } .tbl1_C1 { text-align:left; PADDING-RIGHT: 2pt; PADDING-LEFT: 2pt; FONT-SIZE: 8pt; BACKGROUND-COLOR: white; font-face: tahoma; padding-top: 1px ; padding-bottom: 1px; border: solid 1px #888888; } .tbl1_C2 { text-align:right; PADDING-RIGHT: 2pt; PADDING-LEFT: 6pt; FONT-SIZE: 8pt; BACKGROUND-COLOR: white; font-face: tahoma; padding-top: 1px ; padding-bottom: 1px; border: solid 1px #888888; } </style> </head> <body> " ); // ----- HEADER ------ sb.Append(@" <table cellspacing=0 cellpadding=3 width=100% class=capt><tr><td align=right style='BORDER-WIDTH:0px;background-color:red'> <font face=ArialBlack color=white size=1><b><i>© FieldForce Solutions </b></i></font> </tr></td> <tr><td style='BACKGROUND:#e0e0e0; BORDER-WIDTH:0px;'> <B><font color=red size=-1>" + this.Description + @"</font></B><font color=black size=-2><i> (description)</i></font> <br> <B><font color=4682b4 size=-2>" + this.Name + @"</font></B><font color=black size=-2><i> (name)</i></font> <BR> <B><font color=4682b4 size=-2>" + this.Owner.Name + @"</font></B><font color=black size=-2><i> (owner)</i></font> <BR> <B><font color=4682b4 size=-2>" + System.DateTime.Now.ToShortDateString() + " " + System.DateTime.Now.ToShortTimeString() + @"</font></B><font color=black size=-2><i> (distributed)</i></font> </td></tr> </table> <hr> " ); //-------------------------------- slice--------------------------------------- // table start sb.Append("<table cellpadding=0 cellspacing=0 width=100 class='tbl1_T'>"); Hierarchy[] hiers = this.Axes[2].Hierarchies.ToSortedByUniqueNameArray(); for (int i = 0; i < hiers.Length; i++) { Hierarchy hier = hiers[i]; //not displaying without mems if (hier.FilterMember == null) { continue; } DataMember mem = hier.FilterMember; //not displaying only with "All" members if (mem.LevelDepth == 0 && !(mem is CalculatedMember) && hier.Levels[0].IsAllLevel) { continue; } // add hier row sb.Append("<tr><td class=tbl1_H nowrap=1>"); sb.Append(hier.DisplayName); sb.Append("</td></tr>"); // add mem row Olap.CalculatedMemberTemplates.MembersAggregate aggMem = mem as Olap.CalculatedMemberTemplates.MembersAggregate; if (aggMem != null) //if aggregate, show children instead of agg itself { foreach (Olap.Object childMem in aggMem.Members) { sb.Append("<tr><td class=tbl1_C nowrap=1>"); sb.Append(childMem.Name); sb.Append("</td></tr>"); } continue; } sb.Append("<tr><td class=tbl1_C nowrap=1>"); sb.Append(mem.Name); sb.Append("</td></tr>"); } // table end sb.Append("</table><br>"); //----------------------------------------------------------------------------- if (this.Cellset.IsValid == false) { return("Cellset contains no data"); } int Ax0MemCount = this.Cellset.Axis0TupleMemCount; int Ax1MemCount = this.Cellset.Axis1TupleMemCount; int Ax0PosCount = this.Cellset.Axis0PosCount; int Ax1PosCount = this.Cellset.Axis1PosCount; int ax0OrderPos = this.GetOrderPosition(this.Axes[0]); int ax1OrderPos = this.GetOrderPosition(this.Axes[1]); Hierarchy ax1Hier = null; Hierarchy ax0Hier = null; // table start sb.Append("<table cellpadding=0 cellspacing=0 class='tbl1_T'>"); if (Ax0PosCount == 0 && Ax1PosCount == 0) { return("Cellset contains no data"); } for (int i = 0; i < Ax0MemCount; i++) { sb.Append("<tr>"); //row start for (int j = 0; j < Ax1MemCount; j++) { sb.Append("<td class='tbl1_HC' nowrap=1>"); //hier uname in last row if (i == Ax0MemCount - 1) { sb.Append(this.Axes[1].Hierarchies[j].DisplayName); } sb.Append("</td>"); } ax0Hier = this.Axes[0].Hierarchies[i]; for (int j = 0; j < Ax0PosCount; j++) { bool inOrderTuple = false; CellsetMember mem = this.Cellset.GetCellsetMember(0, i, j); //if same as prev, continue if (j != 0 && this.Cellset.GetCellsetMember(0, i, j - 1).UniqueName == mem.UniqueName) { continue; } // handle order position highlight if (j == ax0OrderPos) // in order tuple { inOrderTuple = true; } // handle colspan int spanCount = 1; for (int n = j + 1; n < Ax0PosCount; n++) { CellsetMember nextMem = this.Cellset.GetCellsetMember(0, i, n); if (nextMem.UniqueName == mem.UniqueName) { spanCount++; // handle order position highlight if (n == ax0OrderPos) { inOrderTuple = true; } } else { break; } } // handle order position highlight if (inOrderTuple) // in order tuple { sb.Append("<td class='tbl1_H3' nowrap=1 "); } else { sb.Append("<td class='tbl1_H2' nowrap=1 "); } // if we span if (spanCount > 1) { sb.Append("colspan=" + spanCount.ToString()); } sb.Append(">"); sb.Append(mem.Name); sb.Append("</td>"); } // hier in last col sb.Append("<td class='tbl1_HC' nowrap=1>"); sb.Append(ax0Hier.DisplayName); sb.Append("</td>"); sb.Append("</tr>"); //row end } for (int i = 0; i < Ax1PosCount; i++) { sb.Append("<tr>"); //row start for (int j = 0; j < Ax1MemCount; j++) { bool inOrderTuple = false; ax1Hier = this.Axes[1].Hierarchies[j]; CellsetMember mem = this.Cellset.GetCellsetMember(1, j, i); //if same as prev, continue if (i != 0 && this.Cellset.GetCellsetMember(1, j, i - 1).UniqueName == mem.UniqueName) { continue; } // handle order position highlight if (i == ax1OrderPos) // in order tuple { inOrderTuple = true; } // handle rowspan int spanCount = 1; for (int n = i + 1; n < Ax1PosCount; n++) { CellsetMember nextMem = this.Cellset.GetCellsetMember(1, j, n); if (nextMem.UniqueName == mem.UniqueName) { spanCount++; // handle order position highlight if (n == ax1OrderPos) { inOrderTuple = true; } } else { break; } } // handle order position highlight if (inOrderTuple) // in order tuple { sb.Append("<td class='tbl1_H1' nowrap=1 "); } else { sb.Append("<td class='tbl1_H' nowrap=1 "); } // if we span if (spanCount > 1) { sb.Append("rowspan=" + spanCount.ToString()); } sb.Append(">"); sb.Append(mem.Name); sb.Append("</td>"); } for (int j = 0; j < Ax0PosCount; j++) { sb.Append("<td class='tbl1_C' nowrap=1>"); Cell olapCell = this.Cellset.GetCell(j, i); sb.Append(olapCell.FormattedValue); sb.Append("</td>"); } sb.Append("</tr>"); // row end } sb.Append("</table>"); // table end sb.Append("</body></html>"); // body end return(sb.ToString()); }