[.net core 3.0] Excelファイル書き出し

Microsoft.Office.Interop.Excelはcoreに対応していないようなので、有名なEPPlusをNuGetでゲット。一個前のエントリにあるソースコードを流用して、MySqlのデータをExcelファイルに書き出す。例外処理してません。

using System;
using System.IO;
using System.Data;
using MySql.Data.MySqlClient;
using OfficeOpenXml;

namespace CliTool {
    class Program {
        static void Main(string[] args) {
            CreateExcel(GetTrySailMember());
            /* end */
            Console.WriteLine("Press Any key to continue...");
            Console.ReadKey(true);
        }

        private static void CreateExcel(DataTable table) {
            using var saveExcel = new ExcelPackage(new FileInfo("trysail.xlsx"));
            var sheet = saveExcel.Workbook.Worksheets.Add("trysail");
            // header
            var row = 1;
            var col = 1;
            foreach (var column in table.Columns) {
                sheet.Cells[row, col].Value = column.ToString();
                col++;
            }
            // data
            foreach (var records in table.Select()) {
                ++row;
                for(var i = 0; i < records.ItemArray.Length; i++) {
                    sheet.Cells[row, (i + 1)].Value = records[i].ToString() ?? string.Empty;
                }
            }
            saveExcel.Save();
        }

        private static DataTable GetTrySailMember() {
            var cString = "Host=localhost;Database=benchmark;CharSet=utf8mb4;User Id=root;Password=";
            var query = "select * from member";
            var datatable = new DataTable();
            using var con = new MySqlConnection(cString);
            using var adapter = new MySqlDataAdapter {
                SelectCommand = new MySqlCommand(query, con)
            };
            adapter.Fill(datatable);
            return datatable;
        }
    }
}

DataRowはいつものfor文で回す方法に変更した。