コガネブログ

平日更新を目標に Unity や C#、Visual Studio、ReSharper などのゲーム開発アレコレを書いていきます

【C#】NetOffice でグラフを挿入する時の位置の間隔

概要

NetOffice において Excel の1つのセルの横幅は「54」、縦幅は「13.5」で扱われる

using NetOffice.ExcelApi;
using NetOffice.ExcelApi.Enums;

public static class Program
{
    private static void Main()
    {
        using ( var application = new Application() )
        {
            var workBook  = application.Workbooks.Add();
            var workSheet = workBook.Worksheets[ 1 ] as Worksheet;
            var cells     = workSheet.Cells;

            // cells[ 行番号, 列番号 ] で指定
            cells[ 1, 1 ].Value = "名前";
            cells[ 1, 2 ].Value = "種族値";
            cells[ 2, 1 ].Value = "フシギダネ";
            cells[ 2, 2 ].Value = "318";
            cells[ 3, 1 ].Value = "フシギソウ";
            cells[ 3, 2 ].Value = "405";
            cells[ 4, 1 ].Value = "フシギバナ";
            cells[ 4, 2 ].Value = "525";
            cells[ 5, 1 ].Value = "ヒトカゲ";
            cells[ 5, 2 ].Value = "309";
            cells[ 6, 1 ].Value = "リザード";
            cells[ 6, 2 ].Value = "405";
            cells[ 7, 1 ].Value = "リザードン";
            cells[ 7, 2 ].Value = "534";

            const double cellWidth  = 54;   // セルの横幅
            const double cellHeight = 13.5; // セルの縦幅

            var chartObjects = workSheet.ChartObjects() as ChartObjects;
            var chartObject  = chartObjects.Add( cellWidth * 3, cellHeight * 1, 300, 250 );
            var chart        = chartObject.Chart;

            chart.ChartType = XlChartType.xlLine;
            chart.HasLegend = false; // 凡例を非表示にする
            chart.SetSourceData( workSheet.Range( "A1:B7" ) );
            
            // 絶対パスで保存先を指定
            workBook.SaveAs( @"D:\example.xlsx" );

            application.Quit();
        }
    }
}

上記のように

const double cellWidth  = 54;   // セルの横幅
const double cellHeight = 13.5; // セルの縦幅

var chartObject  = chartObjects.Add( cellWidth * 3, cellHeight * 1, 300, 250 );

挿入するグラフを位置を指定すると

f:id:baba_s:20200910154538p:plain

このようにグラフが挿入される