C# 操做 Excel Chart

  1. 添加sheet

    Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
    xlApp.Workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
    //取得sheet1
    Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1];
    //添加sheet3,放在sheet1以后
    Microsoft.Office.Interop.Excel.Worksheet worksheet3 = workbook.Worksheets.Add(After: workbook.Worksheets[1]);
    添加sheet3
  2. 加入数据

    //首行表头
    worksheet3.Cells[1, 1] = "数据A";
    worksheet3.Cells[1, 2] = "数据B";
    //A列单元格格式设置为文本
    Excel.Range range = worksheet3.Range[worksheet3.Cells[1, 1], worksheet3.Cells[nolist.Count + 1, 1]];
    range.NumberFormat = "@";//"@"文本格式  "00"数字格式
    //加入数据
     for (int i = 0; i < 30; i++)
    {
        worksheet3.Cells[i + 2, 1] = i.ToString();
        worksheet3.Cells[i + 2, 2] = (i+100).ToString();
    }
    向sheet3加入数据
  3. 添加chart,type是柱状:xl3DColumn

    //新增一个Chart,放在sheet1和sheet3之间
    workbook.Charts.Add(Missing.Value, Missing.Value, 1, Missing.Value);
    新增Chart,数据源是sheet3
  4. chart数据源

    Excel.Range chartRange = m_Sheet.get_Range("A1", "B32");
    数据源是sheet3的A1至B32数据
  5. chart初始化

    //数据源chartRange
    //chart显示类型 Excel.XlChartType.xl3DColumn 3D柱状图
    //Excel.XlRowCol.xlColumns 指定特定数据列是行显示仍是列显示(xlColumns或xlRows)
    //false 是否包含图例 此处选择不包含
    workbook.ActiveChart.ChartWizard(chartRange, Excel.XlChartType.xl3DColumn, Type.Missing, Excel.XlRowCol.xlColumns, 1, 1, false, "chart1", "数据A", "数据B", "");
    用ChartWizard初始化Chart
  6. chart数据标签

    //当前的统计图只有一个组
    Excel.ChartGroup grp = (Excel.ChartGroup)workbook.ActiveChart.ChartGroups(1);
    Excel.Series s = (Excel.Series)grp.SeriesCollection(1);
    s.HasDataLabels = true;
    获取当前Chart的图,加入标签
  7. chart前景色(柱体颜色)

    //当前Chart中的数据点(柱体)
    Excel.Points points = (Excel.Points)s.Points();
    //excel中的颜色枚举,跟日常的RGB数值不一样
    private enum excelcolor {
                红色 = XlRgbColor.rgbRed,
                绿色 = XlRgbColor.rgbLimeGreen,
                蓝色 = XlRgbColor.rgbDeepSkyBlue
    }
    //改变柱体颜色
    int pc = points.Count + 1;
    for (int i = 1; i < pc; i++)
    {
        Excel.Point point = points.Item(i);
        if (i < 10)
        {
            point.Format.Fill.ForeColor.RGB = (int)excelcolor.绿色;
        }
        else if (i < 20)
        {
            point.Format.Fill.ForeColor.RGB = (int)excelcolor.红色;
        }
        else
        {
            point.Format.Fill.ForeColor.RGB = (int)excelcolor.蓝色;
        }
    }
    改变Chart的前景色 
相关文章
相关标签/搜索