SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

「WebでExcelを編集したい」技術系掲示板でよく見かける質問をSPREAD for ASP.NET 5.0Jで解決する

  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード サンプルソース (68.9 KB)

SPREAD for ASP.NETを使うための前準備

 SPREAD for ASP.NETは、ツールボックスからWebフォームにドラッグ&ドロップして使用します。そのためには、SPREAD for ASP.NETをツールボックスに登録しなければなりません。

 登録は、ツールボックスを右クリックして[アイテムの選択]メニューを選択すると表示されるダイアログボックスで行います。

図4 ツールボックス アイテムの選択
図4 ツールボックス アイテムの選択

 図4では、3つのコンポーネントを選択していますが、今回使用するのは赤枠で囲んだ「FpSpread」です。ツールボックスに「FpSpread」が追加されたら、Default.aspxにドラッグ&ドロップします。これで「FarPoint.Web.SpreadJ.dll」への参照設定やライセンスファイルの生成などが行われます。

 今回はExcelを取り扱うので、プロジェクトのプロパティで「FarPoint.Excel.dll」の参照設定を手動で追加します。

ファイル一覧画面を作成する

SPREADの設定を最小限にして作成する

 SPREADをWebフォームに配置し、リスト1のコードを記述します。

リスト1 SPREADの設定を最小限にしたコード
Protected Sub Page_Load(ByVal sender As Object,
                        ByVal e As System.EventArgs) _
                    Handles Me.Load
    If Not Me.IsPostBack Then
        Me.List_FpSpread.Sheets(0).OperationMode = FarPoint.Web.Spread.OperationMode.ReadOnly
        Call GetFileList()
    End If
End Sub

Private Function GetFileList() As Boolean
    Dim isOK As Boolean = False
    Using _proc As New CZ1010FileList
        Dim filePath As String = System.IO.Path.Combine(My.Request.PhysicalApplicationPath,
                                                        "App_Data")
        Me.List_FpSpread.DataSource = _proc.GetFileList(filePath).Tables("FileName")
        Me.List_FpSpread.DataBind()
        isOK = True
    End Using
    Return isOK
End Function

 ASP.NETは、表示しているページで何か操作を行った場合、PostBackというモードでPage_Loadイベントが発生します。PostBackでは画面上の情報が維持されるので、画面の初期表示を行いたい場合は、Not Me.IsPostBackのときに処理を行います。

 リスト1では、Not Me.IsPostBackのときにGetFileListを呼び出し、登録されているExcelファイルの一覧を設定しています。

 Excelファイルの一覧を作成しているのは、GetFileListで使っているCZ1010FileListクラスです。このクラスは、指定されたフォルダにある拡張子が「.xlsx」のファイルの一覧をデータセットとして返却するためのクラスで、GetFileListでは返却されたデータセットをSPREADのDataSourceに設定しています。

 これだけのコードしか記述していませんが、プログラムを実行してみると、ちゃんとファイル一覧がSPRAEDに表示されます。

図5 SPREADで簡単に表示した例
図5 SPREADで簡単に表示した例

操作性を考えてSPREADをデザインする

 図5は“ファイル一覧を表示する”という目的は果たしていますが、“ファイルを選択して編集する”という操作を行うには不向きなデザインです。そこで、SPREAD搭載のGUIデザイナ「SPREADデザイナ」を使って、[編集]ボタンと[取得]ボタンを持ったデザインを作成し、同時に1行ごとに交互に背景色を変更して見やすくしてみましょう。

図6 SPREADデザイナ
図6 SPREADデザイナ

 1列目の「ファイル名」列にはデータセットの「ファイル名」カラムの内容を表示するので、DataFieldプロパティに「ファイル名」と設定したかったのですがSPREADデザイナでは型付データセットから該当カラム名を選択する方法のみをサポートしているため、実行時にDataFieldプロパティは設定することにします。

リスト2 SPREADデザイナの設定内容を生かしたコード
Protected Sub Page_Load(ByVal sender As Object,
                        ByVal e As System.EventArgs) _
                    Handles Me.Load
    If Not Me.IsPostBack Then
        Me.List_FpSpread.Sheets(0).AutoGenerateColumns = False
        Me.List_FpSpread.Sheets(0).OperationMode = FarPoint.Web.Spread.OperationMode.ReadOnly
        Me.List_FpSpread.Sheets(0).Columns(0).DataField = "ファイル名"
        '

        Call GetFileList()
    End If
End Sub

 GetFileListの内容は、リスト1から変更していないので省略していますが、リスト2がリスト1と大きく違うのは、AutoGenerateColumnsプロパティの設定部分です。AutoGenerateColumnsが「True」の場合、事前にデザインした内容が破棄され、DataSourceに割り当てたデータセットの内容に応じて自動的にカラムが生成されてしまうので、「False」に設定しています。また、Columns(0)のDataFieldも設定しています。

図7 SPREADデザイナの設定内容を生かした例
図7 SPREADデザイナの設定内容を生かした例

次のページ
Excel編集画面を作成する

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(SPREAD)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5535 2010/10/29 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング