using ClosedXML;
using ClosedXML.Excel;
using KssSmaPlaLib.IO.Excel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ReiaSanTool.Gamen
{
    public partial class SelectExcelColumnForm : Form
    {
        private string _excelFilePath = string.Empty;
        public SelectExcelColumnForm(string excelFilePath)
        {
            _excelFilePath = excelFilePath;

            InitializeComponent();

            PreviewExcel(_excelFilePath, ExcelDgv);
        }

        public void PreviewExcel(string filePath, DataGridView dgv)
        {
            // 1. DataTableを準備（DataGridViewに流し込む用）
            DataTable dt = new DataTable();

            using (var workbook = new XLWorkbook(filePath))
            {
                // 最初のシートを取得
                var worksheet = workbook.Worksheets.First();

                // 2. 100x100の範囲を指定（データがある範囲＋100の小さい方）
                int maxRows = Math.Min(worksheet.LastRowUsed().RowNumber(), 100);
                int maxCols = Math.Min(worksheet.LastColumnUsed().ColumnNumber(), 100);

                // 3. 列（ヘッダー）を作成
                for (int i = 1; i <= maxCols; i++)
                {
                    // 列名を "A", "B", "C"... にする（さっきの変換メソッドを使ってもOK！）
                    dt.Columns.Add(ExcelColumnHelperUxer.GetExcelColumnLetter(i));
                }

                // 4. 行データを流し込む
                for (int r = 1; r <= maxRows; r++)
                {
                    var newRow = dt.NewRow();
                    for (int c = 1; c <= maxCols; c++)
                    {
                        newRow[c - 1] = worksheet.Cell(r, c).Value;
                    }
                    dt.Rows.Add(newRow);
                }
            }

            // 5. DataGridViewに一気にセット（神設定のDoubleBufferedをお忘れなく！）
            dgv.DataSource = dt;
        }
    }
}
