CodeZine(コードジン)

特集ページ一覧

特定の用途に絞りこんだ計算ソフトの作成

SPREAD for .NET 2.5J Windows Forms Editionによる表計算機能の実装

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2007/02/22 00:00
目次

ファイル保存の処理

 簡単ですが、基本的な機能は組み込んだので、次に入力データをファイルに保存する処理を実装します。この処理はとても簡単で、メソッドを実行するだけです。ボタンコントロールを配置し、このクリックイベントハンドラに次のコードを入力します。

FpSpread1.SaveExcel("C:\myspread.xls", _
    FarPoint.Win.Spread.Model.IncludeHeaders.BothCustomOnly)

 FpSpreadコンポーネントでは、コンポーネントへの入力データを次の3つの形式でファイルに保存できます。

  • Spread XMLファイル、またはストリーム
  • Excel 形式ファイル(ワークブック全体または特定のシート)
  • ASCIIテキストファイル(ファイル全体またはセル範囲)

 それぞれ、FpSpreadクラスのメソッドを利用して保存しますが、今回はExcelのブックと互換性のある形式で保存することにします。

 これには、SaveExcelメソッドを使用します。引数は2つで、保存するファイル名と保存する際にデータと共にヘッダを保存するかどうかを、IncludeHeaders列挙型のメンバで指定します。

IncludeHeaders列挙型のメンバ
メンバ 説明
None 列ヘッダも行ヘッダも含めません。
ColumnHeadersCustomOnly 列ヘッダのカスタムヘッダのみを含めます。
RowHeadersCustomOnly 行ヘッダのカスタムヘッダのみを含めます。
BothCustomOnly 列ヘッダと行ヘッダのカスタムヘッダのみを含めます。
保存したデータファイルをExcelで開くと...
保存したデータファイルをExcelで開くと...

シートをもう1枚追加する処理

 では、同じシートをもう1枚追加する処理を、今度はコードから行ってみます。シートの作成は、SheetViewオブジェクトを作成してSheetViewCollectionコレクションに追加する、という手順で行います。

 コレクションに追加する前にシートの設定を行います。以降、デザイナで行った内容をコードから行ってみます。

  1. シートの作成
  2. シート名と行列数の設定
  3. 行列見出しの変更
  4. スキンの設定
  5. SUM関数の組み込み
  6. セルのコピー&ペースト

シートの作成

 新しいシートは、SheetViewクラスのコンストラクタで作成します。引数はありませんが、コンストラクタが返すインスタンスへの参照を変数で受け取っておきます。

Dim newsheet As New FarPoint.Win.Spread.SheetView()

 後は、この変数名で各種設定を変更します。

シート名と行列数の設定

 シート名はSheetNameプロパティで、行列数はそれぞれRowCountColumnCountプロパティの値で指定します。

With newsheet
    .SheetName = "Sheet" & i
    .RowCount = 11
    .ColumnCount = 5

行列見出しの変更

 行見出しの変更は、Columnsプロパティの引数に列番号を指定し、Labelプロパティの値を変更します。列番号は0から始まりますから注意してください。

.Columns(0).Label = "山田"
.Columns(1).Label = "鈴木"
.Columns(2).Label = "田中"
.Columns(3).Label = "斉藤"
.Columns(4).Label = "渡辺"

 行番号は、Rowsプロパティの引数に行番号を指定し、Labelプロパティの値を変更します。列番号と同様に行番号も0から始まりますので注意してください。

.Rows(10).Label = "合計"

スキンの設定

 スキンは、Sheet1に設定したものをそのまま適用します。スキンはSheetSkinオブジェクトになっているので、FpSpread1_Sheet1オブジェクトのActiveSkinプロパティから取得し、新しいシートのActiveSkinプロパティに設定します。

Dim sk As FarPoint.Win.Spread.SheetSkin = _
    Me.FpSpread1_Sheet1.ActiveSkin
.ActiveSkin = sk

SUM関数の組み込み

 SUM関数の組み込みは、Cellsプロパティで組み込むセルを指定し、Formulaプロパティに文字列で式を設定します。

.Cells(10, 0).Formula = "SUM(A1:A10)"

 Cellsプロパティの引数には行列番号を指定しますが、いずれも0番から始まりますので注意してください。

セルのコピーペースト

 SUM関数の式を設定したら、このセルを他の人の合計用セルにコピー&ペーストします。

 しかし、このコピー・ペーストはクリップボードを経由して行うようになっており、このクリップボード処理も[アクティブなシートのアクティブなセル]という指定でないとできないようになっているので、少し工夫が必要になります。クリップボードの処理は、.NET FrameWorkクラスライブラリのClipBoardクラスの各機能を使用します。

 まず、FpSpread1クラスのActiveSheetプロパティに追加したシートを設定し、このシートをアクティブにします。次に、アクティブシートのSetActiveCellメソッドで、コピー元のセルを指定します。

With Me.FpSpread1
    .ActiveSheet = newsheet
    .ActiveSheet.SetActiveCell(10, 0)

 そして、ClipboardCopyメソッドを実行し、クリップボードにコピーします。

.ActiveSheet.ClipboardCopy()

 今度は、コピー先のセルをアクティブにします。

.ActiveSheet.SetActiveCell(10, 1)

 そして、クリップボードの中身をペーストします。

.ActiveSheet.ClipboardPaste()

 同じように、他のセルにもクリップボードの中身をペーストします。

.ActiveSheet.SetActiveCell(10, 2)
.ActiveSheet.ClipboardPaste()
.ActiveSheet.SetActiveCell(10, 3)
.ActiveSheet.ClipboardPaste()
.ActiveSheet.SetActiveCell(10, 4)
.ActiveSheet.ClipboardPaste()

 これで、ボタン[シートの追加]を押すたびに、Sheet1と同じシートが追加されていきます。

まとめ

 簡単な機能ですが、独自の表計算機能を自作のプログラムに実装してみました。まだまだ、いろいろな機能をたくさん持っているコンポーネントなので、次回以降、さまざまな機能拡張を紹介していきたいと思います。


 


  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)

もっと読む

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5