/// <summary> /// When the user click on the export to Excel button /// so we build a csv and then make it download with good header to make it opened by excel automatically /// </summary> protected void ExportExcelButtonClick(object sender, EventArgs e) { // We first check all settings CheckSettings(); // We transform the list into XML Input ListToXmlConverter conv = new ListToXmlConverter(_listName, _viewName); // we build the csv string StringBuilder csv = new StringBuilder(); csv.AppendLine(((XTitle != "") ? XTitle : "X") + ";" + ((YTitle != "") ? YTitle : "Y")); // We prepare the data in a nice hashtable Plots plots = conv.PrepareData(this._xValue, this._yValue, this._action); for (int i = 0; i < plots.Count(); i++) { csv.AppendLine(plots.GetX(i).Replace(",", " ").Replace(";", " ") + ";" + plots.GetY(i).ToString().Replace(",", " ").Replace(";", " ")); } Context.Response.Clear(); Context.Response.ContentType = "application/octet-stream"; Context.Response.AddHeader("Content-Disposition", "attachment; filename=ExcelExport.csv"); Context.Response.AddHeader("Content-Length", csv.Length.ToString()); Context.Response.Write(csv.ToString()); Context.Response.End(); }
/// <summary> /// Generate the nice XML output for fusion charts /// </summary> /// <param name="chartTitle">Title of the chart</param> /// <param name="xValue">Column name to use as x value</param> /// <param name="xTitle">Title to give to x</param> /// <param name="yValue">Column name to use as y value</param> /// <param name="yTitle">Title to give to y</param> /// <param name="groupAction">Action to perform (sum, count, ...)</param> /// <param name="colors">List of colors to use (separated by ;)</param> /// <returns></returns> public string GenerateXml(string chartTitle, string xValue, string xTitle, string yValue, string yTitle, GroupAction groupAction, string colors) { // We first convert color (string) into a nice array string[] separator = { ";" }; string[] colorsArray = colors.Split(separator, StringSplitOptions.RemoveEmptyEntries); StringBuilder sb = new StringBuilder(); // We open the graph tag with a few parameters sb.AppendLine("<graph caption='" + chartTitle + "' xAxisName='" + xTitle + "' yAxisName='" + yTitle + "'>"); // We prepare the data in a nice hashtable Plots plots = PrepareData(xValue, yValue, groupAction); for (int i = 0; i < plots.Count(); i++) { // We try to compute the color string color = ""; try { color = colorsArray[i % (colorsArray.Length)]; // computes to color to use } catch { } // if we fail we skip the error, default color will be used // We add a line to the XML sb.Append("<set name='" + plots.GetX(i) + "' value='" + plots.GetY(i).ToString() + "'"); if (color != "") { sb.Append(" color='" + color + "'"); } sb.AppendLine(" />"); } // We close the graph tag opened previously sb.AppendLine("</graph>"); // We finally return the xml data return(sb.ToString()); }