interop Excel을 사용하여 Excel 파일로 차트를 만듭니다.시리즈 차트의 값 설정 (Interop Excel)
내가 차트를 만들고 일련의 값을 첫 번째 시간에 설정할 때 나는 아무런 문제가 없습니다.
두 번째로 오류가 발생했습니다.
나는이 문제를 재현하는 POC 만들었습니다
using System;
using System.Linq;
using System.Runtime.InteropServices;
using Excel = Microsoft.Office.Interop.Excel;
namespace POC_Excel
{
static class Program
{
static void Main(string[] args)
{
Excel.Application excel = null;
try
{
excel = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
}
catch (Exception ex)
{
Console.WriteLine("Please run Excel");
Console.ReadLine();
Environment.Exit(0);
}
try
{
LockUnlock(excel, true);
var shapes = excel.ActiveSheet.Shapes;
Console.WriteLine(" --- Create chart --- ");
Excel.Shape shape = shapes.AddChart2(-1, Excel.XlChartType.xlColumnClustered);
Console.WriteLine(" --- 1st chart filling --- ");
CreateSeries(shape);
Console.WriteLine(" --- 2nde chart filling --- ");
CreateSeries(shape);
}
catch (Exception ex)
{
Console.WriteLine("Error : " + ex);
}
finally
{
LockUnlock(excel, false);
Console.ReadLine();
}
}
static void CreateSeries(Excel.Shape shape)
{
var seriesCollection = (Excel.SeriesCollection)shape.Chart.SeriesCollection();
while (0 < seriesCollection.Count)
seriesCollection.Item(1).Delete();
var donnee1 = new object[] { 10, 20, 30 };
var series = seriesCollection.NewSeries();
Console.WriteLine("Add values to serie : " + donnee1.Select(v => v.ToString()).Aggregate((a, b) => a + ", " + b));
series.Values = donnee1;
Console.WriteLine("Serie data : " + series.Formula);
series.ChartType = Excel.XlChartType.xlDoughnut;
for (int i = 0; i < donnee1.Length; i++)
{
Excel.Point pt = series.Points(i + 1);
Console.WriteLine("points : " + pt.Name);
}
}
private static void LockUnlock(Excel.Application excel, bool isFiger)
{
excel.DisplayAlerts = !isFiger;
excel.ScreenUpdating = !isFiger;
excel.EnableEvents = !isFiger;
excel.Interactive = !isFiger;
}
}
}
당신이 나를 도울 수 있습니까?
감사
"두 번째로 오류가 발생했습니다." 어떤 오류입니까? COM 예외? C# 예외? 어떤 코드 줄이 실제로 깨져 있습니까? – Drakestar