ナビゲーション リンクのスキップ
 新機能 の展開 新機能
 InputMan連携 の展開 InputMan連携
 マルチタッチ機能 の展開 マルチタッチ機能
 セル、行、列、ヘッダ の展開 セル、行、列、ヘッダ
 シート の展開 シート
 スタイル の展開 スタイル
 選択 の展開 選択
 セル型 の展開 セル型
 編集 の縮小 編集
 ソート の展開 ソート
 フィルタリング の展開 フィルタリング
 グループ化 の展開 グループ化
 ページング の展開 ページング
 スクロール の展開 スクロール
 データ連結 の展開 データ連結
 階層表示 の展開 階層表示
 コマンドバー の展開 コマンドバー
 チャート の展開 チャート
 数式 の展開 数式
 インポート/エクスポート の展開 インポート/エクスポート
 クライアント側スクリプト の展開 クライアント側スクリプト

検索

Searchメソッドにて指定したシートのデータを検索することができます。

検索時には3種類の検索オプションが提供されます。
1.検索文字列内の大文字と小文字を検索時に区別するかどうか
2.完全一致文字列だけを検索するかどうか
3.検索を行から列の順ではなく、列から行の順で実行するかどうか

また、セルのデータだけではなく、セルノートの値やTagプロパティに設定してある文字列を検索することも可能です。

このサンプルでも、検索オプションとして、上記3つ検索パターンを使用することができます。 検索対象の文字列が存在するセルは文字列が存在した場所により、背景色を変更しています。
・セルのテキスト内に存在する場合:薄ピンク
・セルノートに存在する場合:オレンジ
・セルのTagプロパティに存在する場合:緑
※Tagプロパティの設定内容はソースからご確認ください。 セルノートはA1セルにのみ設定しています。
検索条件:
 ID氏名カナ生年月日性別血液型部署入社日メールアドレス
11001亀甲 滋万キコウ シゲマ1950/02/04A人事部1972/04/01sigema_kikou@abc.co.jp
21002寒田 希世カンダ キヨ1959/06/28B人事部1981/04/01kiyo_kanda@bbb.or.jp
31003小和瀬 澄オワセ キヨ1969/03/06A人事部1991/04/01kiyo_owase@aaa.co.jp
41004宇夫 早余子ウブ サヨコ1976/07/28O人事部1998/04/01sayoko_ubu@bbb.or.jp
51005宇田津 聖智ウダツ キヨトモ1965/09/04A営業部1987/04/01kiyotomo_udatu@abc.co.jp
61006茨城 昭児イバラキ ショウジ1963/04/28O営業部1985/04/01shouzi_ibaraki@xyz.ne.jp
71007石ヶ休 椎茄イシガキュウ シイナ1953/02/21O営業部1975/04/01siina_isigagyuu@abc.co.jp
81008赤司 恵治郎アカツカサ ケイジロウ1968/08/02O経理部1990/04/01keizirou_akatukasa@abc.co.jp
91009小橋 仰一オハシ ギョウイチ1972/03/02B経理部1994/04/01gyouiti_ohasi@abc.co.jp
101010一重 公大イチジュウ コウダイ1964/04/19B経理部1986/04/01koudai_itizyuu@xyz.ne.jp
111011稲並 勝五郎イナミ ショウゴロウ1962/02/18A営業部1984/04/01shougorou_inami@bbb.or.jp
121012穎原 紀代一エイハラ キヨカズ1965/02/13O営業部1987/04/01kiyokazu_eihara@bbb.or.jp

ソースコード

別ウィンドウで表示
using System;
using System.Data;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Configuration;

public partial class search : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string js = "var spid='" + FpSpread1.ClientID + "';";
        js += "var txtid='" + txtSearch.ClientID + "';";
        ClientScript.RegisterStartupScript(this.GetType(), "onStartUpScript", js, true);

        if (IsPostBack) return;

        // データ連結
        DataSet ds = new DataSet();
        ds.ReadXml(MapPath("../App_Data/data.xml"));
        FpSpread1.DataSource = ds;
                
        // SPREAD初期化
        InitSpread(FpSpread1.Sheets[0]);
    }

    private void InitSpread(FarPoint.Web.Spread.SheetView sheet)
    {
        // SPREAD設定
        sheet.FpSpread.CommandBar.Visible = false;
        sheet.FpSpread.CssClass = "spreadStyle";
        sheet.FpSpread.UseClipboard = false;

        // フォントサイズの設定
        sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%");
        sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%");

        // シート設定
        sheet.PageSize = sheet.RowCount;

        // 列幅の設定
        sheet.Columns[0].Width = 36;
        sheet.Columns[1].Width = 88;
        sheet.Columns[2].Width = 91;
        sheet.Columns[3].Width = 80;
        sheet.Columns[4].Width = 36;
        sheet.Columns[5].Width = 46;
        sheet.Columns[6].Width = 49;
        sheet.Columns[7].Width = 71;
        sheet.Columns[8].Width = 181;

        // 縦方向の揃え位置を中央に設定
        sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle;

        // セルノート設定
        sheet.Cells[0, 0].Note = "人事異動予定";

        // タグ設定
        sheet.Cells[1,0].Tag = "退職予定";
    }

    protected void FpSpread1_ButtonCommand(object sender, FarPoint.Web.Spread.SpreadCommandEventArgs e)
    {
        // 検索
        if (e.CommandName.StartsWith("search"))
        {
            // 背景色初期化
            FpSpread1.Sheets[0].Cells[0, 0, FpSpread1.ActiveSheetView.RowCount - 1, 
                FpSpread1.ActiveSheetView.ColumnCount - 1].BackColor = System.Drawing.Color.White;

            // 検索文字列の取得
            int n = e.CommandName.IndexOf(".") + 1;
            string searchStr = e.CommandName.Substring(n);

            // 検索文字列が空白なら終了
            if (searchStr.Trim() == "") return;
            
            // 検索オプションを取得
            bool caseSensitive = ckOptions.Items[0].Selected;
            bool exactMatch = ckOptions.Items[1].Selected;
            bool useWildcards = ckOptions.Items[2].Selected;
            bool alternateSearch = false;

            // 変数を初期化
            int rowIndex = 0;
            int colIndex = 0;

            for (int startRow = 0; startRow < FpSpread1.Sheets[0].RowCount; startRow++)
            {
                for (int startColumn = 0; startColumn < FpSpread1.Sheets[0].ColumnCount; startColumn++)
                {
                    FarPoint.Web.Spread.SearchFoundFlags sff;
                    sff = FpSpread1.Search(FpSpread1.ActiveSheetViewIndex,  searchStr, caseSensitive, 
                        exactMatch, alternateSearch, useWildcards, 
                        true, true, true,true, startRow, startColumn, startRow, startColumn, ref rowIndex, ref colIndex);

                    // 該当データの有無を判断
                    switch (sff)
                    {
                        case FarPoint.Web.Spread.SearchFoundFlags.CellNote:
                            FpSpread1.Sheets[0].Cells[rowIndex, colIndex].BackColor = System.Drawing.Color.Orange;
                            break;
                        case FarPoint.Web.Spread.SearchFoundFlags.CellTag:
                            FpSpread1.Sheets[0].Cells[rowIndex, colIndex].BackColor = System.Drawing.Color.YellowGreen;
                            break;
                        case FarPoint.Web.Spread.SearchFoundFlags.CellText:
                            FpSpread1.Sheets[0].Cells[rowIndex, colIndex].BackColor = System.Drawing.Color.PeachPuff;
                            break;
                        default:
                            break;
                    }
                }
            }
        }            
    }
}

Partial Public Class search
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim js As String = "var spid='" + FpSpread1.ClientID & "';"
        js += "var txtid='" + txtSearch.ClientID & "';"
        ClientScript.RegisterStartupScript(Me.GetType(), "onStartUpScript", js, True)

        If IsPostBack Then
            Return
        End If

        ' データ連結
        Dim ds As New System.Data.DataSet()
        ds.ReadXml(MapPath("../App_Data/data.xml"))
        FpSpread1.DataSource = ds

        ' SPREAD初期化
        InitSpread(FpSpread1.Sheets(0))
    End Sub

    Private Sub InitSpread(ByVal sheet As FarPoint.Web.Spread.SheetView)
        ' SPREAD設定
        sheet.FpSpread.CommandBar.Visible = False
        sheet.FpSpread.CssClass = "spreadStyle"
        sheet.FpSpread.UseClipboard = False

        ' フォントサイズの設定
        sheet.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.ColumnHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.RowHeader.DefaultStyle.Font.Size = FontUnit.Parse("80%")
        sheet.SheetCorner.DefaultStyle.Font.Size = FontUnit.Parse("80%")

        ' シート設定
        sheet.PageSize = sheet.RowCount

        ' 列幅の設定
        sheet.Columns(0).Width = 36
        sheet.Columns(1).Width = 88
        sheet.Columns(2).Width = 91
        sheet.Columns(3).Width = 80
        sheet.Columns(4).Width = 36
        sheet.Columns(5).Width = 46
        sheet.Columns(6).Width = 49
        sheet.Columns(7).Width = 71
        sheet.Columns(8).Width = 181

        ' 縦方向の揃え位置を中央に設定
        sheet.DefaultStyle.VerticalAlign = VerticalAlign.Middle

        ' セルノート設定
        sheet.Cells(0, 0).Note = "人事異動予定"

        ' タグ設定
        sheet.Cells(1, 0).Tag = "退職予定"
    End Sub

    Protected Sub FpSpread1_ButtonCommand(ByVal sender As Object, ByVal e As FarPoint.Web.Spread.SpreadCommandEventArgs) Handles FpSpread1.ButtonCommand
        ' 検索
        If e.CommandName.StartsWith("search") Then
            ' 背景色初期化
            FpSpread1.Sheets(0).Cells(0, 0, FpSpread1.ActiveSheetView.RowCount - 1, FpSpread1.ActiveSheetView.ColumnCount - 1).BackColor = System.Drawing.Color.White

            ' 検索文字列の取得
            Dim n As Integer = e.CommandName.IndexOf(".") + 1
            Dim searchStr As String = e.CommandName.Substring(n)

            ' 検索文字列が空白なら終了
            If searchStr.Trim() = "" Then
                Return
            End If

            ' 検索オプションを取得
            Dim caseSensitive As Boolean = ckOptions.Items(0).Selected
            Dim exactMatch As Boolean = ckOptions.Items(1).Selected
            Dim useWildcards As Boolean = ckOptions.Items(2).Selected
            Dim alternateSearch As Boolean = False

            ' 変数を初期化
            Dim rowIndex As Integer = 0
            Dim colIndex As Integer = 0

            For startRow As Integer = 0 To FpSpread1.Sheets(0).RowCount - 1
                For startColumn As Integer = 0 To FpSpread1.Sheets(0).ColumnCount - 1
                    Dim sff As FarPoint.Web.Spread.SearchFoundFlags
                    sff = FpSpread1.Search(FpSpread1.ActiveSheetViewIndex, searchStr, caseSensitive, exactMatch, alternateSearch, useWildcards, _
                     True, True, True, True, startRow, startColumn, _
                     startRow, startColumn, rowIndex, colIndex)

                    ' 該当データの有無を判断
                    Select Case sff
                        Case FarPoint.Web.Spread.SearchFoundFlags.CellNote
                            FpSpread1.Sheets(0).Cells(rowIndex, colIndex).BackColor = System.Drawing.Color.Orange
                            Exit Select
                        Case FarPoint.Web.Spread.SearchFoundFlags.CellTag
                            FpSpread1.Sheets(0).Cells(rowIndex, colIndex).BackColor = System.Drawing.Color.YellowGreen
                            Exit Select
                        Case FarPoint.Web.Spread.SearchFoundFlags.CellText
                            FpSpread1.Sheets(0).Cells(rowIndex, colIndex).BackColor = System.Drawing.Color.PeachPuff
                            Exit Select
                        Case Else
                            Exit Select
                    End Select
                Next
            Next
        End If
    End Sub
End Class

<%@ Page MasterPageFile="~/MasterPage.master" Language="c#" AutoEventWireup="true" 
         Inherits="search" CodeFile="search.aspx.cs" %>

<%@ Register Assembly="FarPoint.Web.SpreadJ" Namespace="FarPoint.Web.Spread" TagPrefix="FarPoint" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeaderPlaceHolder1" Runat="Server">
    <script type="text/javascript">
        function doSearch() {
            var txt = document.getElementById(txtid).value;
            if (txt != null && txt.length > 0) {
                if (document.all != null) document.body.focus();
                var ss = document.getElementById(spid);
                ss.CallBack("search." + txt);
            }
        }
	</script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
	<div>検索条件:<asp:textbox id="txtSearch" runat="server" style="position: relative;"></asp:textbox>	
	<button id="Button1" onclick="doSearch()" type="button" value=" Go " style="position: static">実行</button>
	</div>
	<asp:checkboxlist id="ckOptions" runat="server" RepeatLayout="Flow" 
	RepeatDirection="Horizontal" style="position: relative">
		<asp:ListItem Value="0">大文字と小文字を区別する </asp:ListItem>
		<asp:ListItem Value="1">完全に一致 </asp:ListItem>
		<asp:ListItem Value="2">ワイルドカードを使用 </asp:ListItem>
	</asp:checkboxlist>
    <farpoint:FpSpread ID="FpSpread1" runat="server" 
        onbuttoncommand="FpSpread1_ButtonCommand">
        <CommandBar BackColor="Control" ButtonFaceColor="Control" ButtonHighlightColor="ControlLightLight"
            ButtonShadowColor="ControlDark" />
        <Sheets>
            <farpoint:SheetView SheetName="Sheet1">
            </farpoint:SheetView>
        </Sheets>
    </farpoint:FpSpread>
</asp:Content>