作成日: 2021/12/22 最終更新日: 2021/12/22
文書種別
技術情報
詳細
シートのAutoFilterModeプロパティをEnhancedContextMenuに設定してフィルタを設定すると、拡張フィルタリングの使用が可能になります。
フィルタ処理をコードから実行する場合には、 SheetViewクラスのAutoFilterColumnメソッドを使用します。フィルタ条件の指定方法については、以下をご参考にしてください。
<例>
Button1:1列目が「AB」「BC」のデータのみを表示します。
Button2:1列目が「AB」「CD」ではない、かつ2列目が「5」より小さいデータを表示します。
◎サンプルコード(VB)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
FpSpread1.ActiveSheet.RowCount = 10
FpSpread1.ActiveSheet.ColumnCount = 2
' データの設定
Dim data = {"AB", "BC", "CD", "DE"}
For i = 0 To FpSpread1.ActiveSheet.RowCount - 1
FpSpread1.ActiveSheet.SetValue(i, 0, data(i Mod 4))
FpSpread1.ActiveSheet.SetValue(i, 1, i)
Next
' フィルタの設定
FpSpread1.ActiveSheet.Columns(0, 1).AllowAutoFilter = True
FpSpread1.ActiveSheet.AutoFilterMode = AutoFilterMode.EnhancedContextMenu
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.Text = "フィルタの設定①"
' フィルタの解除
FpSpread1.ActiveSheet.RowFilter.ResetFilter()
' 複数項目のフィルタ設定
Dim fcd As New FilterColumnDefinition(0, FilterListBehavior.Default)
Dim mvfi As New MultiValuesFilterItem() With {.SheetView = FpSpread1.ActiveSheet}
mvfi.FilterItems.Add(New FilterItemValue("AB"))
mvfi.FilterItems.Add(New FilterItemValue("BC"))
fcd.Filters.Add(mvfi)
FpSpread1.ActiveSheet.RowFilter.ColumnDefinitions.Add(fcd)
FpSpread1.ActiveSheet.AutoFilterColumn(0, mvfi.DisplayName, 1)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Me.Text = "フィルタの設定②"
' フィルタの解除
FpSpread1.ActiveSheet.RowFilter.ResetFilter()
' 条件フィルタの設定(1列目)
Dim fcd_1 As New FilterColumnDefinition(0, FilterListBehavior.Default)
Dim fc1_1 = New FarPoint.Win.Spread.FilterCondition(CustomFilterOperatorType.NotEqual, "AB")
Dim fc2_1 = New FarPoint.Win.Spread.FilterCondition(CustomFilterOperatorType.NotEqual, "CD")
Dim cfItem_1 = New FarPoint.Win.Spread.CustomFilterItem(fc1_1, fc2_1, True)
fcd_1.Filters.Add(cfItem_1)
FpSpread1.ActiveSheet.RowFilter.ColumnDefinitions.Add(fcd_1)
FpSpread1.ActiveSheet.AutoFilterColumn(0, cfItem_1.DisplayName, 2)
' 条件フィルタ設定(2列目)
Dim fcd_2 As New FilterColumnDefinition(1, FilterListBehavior.Default)
Dim fc1_2 = New FarPoint.Win.Spread.FilterCondition(CustomFilterOperatorType.LessThan, 5)
Dim cfItem_2 = New FarPoint.Win.Spread.CustomFilterItem(fc1_2, Nothing, True)
fcd_2.Filters.Add(cfItem_2)
FpSpread1.ActiveSheet.RowFilter.ColumnDefinitions.Add(fcd_2)
FpSpread1.ActiveSheet.AutoFilterColumn(1, cfItem_2.DisplayName, 2)
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
fpSpread1.ActiveSheet.RowCount = 10;
fpSpread1.ActiveSheet.ColumnCount = 2;
// データの設定
var data = new[] { "AB", "BC", "CD", "DE" };
for (var i = 0; i <= fpSpread1.ActiveSheet.RowCount - 1; i++)
{
fpSpread1.ActiveSheet.SetValue(i, 0, data[i % 4]);
fpSpread1.ActiveSheet.SetValue(i, 1, i);
}
// フィルタの設定
fpSpread1.ActiveSheet.Columns[0,1].AllowAutoFilter = true;
fpSpread1.ActiveSheet.AutoFilterMode = AutoFilterMode.EnhancedContextMenu;
}
private void button1_Click(object sender, EventArgs e)
{
this.Text = "フィルタの設定①";
// フィルタの解除
fpSpread1.ActiveSheet.RowFilter.ResetFilter();
// 複数項目のフィルタ設定
FilterColumnDefinition fcd = new FilterColumnDefinition(0, FilterListBehavior.Default);
MultiValuesFilterItem mvfi = new MultiValuesFilterItem() { SheetView = fpSpread1.ActiveSheet };
mvfi.FilterItems.Add(new FilterItemValue("AB"));
mvfi.FilterItems.Add(new FilterItemValue("BC"));
fcd.Filters.Add(mvfi);
fpSpread1.ActiveSheet.RowFilter.ColumnDefinitions.Add(fcd);
fpSpread1.ActiveSheet.AutoFilterColumn(0, mvfi.DisplayName, 1);
}
private void button2_Click(object sender, EventArgs e)
{
this.Text = "フィルタの設定②";
// フィルタの解除
fpSpread1.ActiveSheet.RowFilter.ResetFilter();
// 条件フィルタの設定(1列目)
FilterColumnDefinition fcd_1 = new FilterColumnDefinition(0, FilterListBehavior.Default);
var fc1_1 = new FarPoint.Win.Spread.FilterCondition(CustomFilterOperatorType.NotEqual, "AB");
var fc2_1 = new FarPoint.Win.Spread.FilterCondition(CustomFilterOperatorType.NotEqual, "CD");
var cfItem_1 = new FarPoint.Win.Spread.CustomFilterItem(fc1_1, fc2_1, true);
fcd_1.Filters.Add(cfItem_1);
fpSpread1.ActiveSheet.RowFilter.ColumnDefinitions.Add(fcd_1);
fpSpread1.ActiveSheet.AutoFilterColumn(0, cfItem_1.DisplayName, 2);
// 条件フィルタ設定(2列目)
FilterColumnDefinition fcd_2 = new FilterColumnDefinition(1, FilterListBehavior.Default);
var fc1_2 = new FarPoint.Win.Spread.FilterCondition(CustomFilterOperatorType.LessThan, 5);
var cfItem_2 = new FarPoint.Win.Spread.CustomFilterItem(fc1_2, null, true);
fcd_2.Filters.Add(cfItem_2);
fpSpread1.ActiveSheet.RowFilter.ColumnDefinitions.Add(fcd_2);
fpSpread1.ActiveSheet.AutoFilterColumn(1, cfItem_2.DisplayName, 2);
}
<実行イメージ>