コガネブログ

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

【C#】NetOffice で横棒グラフを作成する時に軸を反転する方法

ソースコード

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";

            var chartObjects = workSheet.ChartObjects() as ChartObjects;
            var chartObject  = chartObjects.Add( 125, 25, 300, 250 );
            var chart        = chartObject.Chart;

            chart.ChartType = XlChartType.xlBarClustered; // 横棒グラフ
            chart.HasLegend = false; // 凡例を非表示にする
            chart.SetSourceData( workSheet.Range( "A1:B7" ) );

            // 軸を反転する
            var axis = ( Axis )chart.Axes( XlAxisType.xlCategory, XlAxisGroup.xlPrimary );
            axis.ReversePlotOrder = true;

            // 絶対パスで保存先を指定
            workBook.SaveAs( @"D:\example.xlsx" );

            application.Quit();
        }
    }
}

f:id:baba_s:20200910154034p:plain

// 軸を反転する
var axis = ( Axis )chart.Axes( XlAxisType.xlCategory, XlAxisGroup.xlPrimary );
axis.ReversePlotOrder = true;

Chart から軸の情報を取得して ReversePlotOrder に true を設定する