c#实现EXCEL自动绘制图表

    技术2022-05-20  42

    最近再做问卷的自动处理程序,研究了一个星期的EXCEL图表,终于实现了大部分想要的功能(选定数据区域绘制图表、图表位置的调整、图表样式的调整),以下为图表绘制部分的主要代码,备忘一下(chart放在选定数据区域的正下方,缺省大小、采用EXCEL 2007最漂亮的三维样式)。

     

             // 要先在程序中引用Microsoft Excel 12.0 Object Library          using  Microsoft.Office.Interop.Excel;         // sheet,数据所在工作表;oResizeRange,数据区域(可以包含标题);chartType,图表类型;alter,数据行列切换开关          private   void  autoDrawChart(Worksheet sheet, Range oResizeRange, XlChartType chartType, XlRowCol alter, string  title)         {            //创建图表            Chart newchart = (Chart)((Workbook)sheet.Parent).Charts.Add(Type.Missing, Type.Missing, Type.Missing, Type.Missing);            newchart.ChartWizard(oResizeRange, chartType, 6, alter, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);            //移动图表到数据所在工作表            newchart.HasTitle = true;            if (title != "")            {                try                {                    newchart.ChartTitle.Text = title;                }                catch (Exception e)                {                    //郁闷,Chart设置Title有时是好的,有时候出错,不知道是哪里出了问题,只好截获异常处理。似乎是HasTitle的赋值有时不成功。                }            }            //如果是单行的柱状图,不显示序列值,并依数据点着色            if (chartType == XlChartType.xlColumnClustered)            {                newchart.HasLegend = false;                ((ChartGroup)newchart.ChartGroups(1)).VaryByCategories = true;            }            //设置图表样式为彩色三维样式            newchart.ChartStyle = 26;            newchart.Location(XlChartLocation.xlLocationAsObject, sheet.Name);            //移动位置到相关数据的正下方            ChartObject curshape = (ChartObject)sheet.ChartObjects(sheet.Application.ActiveChart.Name.Replace(sheet.Name + " """));            curshape.Left = Single.Parse(oResizeRange.Left.ToString());            curshape.Top = Single.Parse(oResizeRange.Top.ToString()) + Single.Parse(oResizeRange.Height.ToString());            //改成圆角图表            curshape.RoundedCorners = true;        }

    Excel 2003代码基本相同,但是

                 // 设置图表样式为彩色三维样式             newchart.ChartStyle  =   26 ;

    这个是用不了的,03里面没有三维彩色样式,好像ChartSytle都没有。另外

    if  (chartType  ==  XlChartType.xlColumnClustered)

    这个编译通不过,不知道怎么回事


    最新回复(0)