C# DataGridView・EXCEL読込する

C#サンプル プログラムプログラミング
スポンサーリンク

C# DataGridView・サンプル プログラム一覧

概要説明

DataGridViewにEXCELファイルを読み込み一覧表示するサンプルです。

良く使う、データ型(文字列、数値、日付、Boolean)を使用しています。

サンプルの内容

・EXCELファイルを読み込み一覧に表示します。

・同名ファイルが既に開かれている場合は、メッセージを表示して処理を抜けます。

・EXCEL読み込み前に確認メッセージを表示します。「はい」でなければ処理を抜けます。

使用部品

No項目名Textname部品
1一覧dataGridView1DataGridView
クリアボタンクリアbutton1Button
3EXCEL出力ボタンEXCEL出力button2Button
4EXCEL読込ボタンEXCEL読込button3Button

プログラミング

参照の追加

EXCELを使うために提供されている、オブジェクト ライブラリの参照を追加します。

[プロジェクト] メニューの [参照の追加] を選択して、[参照マネージャー] ダイアログ ボックスを表示します。

[COM]を選択します。「Microsoft EXCEL xx Object Library」にチェックを入れ「OK」をクリックします。(xxはインストールしているEXCELによって異なります。)参照が追加されます。

言語:C#

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

using Excel = Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;

namespace sample
{
    public partial class Form1 : Form
    {
        // 書籍在庫一覧の列順
        public enum BookItem : int
        {
            NO = 1,           // NO
            TITLE,              // 書名
            AUTHOR_NAME,        // 著者名
            PRICE,              // 価格
            PUBLISHER,          // 出版社名
            PUBLICATION_DATE,   // 出版年月日
            STOCK,              // 在庫
        }

        /// <summary>
        /// 起動時処理
        /// </summary>
        public Form1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 表示クリック処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            // 一覧をクリアする
            DataTable dt = (DataTable)dataGridView1.DataSource;
            dt.Clear();

            //// データを作成する
            //DataTable dt = createData();

            //// 一覧を表示する
            //dataGridViewDisp(dt);

        }

        // <summary>
        /// EXCEL出力処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button2_Click(object sender, EventArgs e)
        {
            // 出力先
            string FILE_PATH = @"d:\" + dataGridView1.Tag + ".xlsx";

            // メッセージ文字列
            string msg = "";

            // データがなければ処理を抜ける
            if (dataGridView1.RowCount <= 0)
            {
                msg = "出力データがありません。";
                MessageBox.Show(msg, "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // 出力ファイル名の
            if (fileOpenCheck(FILE_PATH) == false)
            {
                msg = "EXCELファイルを閉じてから出力を行って下さい。";
                MessageBox.Show(msg, "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // 確認「はい」でなければ処理を抜ける
            msg = "EXCELファイルを出力します。" + "\n" + "宜しいですか?";
            DialogResult result = MessageBox.Show(msg, "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (result != DialogResult.Yes)
            {
                return;
            }

            // Excelアプリケーション初期化
            Excel.Application application = null;

            // Excelオブジェクト初期化
            Excel.Workbooks workbooks = null;
            Excel.Workbook workbook = null;
            Excel.Sheets sheets = null;
            Excel.Worksheet worksheet = null;
            Excel.Range range1 = null;
            Excel.Range range2 = null;
            Excel.Range range3 = null;

            try
            {
                // Excelアプリケーション作成する
                application = new Excel.Application();

                // ワークブックを作成する
                workbooks = application.Workbooks;
                workbook = workbooks.Add();

                // 先頭シート(左からの順)を選択する
                sheets = workbook.Sheets;
                worksheet = sheets[1];
                worksheet.Select(Type.Missing);

                // applicationを非表示にする
                application.Visible = false;

                // 確認メッセージを非表示にする
                application.DisplayAlerts = false;

                // ヘッダー出力
                // 列ループ
                for (int iCol = 0; iCol < dataGridView1.Columns.Count; iCol++)
                {
                    // 列幅を設定する(dataGridViewの列幅×0.14)
                    worksheet.Columns[iCol + 1].ColumnWidth = dataGridView1.Columns[iCol].Width * 0.14;
                    string valueType = dataGridView1.Columns[iCol].ValueType.ToString();

                    // 日時型の場合「YYYY/MM/DD」を列に設定する
                    if (valueType.Equals("System.DateTime"))
                    {
                        worksheet.Columns[iCol + 1].NumberFormat = "yyyy/mm/dd";
                    }

                    // 日時型の場合「YYYY/MM/DD」を列に設定する
                    if (valueType.Equals("System.Decimal"))
                    {
                        worksheet.Columns[iCol + 1].NumberFormat = "#,###";
                    }


                    //  Excelオブジェクト初期化(セル)
                    Excel.Range range = null;
                    try
                    {
                        // Excelのcell指定
                        range = worksheet.Cells[1, iCol + 1];

                        // ヘッダーの値を取得する
                        String sCell = dataGridView1.Columns[iCol].HeaderCell.Value.ToString();

                        // ヘッダーの背景色を設定
                        range.Interior.Color = Color.FromArgb(dataGridView1.ColumnHeadersDefaultCellStyle.BackColor.ToArgb());

                        // ヘッダーの文字色を設定
                        range.Font.Color = Color.FromArgb(dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor.ToArgb());

                        // 列の文字位置をセットする
                        switch (dataGridView1.Columns[iCol].DefaultCellStyle.Alignment)
                        {
                            case DataGridViewContentAlignment.MiddleLeft:
                                worksheet.Columns[iCol + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                                break;
                            case DataGridViewContentAlignment.MiddleCenter:
                                worksheet.Columns[iCol + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                                break;
                            case DataGridViewContentAlignment.MiddleRight:
                                worksheet.Columns[iCol + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                                break;
                            default:
                                worksheet.Columns[iCol + 1].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                                break;
                        }

                        // ヘッダーの文字位置をセットする
                        switch (dataGridView1.Columns[iCol].HeaderCell.Style.Alignment)
                        {
                            case DataGridViewContentAlignment.MiddleLeft:
                                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                                break;
                            case DataGridViewContentAlignment.MiddleCenter:
                                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                                range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; ;

                                break;
                            case DataGridViewContentAlignment.MiddleRight:
                                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
                                break;
                            default:
                                range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                                range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; ;
                                break;
                        }

                        // Excelにデータをセット
                        range.Value2 = sCell;
                    }
                    finally
                    {
                        if (range != null)
                        {
                            {
                                // range解放
                                Marshal.ReleaseComObject(range);
                                range = null;
                            }

                        }
                    }

                }

                // 追加行を除く行数を求める
                int maxRowsCount = dataGridView1.Rows.Count;
                if (dataGridView1.AllowUserToAddRows)
                {
                    // 追加行が含まれているので、そのカウントを除く
                    maxRowsCount = maxRowsCount - 1;
                }

                // データ出力
                // 行ループ
                for (int iRow = 0; iRow < maxRowsCount; iRow++)
                {
                    // 列ループ
                    for (int iCol = 0; iCol < dataGridView1.Columns.Count; iCol++)
                    {
                        // セルの値を取得する
                        String sCell = dataGridView1[iCol, iRow].Value.ToString();

                        //  Excelオブジェクト初期化(セル)
                        Excel.Range range = null;
                        try
                        {
                            // ワーク文字列にセルの値を追加する
                            range = worksheet.Cells[iRow + 2, iCol + 1];

                            // Boolean型の場合、Trueは■、Falseは□で出力する
                            string valueType = dataGridView1[iCol, iRow].ValueType.ToString();
                            if (valueType.Equals("System.Boolean"))
                            {
                                if (sCell.Equals("True"))
                                {
                                    sCell = "■";
                                }
                                else
                                {
                                    sCell = "□";
                                }
                            }
                            // Excelにデータをセット
                            range.Value2 = sCell;
                        }
                        finally
                        {
                            // range解放
                            Marshal.ReleaseComObject(range);
                            range = null;
                        }
                    }
                }

                // 範囲指定で罫線設定
                range1 = worksheet.Cells[1, 1];
                range2 = worksheet.Cells[maxRowsCount + 1, dataGridView1.Columns.Count];
                range3 = worksheet.get_Range(range1, range2);
                range3.Borders.LineStyle = true;

                //excelファイルの保存
                workbook.SaveAs(FILE_PATH);
                workbook.Close(false);

                msg = "EXCELファイルの出力が完了しました。";
                MessageBox.Show(msg, "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                // EXCELファイルの出力失敗
                MessageBox.Show(ex.Message);
            }
            finally
            {
                // range1解放
                if (range1 != null)
                {
                    Marshal.ReleaseComObject(range1);
                    range1 = null;
                }

                // range2解放
                if (range2 != null)
                {
                    Marshal.ReleaseComObject(range2);
                    range2 = null;
                }

                // range3解放
                if (range3 != null)
                {
                    Marshal.ReleaseComObject(range3);
                    range3 = null;
                }

                // worksheet 解放
                if (worksheet != null)
                {
                    Marshal.ReleaseComObject(worksheet);
                    worksheet = null;
                }

                // sheets 解放
                if (sheets != null)
                {
                    Marshal.ReleaseComObject(sheets);
                    sheets = null;
                }

                // workbook 解放
                if (workbook != null)
                {
                    Marshal.ReleaseComObject(workbook);
                    workbook = null;
                }

                // workbooks 解放
                if (workbooks != null)
                {
                    Marshal.ReleaseComObject(workbooks);
                    workbooks = null;
                }

                // applicationの終了前にガベージ コレクトを強制する
                GC.Collect();

                if (workbooks != null)
                {
                    // application終了と解放
                    application.Quit();
                    Marshal.ReleaseComObject(application);
                    application = null;
                }

                // 最後に再度ガベージ コレクトを強制する。
                GC.Collect();
            }
        }

        // □□□□□□□□□□□□□□□□□
        // □ 今回のサンプル --->
        // □□□□□□□□□□□□□□□□□

        /// <summary>
        /// EXCEL読込処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button3_Click(object sender, EventArgs e)
        {
            // 読込先
            string FILE_PATH = @"d:\" + dataGridView1.Tag + ".xlsx";


            // DataTableを作成する
            DataTable dt = createDataTable();

            // メッセージ文字列
            string msg = "";

            // 読込力ファイルが開いているかのチェック
            if (fileOpenCheck(FILE_PATH) == false)
            {
                msg = "EXCELファイルを閉じてから読込を行って下さい。";
                MessageBox.Show(msg, "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }

            // 確認「はい」でなければ処理を抜ける
            msg = "EXCELファイルを読込します。" + "\n" + "宜しいですか?";
            DialogResult result = MessageBox.Show(msg, "確認", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (result != DialogResult.Yes)
            {
                return;
            }

            // Excelアプリケーション初期化
            Excel.Application application = null;

            // Excelオブジェクト初期化
            Excel.Workbooks workbooks = null;
            Excel.Workbook workbook = null;
            Excel.Sheets sheets = null;
            Excel.Worksheet worksheet = null;
            Excel.Range range1 = null;
            Excel.Range range2 = null;

            // 読込データ格納配列初期化
            object[,] excelData = null;
            try
            {
                // Excelアプリケーション作成する
                application = new Excel.Application();

                // ワークブックを作成する
                workbooks = application.Workbooks;
                workbook = workbooks.Open(FILE_PATH);

                // 先頭シート(左からの順)を選択する
                sheets = workbook.Sheets;
                worksheet = sheets[1];
                worksheet.Select(Type.Missing);

                // applicationを非表示にする
                application.Visible = false;

                // 確認メッセージを非表示にする
                application.DisplayAlerts = false;

                // 最終行を取得する
                int maxRow = worksheet.UsedRange.Rows.Count;

                // 範囲指定の始点
                range1 = worksheet.Cells[1, 1];

                // 範囲指定の終点
                range2 = worksheet.Cells[maxRow, dataGridView1.Columns.Count];

                // 取得データを格納する配列
                excelData = new object[maxRow, dataGridView1.Columns.Count];

                // 範囲指定でデータを取得する
                excelData = worksheet.get_Range(range1, range2).Value;

                // workbook 閉じる
                workbook.Close(false);
            }
            catch (Exception ex)
            {
                // EXCELファイルの読込失敗
                MessageBox.Show(ex.Message);
            }
            finally
            {
                // range1解放
                if (range1 != null)
                {
                    Marshal.ReleaseComObject(range1);
                    range1 = null;
                }

                // range2解放
                if (range2 != null)
                {
                    Marshal.ReleaseComObject(range2);
                    range2 = null;
                }

                // worksheet 解放
                if (worksheet != null)
                {
                    Marshal.ReleaseComObject(worksheet);
                    worksheet = null;
                }

                // sheets 解放
                if (sheets != null)
                {
                    Marshal.ReleaseComObject(sheets);
                    sheets = null;
                }

                // workbook 解放
                if (workbook != null)
                {
                    Marshal.ReleaseComObject(workbook);
                    workbook = null;
                }

                // workbooks 解放
                if (workbooks != null)
                {
                    Marshal.ReleaseComObject(workbooks);
                    workbooks = null;
                }

                // applicationの終了前にガベージ コレクトを強制する
                GC.Collect();

                if (workbooks != null)
                {
                    // application終了と解放
                    application.Quit();
                    Marshal.ReleaseComObject(application);
                    application = null;
                }

                // 最後に再度ガベージ コレクトを強制する。
                GC.Collect();
            }
            try
                {
                    // 取得データを一覧に格納する
                    // 行ループ
                    for (int i = 1; i < excelData.GetLength(1); i++)
                {
                    if (i == 1)
                    {
                        // 1行目を無視する(ヘッダー) 
                    }
                    else
                    {
                        // 行データを格納する配列
                        object[] rowData = new object[dataGridView1.Columns.Count];

                        // 列ループ
                        for (int j = 1; j < dataGridView1.Columns.Count + 1; j++)
                        {
                            // セルのデータを行データに格納する
                            switch ((BookItem)j)
                            {
                                case BookItem.STOCK:    // 在庫の場合
                                    // ■、□をtrue、falseにする
                                    if (excelData[i, j].Equals("■"))
                                    {
                                        rowData[j - 1] = true;
                                    }
                                    else
                                    {
                                        rowData[j - 1] = false;
                                    }
                                    break;

                                default:
                                    rowData[j - 1] = excelData[i, j];
                                    break;
                            }

                        }

                        // DataTableに行のデータを追加する
                        dt.Rows.Add(rowData);
                    }
                }

                // 一覧を表示する
                dataGridViewDisp(dt);

                msg = "EXCELファイルの読込が完了しました。";
                MessageBox.Show(msg, "情報", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                // EXCELファイルの読込失敗
                MessageBox.Show(ex.Message);
            }
        }

        // □□□□□□□□□□□□□□□□□
        // □ <--- 今回のサンプル
        // □□□□□□□□□□□□□□□□□

        /// <summary>
        /// DataTable作成処理
        /// </summary>
        /// <returns></returns>
        private DataTable createDataTable()
        {

            // DataTableを宣言する
            DataTable dt = new DataTable();

            // 列を作成する          
            dt.Columns.Add("no", typeof(int));                      // No
            dt.Columns.Add("title", typeof(String));                // 書名
            dt.Columns.Add("author_name", typeof(String));          // 著者名
            dt.Columns.Add("price", typeof(Decimal));               // 価格
            dt.Columns.Add("publisher", typeof(String));            // 出版社名
            dt.Columns.Add("publication_date", typeof(DateTime));   // 出版年月
            dt.Columns.Add("stock", typeof(bool));                  // 在庫

            // DataTableを返す
            return dt;
        }

        /// <summary>
        /// データ(DataTable)作成処理
        /// </summary>
        /// <returns>データ</returns>
        private DataTable createData()
        {

            // DataTableを宣言する
            DataTable dt = new DataTable();

            // 列を作成する          
            dt.Columns.Add("no", typeof(int));                      // No
            dt.Columns.Add("title", typeof(String));                // 書名
            dt.Columns.Add("author_name", typeof(String));          // 著者名
            dt.Columns.Add("price", typeof(Decimal));               // 価格
            dt.Columns.Add("publisher", typeof(String));            // 出版社名
            dt.Columns.Add("publication_date", typeof(DateTime));   // 出版年月日
            dt.Columns.Add("stock", typeof(bool));                  // 在庫

            // データを追加する
            dt.Rows.Add(1, "がんばれるC# 入門", "坂本 学", 2980, "ABC出版", "2018/01/01", true);
            dt.Rows.Add(2, "パーフェクトC#", "高橋 健一", 4200, "海上出版  ", "2019/03/03", false);
            dt.Rows.Add(3, "学ぶC#", "工藤 太郎", 1600, "電気出版  ", "2020/08/04", true);
            dt.Rows.Add(4, "初めてのC#", "渡辺 銀時", 2000, "川上出版  ", "2020/10/06", false);
            dt.Rows.Add(5, "どんどん学べるC#", "沢田 剛", 3200, "心の友出版", "2020/11/11", true);

            // DataTableを返す
            return dt;
        }

        /// <summary>
        /// 一覧表示処理
        /// </summary>
        /// <param name="dt"></param>
        private void dataGridViewDisp(DataTable dt)
        {
            // データ行の高さを設定する
            dataGridView1.RowTemplate.Height = 30;

            // データの余白を左上右下5pxに設定する
            //dataGridView1.RowTemplate.DefaultCellStyle.Padding = new Padding(5, 5, 5, 5);

            // データの余白を左上右下5pxに設定する
            dataGridView1.RowTemplate.DefaultCellStyle.Padding = new Padding(5);

            // dataGridViewにデータをセットする
            dataGridView1.DataSource = dt;

            // ヘッダーのタイトルを設定する(列名指定)
            dataGridView1.Columns["no"].HeaderText = "No";
            dataGridView1.Columns["title"].HeaderText = "書名";
            dataGridView1.Columns["author_name"].HeaderText = "著者名";
            dataGridView1.Columns["price"].HeaderText = "価格";
            dataGridView1.Columns["publisher"].HeaderText = "出版社名";
            dataGridView1.Columns["publication_date"].HeaderText = "出版年月日";
            dataGridView1.Columns["stock"].HeaderText = "在庫";

            // Visualスタイルを使用しない
            dataGridView1.EnableHeadersVisualStyles = false;

            // 列ヘッダの背景色を設定する
            dataGridView1.ColumnHeadersDefaultCellStyle.BackColor = Color.Blue;

            // 列ヘッダの文字色を設定する
            dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor = Color.White;

            // 行ヘッダーを非表示にする
            dataGridView1.RowHeadersVisible = false;

            // 列ヘッダーを表示する
            dataGridView1.ColumnHeadersVisible = true;

            // 列ヘッダーの高さを調整不可に設定する
            dataGridView1.ColumnHeadersHeightSizeMode =
                DataGridViewColumnHeadersHeightSizeMode.DisableResizing;

            // 行ヘッダーの幅を調整不可に設定する
            dataGridView1.RowHeadersWidthSizeMode =
                DataGridViewRowHeadersWidthSizeMode.DisableResizing;

            // 列ヘッダーの高さを設定する
            dataGridView1.ColumnHeadersHeight = 30;

            // no の配置を上下左右の中央に設定する
            dataGridView1.Columns["no"].HeaderCell.Style.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // title の配置を上下左右の中央に設定する
            dataGridView1.Columns["title"].HeaderCell.Style.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // author_name の配置を上下左右の中央に設定する
            dataGridView1.Columns["author_name"].HeaderCell.Style.Alignment =
               DataGridViewContentAlignment.MiddleCenter;

            // price の配置を上下左右の中央に設定する
            dataGridView1.Columns["price"].HeaderCell.Style.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // publisher の配置を上下左右の中央に設定する
            dataGridView1.Columns["publisher"].HeaderCell.Style.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // publication_date の上下左右の中央に設定する
            dataGridView1.Columns["publication_date"].HeaderCell.Style.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // stock の配置を上下左右の中央に設定する
            dataGridView1.Columns["stock"].HeaderCell.Style.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // ユーザが行追加を不可に設定する
            dataGridView1.AllowUserToAddRows = false;

            // ユーザが行削除を不可に設定する
            dataGridView1.AllowUserToDeleteRows = false;

            // 複数セルの選択を不可に設定する
            dataGridView1.MultiSelect = false;

            // 行単位に選択モードを設定する
            dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;

            // ユーザが列の幅を変更不可に設定する
            dataGridView1.AllowUserToResizeColumns = true;

            // ユーザが行の高さを変更可に設定する
            dataGridView1.AllowUserToResizeRows = false;

            // セルの入力を不可に設定する
            dataGridView1.ReadOnly = true;

            //  No(no) を右寄せに設定する
            dataGridView1.Columns["no"].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleRight;

            // 書名(title) を左寄せに設定する
            dataGridView1.Columns["title"].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleLeft;

            // 著者名(author_name)  を左寄せに設定する
            dataGridView1.Columns["author_name"].DefaultCellStyle.Alignment =
               DataGridViewContentAlignment.MiddleLeft;

            // 価格(price) を右寄せに設定する
            dataGridView1.Columns["price"].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleRight;

            // カンマ表示(3けた単位)
            dataGridView1.Columns["price"].DefaultCellStyle.Format = "#,0";

            // 出版社名(publisher) を左寄せに設定する
            dataGridView1.Columns["publisher"].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleLeft;

            // 出版年月日(publication_date)  を中央に設定する
            dataGridView1.Columns["publication_date"].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // 在庫(stock)を中央に設定する
            dataGridView1.Columns["stock"].DefaultCellStyle.Alignment =
                DataGridViewContentAlignment.MiddleCenter;

            // 列幅を設定する(列名指定)
            dataGridView1.Columns["no"].Width = 40;
            dataGridView1.Columns["title"].Width = 250;
            dataGridView1.Columns["author_name"].Width = 100;
            dataGridView1.Columns["price"].Width = 70;
            dataGridView1.Columns["publisher"].Width = 150;
            dataGridView1.Columns["publication_date"].Width = 90;
            dataGridView1.Columns["stock"].Width = 50;

            // 選択を解除する
            dataGridView1.ClearSelection();
        }

        /// <summary>
        /// EXCELファイルが開かれていないかチェックする
        /// </summary>
        /// <param name="filePath"></param>
        /// <returns></returns>
        static bool fileOpenCheck(string filePath)
        {
            // ファイルの存在チェック
            if (System.IO.File.Exists(filePath) == false)
            {
                // 存在しないので大丈夫
                return true;
            }

            try
            {
                // 書き込みモードで開けるか開いてみる
                using (FileStream fp = File.Open(filePath, FileMode.Open, FileAccess.Write)) { }
            }
            catch
            {
                // 出力先のファイルが開かれていて上書きできない
                return false;
            }
            // 開けた
            return true;
        }

        /// <summary>
        /// 起動時処理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            // データを作成する
            dataGridView1.Tag = "書籍在庫一覧";

            // データを作成する
            DataTable dt = createData();

            // 一覧を表示する
            dataGridViewDisp(dt);

        }
    }
}

実行結果

実行するとサンプルデータが表示されます。

「EXCEL出力」をクリックします。

確認メッセージが表示されますので「はい」をクリックします。

EXCEL出力完了メッセージが表示されます。

「OK」をクリックします。D:\書籍在庫一覧.xlsx が出力されます。

「クリア」をクリックします。一覧がクリアされます。

「EXCEL読込」をクリックします。

確認メッセージが表示されますので「はい」をクリックします。

EXCEL読込完了メッセージが表示されます。

「OK」をクリックします。D:\書籍在庫一覧.xlsx から詠み込まれたデータが一覧に表示されます。

以上です。

コメント

タイトルとURLをコピーしました