GUIの作成
入力画面は、すべてVisual Studioの標準コントロールの、リストボックス、ラベル、テキストボックス、ボタンで組み立てています。
C1XLBookコンポーネントは、ユーザーとのインターフェースは持たず、プロセスだけを提供するコンポーネントなので、フォームの外に配置されます。
C1XLBookコンポーネントについて
C1XLBookコンポーネントは、Excelのブック形式のファイルを読み書きできるコンポーネントです。ファイルの読み書きには、Excel 8.0(Excel97)以降で採用されているBIFF8形式を利用しています。
ファイルの書き出しでは、Excelで開くことができる、ファイルの拡張子が「xls」のファイルを作成できます。また、ファイルの読み込みでは、複数のワークシートで構成されるxlsファイルにある、すべてのセルの内容と書式をそのままロードできるようになっています。ただし、セルの罫線やセルに設定された数式を読み込んだり、グラフなどの画像ファイルを読み書きすることができません。
C1XLBookコンポーネント(C1XLBookオブジェクト)は、1つのオブジェクトで1つのブックを表します。ブックには、複数のシート(XLSheetオブジェクト)で構成され、各シート内にはセル(XLCellオブジェクト)があります。
また、セルにはValue プロパティとStyleプロパティがあり、Valueプロパティはセルの値を格納し、StyleプロパティはXLStyleオブジェクトを使ってセルの書式を設定します。ブック形式での保存や読み込みは、C1XLBookオブジェクトのメソッドを使用して行います。
列見出しの作成
では、フォームに入力されたデータをExcelのブック形式(xlsファイル)で書き出す処理を作成します。
表の内容
入力データは、「品名」「数量」「単価」「合計」で、合計以外はユーザーからの入力を受け付け、合計は計算で導き出すようにします。データは下図のような表にします。見てわかるように、ブックには1枚のシートが追加され、行方向に入力データが追加されていきます。
列見出しは、フォントのスタイルを太字にし、文字色を青色にします。そして、A列から順番に「品名」「数量」「単価」「合計」を入力します。
列見出しの入力
フォームのLoadイベントハンドラで、列見出しを作成する処理を実行します。
まず、ブックにワークシートを1枚追加します。これは、C1XLBookオブジェクトのSheetsプロパティを使ってXLSheetsコレクション内のXLSheetオブジェクトを1つ、オブジェクト変数に格納します。
このワークシートは、C1XLBookを新規作成したときに自動的に作成されます。
Imports C1.C1Excel Public Class Form1 Dim sheet As XLSheet Dim rowpos As Integer = 0 Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles MyBase.Load sheet = Me.C1XLBook1.Sheets(0)
using C1.C1Excel; namespace xlsapp_cs { public partial class Form1 : Form { XLSheet sheet; int rowpos = 0; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { sheet = c1XLBook1.Sheets[0];
次に、セルに列見出しの文字列を代入します。セルを操作する場合は、XlSheetオブジェクトのインデクサ(引数のようなもの)で、セルの行列番号を指定すると、その位置のXLCellオブジェクトを返してきます。番号は、ワークシートの先頭行(1行目)が0、先頭列(A列)が0から始まります。
最初は、セルA1と同じ位置のXLCellオブジェクトへの参照を作成し、その値に「品名」という文字を代入します。
Dim cell As XLCell = sheet(rowpos, 0) cell.Value = "品名"
XLCell cell = sheet[rowpos, 0];
cell.Value = "品名";
同じように、lSheetオブジェクトのインデクサの列番号を変えて、残りのセルに列見出しの文字列を代入します。
cell = sheet(rowpos, 1) cell.Value = "数量" cell = sheet(rowpos, 2) cell.Value = "単価" cell = sheet(rowpos, 3) cell.Value = "合計"
cell = sheet[rowpos, 1]; cell.Value = "数量"; cell = sheet[rowpos, 2]; cell.Value = "単価"; cell = sheet[rowpos, 3]; cell.Value = "合計";
セルの書式設定
列見出しを代入したら、この文字の書式を変更します。といっても、使い方は簡単です。
まず、XLStyleクラスのインスタンスを作成します。そして、Fontクラスのインスタンスを作成し、フォントの属性を設定します。また、文字色はXLStyleクラスのForeColorプロパティの値を変えるだけです。ここでは、フォントを「Arial」のサイズ「10」で「Bold」になるようにし、文字色を「Blue」に設定します。
Dim styleBlue As New XLStyle(Me.C1XLBook1) styleBlue.Font = New Font("Arial", 10, FontStyle.Bold) styleBlue.ForeColor = Color.Blue
XLStyle styleBlue = new XLStyle(c1XLBook1); styleBlue.Font = new Font("Arial", 10, FontStyle.Bold); styleBlue.ForeColor = Color.Blue;
XLStyleオブジェクトが作成できたら、XLCellオブジェクトのStylleプロパティにこのXLStyleオブジェクトを設定するだけです。
なお、変数「rowpos」は、データを入力する行番号を指定する変数です。
Dim i As Integer For i = 0 To 3 sheet(0, i).Style = styleBlue Next rowpos += 1
int i ; for(i=0;i <=3; i++){ sheet[0, i].Style = styleBlue; } rowpos += 1;