C#でExcelのセルの書式を変更する

C#でExcelのセルの文字色や背景色および罫線を変更してみます。

目次

  1. シナリオ
  2. 試してみた

シナリオ

セルの範囲を指定したrangeオブジェクトを作って、それのプロパティを変更するという感じです。

試してみた

Excelを起動して、指定範囲の背景色、文字色、罫線を変更するアプリを作ってみました。試す場合は、ライブラリの参照を追加してください。また、コードを見やすくするためにCOMオブジェクトの参照カウントの解放の手続きを省略してますので、このまま使うとExcelのプロセスが残ってPCがリソース不足になる場合があります。

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;
using Microsoft.Office.Interop.Excel;

namespace excel_trial_format
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Excelを起動して、ブックを作成し、1枚目のシートを選択する。
            Microsoft.Office.Interop.Excel.Application ExcelApp = new Microsoft.Office.Interop.Excel.Application();
            ExcelApp.Visible = true;
            Microsoft.Office.Interop.Excel.Workbook ExcelWB = ExcelApp.Workbooks.Add();
            Microsoft.Office.Interop.Excel.Worksheet ExcelWS = ExcelWB.Sheets[1];
            ExcelWS.Select();

            // 書式を変更するセルの範囲を指定する。
            Microsoft.Office.Interop.Excel.Range ExcelRange = ExcelWS.Range["B2:D4"];

            // 文字を書き込む。
            ExcelRange.Value2 = "test";

            // 背景色を変更する。
            // ExcelRange.Interior.ColorIndex = 15; // カラーパレットの色を指定する場合
            ExcelRange.Interior.Color = Color.FromArgb(254, 244, 244); // 桜色

            // 文字色を変更する。
            ExcelRange.Font.Color = Color.FromArgb(215, 0, 58); // 紅色

            // 罫線を変更する。
            ExcelRange.Borders[XlBordersIndex.xlEdgeBottom].LineStyle = XlLineStyle.xlDouble;

            // クローズ。
            ExcelWB.Close();
            ExcelApp.Quit();
        }
    }
}

いろいろググってみたのですが、ネットで得られるサンプルが私の環境では動かなかったので、ちょっとコードが違います。

  • get_Rangeメソッドが使えなかったので、Rangeを使った。

  • Interior.Color、Font.Colorの色指定にrgb()関数が使えなかったので、Color.FromArgb()を使った。

  • Borders()が使えなかったので、Borders[]にした。

学校とか会社とかでまともにC#の勉強したら、こういうの理解できるのでしょうか。

セルのどの位置(上下左右)の罫線を指定するかについてはXlBordersIndex列挙体で、罫線の種類についてはXlLineStyle列挙体で指定してください。Visual Studioのインテリセンスが提示する候補を見れば、その名前からどうすれば良いか想像できると思います。

実行結果は下図の様になります。

実行結果

実施例の環境は下記です。

Visual Studio Express 2015 for Windows Desktop (C#) Excel 2013 Windows 8.1

公開日

広告