C# Excel 차트에 Data Table 추가

Excel의 차트는 데이터를 시각화하여 데이터를 비교 분석하는 데 편리합니다.그러나 일정한 한계가 있다. 예를 들어 도표에서 원래 데이터의 정확한 값을 직접 읽을 수 없다.Excel에서 제공하는 솔루션은 차트 아래에 아날로그 연산표를 추가하는 것입니다. 즉, 테이블을 만들 때 따르는 데이터를 포함하는 표를 좌표축 아래에 추가하는 것입니다.본고는 무료 Free Spire를 통해 소개하는 데 목적을 두고 있다.XLS는 C#에서 Excel 파일을 독립적으로 생성하고 데이터를 추가하며 차트를 생성하고 아날로그 연산표를 추가합니다.
필요한 네임스페이스:
using Spire.Xls;
using System.Drawing;

단계 설명:
1단계: Excel 파일을 독립적으로 만들고 양식을 추가합니다.
            Workbook workbook = new Workbook();
            workbook.CreateEmptySheets(1);
            Worksheet sheet = workbook.Worksheets[0];

단계 2: 셀에 샘플 데이터를 추가하여 다음 단계에서 도표를 생성합니다.
            sheet.Name = "Demo";
            sheet.Range["A1"].Value = " ";
            sheet.Range["A2"].Value = " ";
            sheet.Range["A3"].Value = " ";
            sheet.Range["A4"].Value = " ";
            sheet.Range["A5"].Value = " ";
            sheet.Range["A6"].Value = " ";
            sheet.Range["A7"].Value = " ";
            sheet.Range["B1"].Value = " ";
            sheet.Range["B2"].NumberValue = 3.3;
            sheet.Range["B3"].NumberValue = 2.5;
            sheet.Range["B4"].NumberValue = 2.0;
            sheet.Range["B5"].NumberValue = 3.7;
            sheet.Range["B6"].NumberValue = 4.5;
            sheet.Range["B7"].NumberValue = 4.0;
            sheet.Range["C1"].Value = " ";
            sheet.Range["C2"].NumberValue = 3.8;
            sheet.Range["C3"].NumberValue = 3.2;
            sheet.Range["C4"].NumberValue = 1.7;
            sheet.Range["C5"].NumberValue = 3.5;
            sheet.Range["C6"].NumberValue = 4.5;
            sheet.Range["C7"].NumberValue = 4.3;
            sheet.Range["D1"].Value = " ";
            sheet.Range["D2"].NumberValue = 3.0;
            sheet.Range["D3"].NumberValue = 2.8;
            sheet.Range["D4"].NumberValue = 3.5;
            sheet.Range["D5"].NumberValue = 2.3;
            sheet.Range["D6"].NumberValue = 3.3;
            sheet.Range["D7"].NumberValue = 3.8;

3단계: 2단계로 채워진 데이터를 이용하여 기둥형 그림을 생성하고 Excel에 있는 위치, 도표 이름 등을 설정한다.
            Chart chart = sheet.Charts.Add(ExcelChartType.Column3DClustered);
            chart.DataRange = sheet.Range["B1:D7"];
            chart.SeriesDataFromRange = false;
            chart.TopRow = 7;
            chart.BottomRow = 28;
            chart.LeftColumn = 3;
            chart.RightColumn =11;
            chart.ChartTitle = " ";
            chart.ChartTitleArea.IsBold = true;
            chart.ChartTitleArea.Size = 12;
            Spire.Xls.Charts.ChartSerie cs1 = chart.Series[0]; 
            cs1.CategoryLabels = sheet.Range["A2:A7"];

4단계: 아날로그 데이터 테이블을 추가합니다.
           chart.HasDataTable = true;

단계 5: 문서를 Excel 2010 버전으로 저장합니다.
           workbook.SaveToFile("S3.xlsx", ExcelVersion.Version2010);

코드 실행 후 효과 캡처:
모든 코드:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Spire.Xls;
using System.Drawing;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            Workbook workbook = new Workbook();
            workbook.CreateEmptySheets(1);
            Worksheet sheet = workbook.Worksheets[0];

            sheet.Name = "Demo";
            sheet.Range["A1"].Value = " ";
            sheet.Range["A2"].Value = " ";
            sheet.Range["A3"].Value = " ";
            sheet.Range["A4"].Value = " ";
            sheet.Range["A5"].Value = " ";
            sheet.Range["A6"].Value = " ";
            sheet.Range["A7"].Value = " ";
            sheet.Range["B1"].Value = " ";
            sheet.Range["B2"].NumberValue = 3.3;
            sheet.Range["B3"].NumberValue = 2.5;
            sheet.Range["B4"].NumberValue = 2.0;
            sheet.Range["B5"].NumberValue = 3.7;
            sheet.Range["B6"].NumberValue = 4.5;
            sheet.Range["B7"].NumberValue = 4.0;
            sheet.Range["C1"].Value = " ";
            sheet.Range["C2"].NumberValue = 3.8;
            sheet.Range["C3"].NumberValue = 3.2;
            sheet.Range["C4"].NumberValue = 1.7;
            sheet.Range["C5"].NumberValue = 3.5;
            sheet.Range["C6"].NumberValue = 4.5;
            sheet.Range["C7"].NumberValue = 4.3;
            sheet.Range["D1"].Value = " ";
            sheet.Range["D2"].NumberValue = 3.0;
            sheet.Range["D3"].NumberValue = 2.8;
            sheet.Range["D4"].NumberValue = 3.5;
            sheet.Range["D5"].NumberValue = 2.3;
            sheet.Range["D6"].NumberValue = 3.3;
            sheet.Range["D7"].NumberValue = 3.8;

            Chart chart = sheet.Charts.Add(ExcelChartType.Column3DClustered);
            chart.DataRange = sheet.Range["B1:D7"];
            chart.SeriesDataFromRange = false;
            chart.TopRow = 7;
            chart.BottomRow = 28;
            chart.LeftColumn = 3;
            chart.RightColumn =11;
            chart.ChartTitle = " ";
            chart.ChartTitleArea.IsBold = true;
            chart.ChartTitleArea.Size = 12;
            Spire.Xls.Charts.ChartSerie cs1 = chart.Series[0]; 
            cs1.CategoryLabels = sheet.Range["A2:A7"];

            chart.HasDataTable = true;

            workbook.SaveToFile("S3.xlsx", ExcelVersion.Version2010);
            System.Diagnostics.Process.Start("S3.xlsx");
        }
    }
}

좋은 웹페이지 즐겨찾기