C#でExcelのセルの書式を変更する
C#でExcelのセルの文字色や背景色および罫線を変更してみます。
目次
シナリオ
セルの範囲を指定した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
公開日
広告