private void CreateGraph(IScriptWorker CurrentScriptWorker, Excel.Worksheet xlWorkSheet, int RowCounter, int ColumnCounterForNamesOfTests) { Excel.Range chartRange; Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); Excel.ChartObject myChart = xlCharts.Add(100, 200, 800, 350); Excel.Chart chartPage = myChart.Chart; chartRange = xlWorkSheet.get_Range((Excel.Range)xlWorkSheet.Cells[1, 1], (Excel.Range)xlWorkSheet.Cells[RowCounter - 1, ColumnCounterForNamesOfTests - 1]); chartPage.ChartWizard(Source: chartRange, Gallery: Excel.XlChartType.xlColumnClustered, Title: (string)CurrentScriptWorker.GetLabName(), CategoryTitle: (string)CurrentScriptWorker.GetValueSeparator(), ValueTitle: (string)CurrentScriptWorker.GetValueType()); }
/// <summary> /// 给工作表添加一个图表 /// </summary> /// <param name="firstRange">数据工作表</param> /// <param name="xData">x轴数据区域:格式A1:A14</param> /// <param name="ydata">y轴数据区域:格式B1:E14</param> /// <param name="chartName">图标名称</param> /// <param name="xname">y轴名称</param> /// <param name="yname">y轴名称</param> /// <param name="chartType">图表类型</param> public static void createInnerChart(Excel.Worksheet dataSheet, List<ChartStuct> charts, string chartName,string categoryName) { Excel.ChartObjects ChartObjects = (Excel.ChartObjects)dataSheet.ChartObjects(Missing.Value); if (charts.Count < 1) return;//无数不处理 //绘制第一维图表 Excel.Range firstRange = charts[0].dataRange; Excel.XlChartType chartType = charts[0].chartType; string yname = charts[0].yname; int cols = 0; foreach (ChartStuct chartStuct in charts) { cols += chartStuct.dataRange.Columns.Count; } Excel.ChartObject chartObject = ChartObjects.Add(cols * 60, 30, 800, 350); chartObject.Chart.ChartWizard(firstRange, chartType, Missing.Value, Excel.XlRowCol.xlColumns, 1, 1, true, chartName, categoryName, yname, Missing.Value); chartObject.Chart.ChartArea.ClearFormats(); chartObject.Chart.ChartType = chartType; chartObject.Chart.ChartArea.Fill.BackColor.SchemeColor = 2;//整个图表区背景 //Console.WriteLine(chartObject.Chart.ChartArea.Fill.ForeColor.SchemeColor); //Console.WriteLine(chartObject.Chart.ChartArea.Fill.ForeColor.RGB); chartObject.Chart.ChartArea.Fill.ForeColor.SchemeColor = 2; //Console.WriteLine(chartObject.Chart.ChartArea.Fill.ForeColor.RGB); //Console.WriteLine(chartObject.Chart.PlotArea.Interior.ColorIndex); //chartObject.Chart.PlotArea.Interior.PatternColorIndex = 19; chartObject.Chart.PlotArea.Interior.ColorIndex = 2;//图例区域背景 Excel.Axis firstAxis = (Excel.Axis)chartObject.Chart.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary); firstAxis.HasMajorGridlines = true;//不显示横向网格线 //firstAxis.HasTickLabels = false; //chartObject.Chart.PlotArea.Border.LineStyle = Excel.XlLineStyle.xlLineStyleNone;//设置绘图区边框线条 Excel.SeriesCollection seriesCollection = (Excel.SeriesCollection)chartObject.Chart.SeriesCollection(Type.Missing); //xlSeries1.Fill=Microsoft.Office.Interop.Excel.ChartFillFormat. if (seriesCollection.Count > 0) { Excel.Series seires1 = (Excel.Series)seriesCollection.Item(1);//具体数据图表区颜色 //seires1.Fill.BackColor.SchemeColor = 18; seires1.Fill.ForeColor.SchemeColor = 46; seires1.MarkerForegroundColorIndex = Excel.XlColorIndex.xlColorIndexNone; seires1.HasLeaderLines = false; } int sc = seriesCollection.Count; //绘制第二维图表 //修改第一维图表的各个序列的图例,这里有个bug,会用最后的标题覆盖前面的 // for (int i = 0; i < charts[0].seriesTitles.Length; i++) //{ //string stitle = charts[0].seriesTitles[i]; //Excel.Series tmpSeires = (Excel.Series)seriesCollection.Item(1); //tmpSeires.Name = stitle; //} //绘制第二个图表,多维这里设置 当有图表类型为XlChartType.xl3DColumn或其他3d效果时,抛 xlSeries.AxisGroup = Excel.XlAxisGroup.xlSecondary;异常 for (int i = 1; i < charts.Count; i++) { ChartStuct cs = charts[i]; string stitle = cs.seriesTitles[0]; Excel.Series xlSeries = (Excel.Series)seriesCollection.NewSeries(); xlSeries.Name = stitle; xlSeries.HasLeaderLines = true; xlSeries.Fill.ForeColor.SchemeColor = 46; //xlSeries.Has3DEffect = true; //xlSeries.HasDataLabels = true; try { xlSeries.AxisGroup = Excel.XlAxisGroup.xlSecondary; } catch (Exception eee){ Console.WriteLine(eee.Message); } xlSeries.ChartType = cs.chartType; xlSeries.Values = cs.dataRange; Excel.Axis valueAxis = (Excel.Axis)chartObject.Chart.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlSecondary); valueAxis.HasTitle = true; valueAxis.AxisTitle.Text = cs.yname; } }
public TreemapChart Draw(Excel.Worksheet sheet) { Excel.ChartObjects cos = sheet.ChartObjects(); Excel.ChartObject co = cos.Add(ChartArea.Left, ChartArea.Top, ChartArea.Width, ChartArea.Height); Chart = co.Chart; Draw(); return this; }
private static void BuildMetricHistogram(Excel.Worksheet xlWorkSheet, object misValue, string lowBorder, string highBorder, double left, double top, double width, double height) { try { Excel.Range chartRange; Excel.ChartObjects xlCharts = (Excel.ChartObjects)xlWorkSheet.ChartObjects(Type.Missing); Excel.ChartObject chart = (Excel.ChartObject)xlCharts.Add(left, top, width, height); Excel.Chart chartPage = chart.Chart; chartRange = xlWorkSheet.get_Range(lowBorder, highBorder); chartPage.SetSourceData(chartRange, misValue); chartPage.ChartType = Excel.XlChartType.xlColumnClustered; } catch (Exception exception) { throw exception; } }
/// <summary> /// Заполнение данными и построение графиокв /// </summary> /// <param name="oWS">excel work sheet obj</param> /// <param name="min">minimal value</param> /// <param name="max">maximal value</param> private void displayExcel(Excel._Worksheet oWS, double min, double max) { // Вводим основные данные для графика Excel.ChartObjects xlCharts = (Excel.ChartObjects)oWS.ChartObjects(Type.Missing); Excel.ChartObject myChart = (Excel.ChartObject)xlCharts.Add(110, 0, 350, 250); Excel.Chart chart = myChart.Chart; chart.ChartType = Excel.XlChartType.xlXYScatterSmooth; Excel.SeriesCollection seriesCollection = (Excel.SeriesCollection)chart.SeriesCollection(Type.Missing); Excel.Series series = seriesCollection.NewSeries(); series.XValues = oWS.get_Range("A1", "A1000"); series.Values = oWS.get_Range("B1", "B1000"); // Создаём оси Excel.Axis Yaxis = (Excel.Axis)chart.Axes( Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary); Excel.Axis Xaxis; Xaxis = (Excel.Axis)chart.Axes( Excel.XlAxisType.xlCategory, Excel.XlAxisGroup.xlPrimary); // Подписи осей Yaxis.HasTitle = true; Yaxis.AxisTitle.Text = "Какое-то имя"; Xaxis.HasTitle = true; Xaxis.AxisTitle.Text = "Время, с"; //Масштаб осей Yaxis.ScaleType = Excel.XlScaleType.xlScaleLogarithmic; Yaxis.MinimumScale = min / 1.5; Yaxis.MaximumScale = max * 2; Xaxis.ScaleType = Excel.XlScaleType.xlScaleLogarithmic; }