/// <summary> /// 导出csv格式的图表数据 /// </summary> /// <param name="filename"></param> /// <param name="serieNo"></param> /// <returns></returns> public ActionResult ExportCsvChart(string filename, string serieNo) { CsvStreamWriter scvWriter = new CsvStreamWriter(); ChartData chartData = TempDataUtil.getChartData(serieNo); string reportname = string.Empty; if (chartData != null) { reportname = (filename.Equals("chart") ? "" : filename) + chartData.name.Replace("/", "").Replace(" ", ""); IList <string> dataList = new List <string>(); string xname = Resources.SunResource.CUSTOMREPORT_CHART_TIME; if (chartData.names.Length > 0 && !string.IsNullOrEmpty(chartData.names[0])) { xname = chartData.names[0] + "[" + chartData.units[0] + "]"; } dataList.Add(xname); dataList.Add(convertArrtoStr(chartData.categories)); foreach (YData ydata in chartData.series) { dataList.Add(ydata.name); dataList.Add(convertArrtoStr(ydata.data)); } scvWriter.AddStrDataList(dataList); } string fullFile = Server.MapPath("/") + "tempexportfile\\" + serieNo + ".csv"; scvWriter.Save(fullFile); //转化为csv格式的字符串 ActionResult tmp = File(fullFile, "text/csv; charset=UTF-8", urlcode(reportname) + ".csv"); return(tmp); }
/// <summary> /// 导出excel数据 /// </summary> /// <param name="filename"></param> /// <param name="serieNo"></param> /// <returns></returns> public ActionResult ExportExcelChart(string filename, string serieNo) { ChartData chartData = null;// TempDataUtil.getChartData(serieNo+"_large"); if (chartData == null) { chartData = TempDataUtil.getChartData(serieNo); } IList <ExcelData> datas = new List <ExcelData>(); ExcelData data = new ExcelData(); string reportname = string.Empty; bool isMulti = false; if (chartData != null) { isMulti = ReportBuilder.isMulti(chartData.units); reportname = (filename.Equals("chart") ? "" : filename) + chartData.name.Replace("/", "").Replace(" ", ""); IList <string> xList = new List <string>(); string xname = Resources.SunResource.CUSTOMREPORT_CHART_TIME; if (chartData.names.Length > 0 && !string.IsNullOrEmpty(chartData.names[0])) { xname = chartData.names[0] + "[" + chartData.units[0] + "]"; } xList.Add(xname); int n = 1;// chartData.categories.Length > 100 ? 12 : 1; for (int k = 0; k < chartData.categories.Length; k = k + n) { string x = chartData.categories[k]; xList.Add(x); } data.Rows.Add(xList); IList <string> tmps = null; string[] series = new string[chartData.series.Count()]; for (int i = 0; i < chartData.series.Count(); i++) { if (i > 0 && isMulti) { data = new ExcelData(); } tmps = new List <string>(); string yname = chartData.series[i].name; tmps.Add(yname); for (int k = 0; k < chartData.series[i].data.Length; k = k + n) { float?f = chartData.series[i].data[k]; tmps.Add(f == null ? string.Empty : StringUtil.formatDouble(StringUtil.stringtoDouble(f.ToString()), "0.00")); } data.Rows.Add(tmps); if (isMulti) { int slen = yname.IndexOf("["); int endLen = yname.IndexOf("]"); if (slen > -1) { data.Title = yname.Substring(slen + 1, endLen - slen - 1); } else { data.Title = yname; } data.series = new String[] { chartData.series[i].name }; data.chartType = chartData.series[i].type; datas.Add(data); } else { series[i] = chartData.series[i].name; } } if (!isMulti && chartData.series.Count() > 0) { int slen = chartData.series[0].name.IndexOf("["); int endLen = chartData.series[0].name.IndexOf("]"); if (slen > -1) { data.Title = chartData.series[0].name.Substring(slen + 1, endLen - slen - 1); } else { data.Title = chartData.series[0].name; } data.series = series; data.chartType = chartData.series[0].type; datas.Add(data); } } ExcelStreamWriter xlsWriter = new ExcelStreamWriter(reportname, datas, chartData.units, reportname, "", isMulti); //散列图暂不生成 if (chartData.series.Length > 0 && "scatter".Equals(chartData.series[0].type)) { xlsWriter.Save(false); } else { xlsWriter.Save(true); } return(File(xlsWriter.FullName, "text/xls; charset=UTF-8", urlcode(xlsWriter.FileName))); }