public XlChartObject Add(XlRowCol rowCol) { object[] paramArray = new object[4]; paramArray[0] = rowCol; paramArray[1] = Missing.Value; paramArray[2] = Missing.Value; paramArray[3] = Missing.Value; object returnValue = InstanceType.InvokeMember("Add", BindingFlags.InvokeMethod, null, ComReference, paramArray, XlLateBindingApiSettings.XlThreadCulture); if (null == returnValue) { return(null); } XlChartObject newClass = new XlChartObject(this, returnValue); ListChildReferences.Add(newClass); return(newClass); }
public static void CreateColClusterBarGraph( int left, int top, int width, int height, _Worksheet oSheet, Range dataRange, string strXAxis, string strChartTitle, double titleFontSize, string strXTitle, double xFontSize, List <string> listLegend, string strYTitle, double yFontSize, XlRowCol rowCol) { ChartObjects chartObjs = (ChartObjects)oSheet.ChartObjects(Type.Missing); ChartObject chartObj = chartObjs.Add(left + 100, top, 425, 315); Chart xlChart = chartObj.Chart; xlChart.SetSourceData(dataRange, Type.Missing); xlChart.ChartType = XlChartType.xlColumnClustered; xlChart.PlotBy = rowCol; // Xaxis data labels Series oS = (Series)xlChart.SeriesCollection(1); string strVersion = m_oXL.Application.Version; if (strVersion == "11.0") // Office 2003 Excel { string strStartRow, strEndRow, strStartCol, strEndCol; int nPos = -1, nEnd = -1, nStartCol, nEndCol, nStartRow, nEndRow; // Sample incoming: "='Total Lane-Miles Per // Condition'!$B$5:$F$5"; or "='Total Lane-Miles Per // Condition'!$B$5:$B$10"; nPos = strXAxis.IndexOf('$'); if (nPos > -1) { nEnd = strXAxis.IndexOf('$', nPos + 1); strStartCol = strXAxis.Substring(nPos + 1, nEnd - nPos - 1); nPos = strXAxis.IndexOf(':'); strStartRow = strXAxis.Substring(nEnd + 1, nPos - nEnd - 1); nPos = strXAxis.IndexOf('$', nPos); nEnd = strXAxis.IndexOf('$', nPos + 1); strEndCol = strXAxis.Substring(nPos + 1, nEnd - nPos - 1); strEndRow = strXAxis.Substring(nEnd + 1); nStartRow = int.Parse(strStartRow); nEndRow = int.Parse(strEndRow); nStartCol = GetColumnNumber(strStartCol + strStartRow); nEndCol = GetColumnNumber(strEndCol + strStartRow); nPos = strXAxis.IndexOf('!'); strXAxis = strXAxis.Substring(0, nPos + 1); strXAxis += "R" + nStartRow.ToString() + "C" + nStartCol.ToString() + ":R" + nEndRow.ToString() + "C" + nEndCol.ToString(); } } oS.XValues = strXAxis; // Add title: if (strChartTitle != "") { xlChart.HasTitle = true; xlChart.ChartTitle.Text = strChartTitle; } // Xaxis title if (strXTitle != "") { Axis xAxis = (Axis)xlChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary); xAxis.HasTitle = true; xAxis.AxisTitle.Text = strXTitle; xAxis.AxisTitle.Font.Size = xFontSize; } // legend: xlChart.HasLegend = false; if (listLegend != null) { if (listLegend.Count > 0) { xlChart.HasLegend = true; int seriesNum = 1; foreach (string str in listLegend) { oS = (Series)xlChart.SeriesCollection(seriesNum); oS.Name = str; seriesNum++; } } } if (strYTitle != "") { Axis yAxis = (Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary); yAxis.HasTitle = true; yAxis.AxisTitle.Text = strYTitle; yAxis.AxisTitle.Font.Size = yFontSize; } }
/// <summary>为指定图表设置源数据区域。 /// </summary> /// <param name="Source">包含源数据的区域。</param> /// <param name="PlotBy">指定数据绘制方式。可为以下 XlRowCol 常量之一:xlColumns 或 xlRows。</param> public void SetSourceData(Range Source, XlRowCol? PlotBy = null) { _objaParameters = new object[2] { Source._objRange, PlotBy == null ? System.Type.Missing : PlotBy }; _objChart.GetType().InvokeMember("SetSourceData", BindingFlags.InvokeMethod, null, _objChart, _objaParameters); }
//插入图表操作 //public void InsertPictures(string Filename, string ws, int Height, int Width) //插入图片操作二 //{ // GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150); // GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height; // GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width; //} //public void InsertPictures(string Filename, string ws, int left, int top, int Height, int Width) //插入图片操作三 //{ // GetSheet(ws).Shapes.AddPicture(Filename, MsoTriState.msoFalse, MsoTriState.msoTrue, 10, 10, 150, 150); // GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementLeft(left); // GetSheet(ws).Shapes.get_Range(Type.Missing).IncrementTop(top); // GetSheet(ws).Shapes.get_Range(Type.Missing).Height = Height; // GetSheet(ws).Shapes.get_Range(Type.Missing).Width = Width; //} public void InsertActiveChart(XlChartType ChartType, string ws, int DataSourcesX1, int DataSourcesY1, int DataSourcesX2, int DataSourcesY2, XlRowCol ChartDataType) { ChartDataType = XlRowCol.xlColumns; wb.Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing); { wb.ActiveChart.ChartType = ChartType; wb.ActiveChart.SetSourceData(GetSheet(ws).get_Range(GetSheet(ws).Cells[DataSourcesX1, DataSourcesY1], GetSheet(ws).Cells[DataSourcesX2, DataSourcesY2]), ChartDataType); wb.ActiveChart.Location(XlChartLocation.xlLocationAsObject, ws); } }
/// <summary>修改给定图表的属性。可使用本方法快速设置图表的格式,而不必逐个设置所有属性。本方法是非交互式的,并且仅更改指定的属性。 /// </summary> /// <param name="Source">包含新图表源数据的区域。如果省略本参数,Microsoft Excel 将编辑活动图表工作表或活动工作表上处于选定状态的图表。</param> /// <param name="Gallery">用于指定图表类型的 XlChartType 的常量之一。</param> /// <param name="Format">内置自动套用格式的选项编号。可为从 1 到 10 的数字,其取值取决于库的类型。如果省略此参数,Microsoft Excel 将根据库的类型和数据源选择默认值。</param> /// <param name="PlotBy">指定每个系列的数据是来自行还是来自列。可以是以下 XlRowCol 常量之一:xlRows 或 xlColumns。</param> /// <param name="CategoryLabels">指定包含分类标签的源范围内的行数或列数的整数。合法值为从 0(零)至小于相应分类或系列的最大个数间的某一数字。</param> /// <param name="SeriesLabels">指定包含系列标志的源范围内的行数或列数的整数。合法值为从 0(零)至小于相应分类或系列的最大个数间的某一数字。</param> /// <param name="HasLegend">若要包括图例,则为 True。</param> /// <param name="Title">图表标题文字。</param> /// <param name="CategoryTitle">分类轴标题文字。</param> /// <param name="ValueTitle">数值轴标题文字。</param> /// <param name="ExtraTitle">三维图表的系列轴标题,或二维图表的次数值轴标题。</param> public void ChartWizard(object Source = null, XlChartType? Gallery = null, int? Format = null, XlRowCol? PlotBy = null, int? CategoryLabels = null, int? SeriesLabels = null, bool? HasLegend = null, string Title = null, string CategoryTitle = null, string ValueTitle = null, string ExtraTitle = null) { _objaParameters = new object[11] { Source == null ? System.Type.Missing : Source, Gallery == null ? System.Type.Missing : Gallery, Format == null ? System.Type.Missing : Format, PlotBy == null ? System.Type.Missing : PlotBy, CategoryLabels == null ? System.Type.Missing : CategoryLabels, SeriesLabels == null ? System.Type.Missing : SeriesLabels, HasLegend == null ? System.Type.Missing : HasLegend, Title == null ? System.Type.Missing : Title, CategoryTitle == null ? System.Type.Missing : CategoryTitle, ValueTitle == null ? System.Type.Missing : ValueTitle, ExtraTitle == null ? System.Type.Missing : ExtraTitle }; _objChart.GetType().InvokeMember("ChartWizard", BindingFlags.InvokeMethod, null, _objChart, _objaParameters); }