/// <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> /// Create all your controls here for rendering. /// Try to avoid using the RenderWebPart() method. /// </summary> protected override void CreateChildControls() { if (!_error) { try { base.CreateChildControls(); // Your code here... // We first check all settings CheckSettings(); // We transform the list into XML Input ListToXmlConverter conv = new ListToXmlConverter(_listName, _viewName); string chartXmlContent = conv.GenerateXml(ChartTitle, XValue, XTitle, YValue, YTitle, Action, Colors); // We generate the graph string chartHtml = Utils.RenderChartHTML(ChartType, chartXmlContent, ChartID.ToString(), ChartWidth.ToString(), ChartHeight.ToString(), false); LiteralControl lc = new LiteralControl(chartHtml); this.Controls.Add(lc); // We add a cariage return to display correctly export buttons if (this._excelExport || this._xmlExport) { this.Controls.Add(new LiteralControl("<br />")); } // display (or not, depending of the user choice option) the button "export to excel" if (this._excelExport) { Button btnExcel = new Button(); btnExcel.Text = "Export chart to Excel"; btnExcel.Click += new System.EventHandler(this.ExportExcelButtonClick); btnExcel.Style.Add("font-size", "10"); btnExcel.Style.Add("margin", "10"); this.Controls.Add(btnExcel); } // display (or not, depending of the user choice option) the button "export to xml" if (this._xmlExport) { Button btnXML = new Button(); btnXML.Text = "Export chart to XML file"; btnXML.Click += new System.EventHandler(this.ExportXmlButtonClick); btnXML.Style.Add("font-size", "10"); btnXML.Style.Add("margin", "10"); this.Controls.Add(btnXML); } } catch (Exception ex) { HandleException(ex); } } }
/// <summary> /// When the user click on the export to XML button /// so we get to xml, and make it download /// </summary> protected void ExportXmlButtonClick(object sender, EventArgs e) { // We first check all settings CheckSettings(); // We transform the list into XML Input ListToXmlConverter conv = new ListToXmlConverter(_listName, _viewName); string chartXmlContent = conv.GenerateXml(ChartTitle, XValue, XTitle, YValue, YTitle, Action, Colors); Context.Response.Clear(); Context.Response.ContentType = "application/octet-stream"; Context.Response.AddHeader("Content-Disposition", "attachment; filename=XMLExport.xml"); Context.Response.AddHeader("Content-Length", chartXmlContent.Length.ToString()); Context.Response.Write(chartXmlContent); Context.Response.End(); }