XLStyleクラスのインスタンスの作成
今回は、セルのスタイルを設定しています。XLStyleというオブジェクトを作成し、このオブジェクトのプロパティを使って文字色やセルの塗りつぶし色、罫線の設定を行い、XLStyleオブジェクトをセルに適用するという方法です。セルのスタイルはセル単位で設定し、列幅の設定は列単位で行うようにします。これらの処理は、データ転送のClickイベントハンドラの中で行い、データの書き出しを行うコードの前に記述します。
データを取り出す処理
作成するスタイルは2つで、各列ごとに文字色と背景色を変えます。
まず、XLStyleクラスのコンストラクタを使って、インスタンスを作成します。引数は、スタイルを設定するC1XLBookオブジェクトです。そして、XLStyleクラスのプロパティを使用してセルのスタイルを設定します。
罫線を設定する場合は、SetBorderStyleメソッドを使用すると、一括して罫線を設定できます。引数には、罫線の線種を表すXLLineStyleEnum列挙体のメンバを指定します。罫線の色はSetBorderColorメソッドで設定します。引数は罫線の色を表すColorクラスのメンバです。
ここでは、セルの塗りつぶしと文字色が違う2種類のXLStyleオブジェクトを作成します。
'セルのスタイルと罫線の設定 Dim style1 As New XLStyle(C1XLBook1) style1.ForeColor = Color.Yellow style1.BackColor = Color.Blue style1.SetBorderStyle(XLLineStyleEnum.Thin) style1.SetBorderColor(Color.Cyan) Dim style2 As New XLStyle(C1XLBook1) style2.ForeColor = Color.Black style2.BackColor = Color.LightSalmon style2.SetBorderStyle(XLLineStyleEnum.Thin) style2.SetBorderColor(Color.Cyan)
//セルのスタイルと罫線の設定 XLStyle style1 = new XLStyle(c1XLBook1); style1.ForeColor = Color.Yellow; style1.BackColor = Color.Blue; style1.SetBorderStyle(XLLineStyleEnum.Thin); style1.SetBorderColor(Color.Cyan); XLStyle style2 = new XLStyle(c1XLBook1); style2.ForeColor = Color.Black; style2.BackColor = Color.LightSalmon; style2.SetBorderStyle(XLLineStyleEnum.Thin); style2.SetBorderColor(Color.Cyan);
セルのサイズの調節とスタイルの設定
セルの列幅は、個別のセルには設定できず列単位の設定になります。XLSheetクラスのColumnsプロパティを使うと、列全体をオブジェクトとして指定でき、Widthプロパティで列幅を設定できます(単位はTwips(1/20 point)なので、数字が大きくなっています)。
セルの高さは、行単位で設定します。同じくXLSheetクラスのRowsプロパティを使うと、行全体をオブジェクトとして指定でき、Heightプロパティで高さを設定できます(同じく単位はTwips(1/20 point))。
また、作成したXLStyleオブジェクトは各セル単位で指定できます。これは、セルを行列番号で指定し、Styleプロパティに作成したXLStyleオブジェクトを設定するだけで可能です。ここでは1列目と2列目のセルに、それぞれのXLStyleオブジェクトを設定しています。
sheet1.Columns(0).Width = 1300 Dim i As Integer For i = 1 To 6 sheet1.Rows(i).Height = 400 sheet1(i, 0).Style = style1 sheet1(i, 1).Style = style2 Next
sheet1.Columns[0].Width = 1300; for(int i=1;i<=6;i++){ sheet1.Rows[i].Height = 400; sheet1[i, 0].Style = style1; sheet1[i, 1].Style = style2; }
Clickイベントハンドラのコード全文
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim wb As New C1XLBook() Dim sheet1 As XLSheet = wb.Sheets(0) 'セルのスタイルと罫線の設定 Dim style1 As New XLStyle(C1XLBook1) style1.ForeColor = Color.Yellow style1.BackColor = Color.Blue style1.SetBorderStyle(XLLineStyleEnum.Thin) style1.SetBorderColor(Color.Cyan) Dim style2 As New XLStyle(C1XLBook1) style2.ForeColor = Color.Black style2.BackColor = Color.LightSalmon style2.SetBorderStyle(XLLineStyleEnum.Thin) style2.SetBorderColor(Color.Cyan) sheet1.Columns(0).Width = 1300 Dim i As Integer For i = 1 To 6 sheet1.Rows(i).Height = 400 sheet1(i, 0).Style = style1 sheet1(i, 1).Style = style2 Next 'データの書き出し sheet1(0, 0).Value = "品名" sheet1(0, 1).Value = "数量" sheet1(1, 0).Value = Label3.Text sheet1(2, 0).Value = Label4.Text sheet1(3, 0).Value = Label5.Text sheet1(4, 0).Value = Label6.Text sheet1(5, 0).Value = Label7.Text sheet1(6, 0).Value = Label8.Text sheet1(1, 1).Value = CInt(TextBox1.Text) sheet1(2, 1).Value = CInt(TextBox2.Text) sheet1(3, 1).Value = CInt(TextBox3.Text) sheet1(4, 1).Value = CInt(TextBox4.Text) sheet1(5, 1).Value = CInt(TextBox5.Text) sheet1(6, 1).Value = CInt(TextBox6.Text) 'ブックの保存とExcelの起動 wb.Save("c:\data\グリッドデータ.xls") System.Diagnostics.Process.Start("c:\data\グリッドデータ.xls") End Sub End Class
private void button1_Click(object sender, EventArgs e) { C1XLBook wb = new C1XLBook(); XLSheet sheet1 = wb.Sheets["Sheet1"]; //セルのスタイルと罫線の設定 XLStyle style1 = new XLStyle(c1XLBook1); style1.ForeColor = Color.Yellow; style1.BackColor = Color.Blue; style1.SetBorderStyle(XLLineStyleEnum.Thin); style1.SetBorderColor(Color.Cyan); XLStyle style2 = new XLStyle(c1XLBook1); style2.ForeColor = Color.Black; style2.BackColor = Color.LightSalmon; style2.SetBorderStyle(XLLineStyleEnum.Thin); style2.SetBorderColor(Color.Cyan); sheet1.Columns[0].Width = 1300; for(int i=1;i<=6;i++){ sheet1.Rows[i].Height = 400; sheet1[i, 0].Style = style1; sheet1[i, 1].Style = style2; } //データの書き出し sheet1[0, 0].Value = "品名"; sheet1[0, 1].Value = "数量"; sheet1[1, 0].Value = label3.Text; sheet1[2, 0].Value = label4.Text; sheet1[3, 0].Value = label5.Text; sheet1[4, 0].Value = label6.Text; sheet1[5, 0].Value = label7.Text; sheet1[6, 0].Value = label8.Text; sheet1[1, 1].Value = int.Parse(textBox1.Text); sheet1[2, 1].Value = int.Parse(textBox2.Text); sheet1[3, 1].Value = int.Parse(textBox3.Text); sheet1[4, 1].Value = int.Parse(textBox4.Text); sheet1[5, 1].Value = int.Parse(textBox5.Text); sheet1[6, 1].Value = int.Parse(textBox6.Text); //ブックの保存とExcelの起動 wb.Save("c:/data/グリッドデータ.xls"); System.Diagnostics.Process.Start("c:/data/グリッドデータ.xls"); } } }
まとめ
C1XLBookコンポーネントでは、ただ単にデータをExcel形式で保存できるだけでなく、セルの書式設定や罫線の作成までもプログラム側で行うことができます。
計測プログラムや独自のデータ入力アプリケーションを作成する場合、データをファイルに保存するのはかなり手間のかかる作業です。また、データファイルを市販のアプリケーションと互換性を持たせようとすると、CSV形式など見づらいデータ形式になってしまいます。Excel形式でデータを保存できれば、Excelで読み書きできるようになるのはもちろんのこと、他のOfficeアプリケーションでAccessなどのデータベースファイルでも使えるデータファイルになります。