smemo

技術メモです。

【C#】C#プログラムでExcelを出力する

C#プログラムからExcelを出力する方法について少し調べたのでメモ

Microsoft.Office.Interop.Excelライブラリを使用する方法
Excelをインストールしていないと使用できないのとオブジェクトの解放を意識する必要がある。

ClosdeXmlを使用する方法
Microsoft Open XMLを使用したオープンソースExcelのインストールは不要


今回はClosedXmlを使用してDynamicsのエンティティのリストをExcelを出力してみました。

public void ExportEntityList()
{
    // エンティティメタデータ取得
    var entityMetadatas = _crmsrv.GetAllEntityMetadata();

    XLWorkbook workbook = new XLWorkbook();

    IXLWorksheet ws = workbook.AddWorksheet("sample");

    // エンティティの表示名と論理名をオブジェクトとして設定
    ws.Cell(1, 1).Value = entityMetadatas
        .OrderBy(entity => entity.LogicalName)
        .Select(entityMetadata => new
        {
            DisplayName = (entityMetadata.DisplayName != null && entityMetadata.DisplayName.UserLocalizedLabel != null)
                            ? entityMetadata.DisplayName.UserLocalizedLabel.Label + "(" + entityMetadata.LogicalName + ")" : entityMetadata.LogicalName,
            LogicalName =  entityMetadata.LogicalName
        }).ToList();

    workbook.SaveAs("sample.xlsx");
}


実行結果イメージは以下。オブジェクトのリストを渡すだけで簡単に一覧の出力が可能でした。
f:id:smemo:20161221001836p:plain

以上です。