作成日: 2017/03/29 最終更新日: 2017/03/29
文書種別
使用方法
詳細
IComparerの実装クラスを作成し、データの比較方法を定義します。
上記のIComparerオブジェクトを指定してシートのSortRowsメソッドを実行します。
下記では文字列データの並び替えにて英大文字を英小文字の前に並べます。
◎サンプルコード(VB)
◎サンプルコード(C#)
上記のIComparerオブジェクトを指定してシートのSortRowsメソッドを実行します。
下記では文字列データの並び替えにて英大文字を英小文字の前に並べます。
◎サンプルコード(VB)
----------------------------------
Webフォームクラス
----------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Return
End If
FpSpread1.ActiveSheetView.DataSource = CreateData()
End Sub
Private Function CreateData() As Data.DataSet
'テストデータの生成
Dim ds As New Data.DataSet
Dim dt As New Data.DataTable
dt.Columns.Add(New Data.DataColumn("EMPID", Type.GetType("System.String")))
dt.Columns.Add(New Data.DataColumn("ENAME", Type.GetType("System.String")))
dt.Rows.Add(New Object() {"1", "a"})
dt.Rows.Add(New Object() {"2", "A"})
dt.Rows.Add(New Object() {"3", "b"})
dt.Rows.Add(New Object() {"4", "B"})
dt.Rows.Add(New Object() {"5", "c"})
dt.Rows.Add(New Object() {"6", "C"})
ds.Tables.Add(dt)
Return ds
End Function
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Comparerを指定してソートを実行
FpSpread1.ActiveSheetView.SortRows(1, True, True, New MyStringComparer)
End Sub
----------------------------------
IComparer 実装クラス
----------------------------------
Public Class MyStringComparer
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements Collections.IComparer.Compare
Dim val1 As String = Convert.ToString(x)
Dim val2 As String = Convert.ToString(y)
Dim compareResult As Integer
If val1 Is Nothing And val2 Is Nothing Then
compareResult = String.Compare(val1, val2)
ElseIf val1 Is Nothing And Not val2 Is Nothing Then
compareResult = -1
ElseIf Not val1 Is Nothing And val2 Is Nothing Then
compareResult = 1
ElseIf val1.Equals(val1.ToLower) And Not val2.Equals(val2.ToLower) Then
'小文字の場合、小文字を後にする
compareResult = 1
ElseIf Not val1.Equals(val1.ToLower) And val2.Equals(val2.ToLower) Then
'大文字の場合、大文字を先にする
compareResult = -1
Else
'大文字と大文字、小文字と小文字の比較はデフォルトのString.Compareで処理
compareResult = String.Compare(val1, val2, False)
End If
Return compareResult
End Function
End Class
Webフォームクラス
----------------------------------
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Page.IsPostBack Then
Return
End If
FpSpread1.ActiveSheetView.DataSource = CreateData()
End Sub
Private Function CreateData() As Data.DataSet
'テストデータの生成
Dim ds As New Data.DataSet
Dim dt As New Data.DataTable
dt.Columns.Add(New Data.DataColumn("EMPID", Type.GetType("System.String")))
dt.Columns.Add(New Data.DataColumn("ENAME", Type.GetType("System.String")))
dt.Rows.Add(New Object() {"1", "a"})
dt.Rows.Add(New Object() {"2", "A"})
dt.Rows.Add(New Object() {"3", "b"})
dt.Rows.Add(New Object() {"4", "B"})
dt.Rows.Add(New Object() {"5", "c"})
dt.Rows.Add(New Object() {"6", "C"})
ds.Tables.Add(dt)
Return ds
End Function
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Comparerを指定してソートを実行
FpSpread1.ActiveSheetView.SortRows(1, True, True, New MyStringComparer)
End Sub
----------------------------------
IComparer 実装クラス
----------------------------------
Public Class MyStringComparer
Implements System.Collections.IComparer
Public Function Compare(ByVal x As Object, ByVal y As Object) As Integer Implements Collections.IComparer.Compare
Dim val1 As String = Convert.ToString(x)
Dim val2 As String = Convert.ToString(y)
Dim compareResult As Integer
If val1 Is Nothing And val2 Is Nothing Then
compareResult = String.Compare(val1, val2)
ElseIf val1 Is Nothing And Not val2 Is Nothing Then
compareResult = -1
ElseIf Not val1 Is Nothing And val2 Is Nothing Then
compareResult = 1
ElseIf val1.Equals(val1.ToLower) And Not val2.Equals(val2.ToLower) Then
'小文字の場合、小文字を後にする
compareResult = 1
ElseIf Not val1.Equals(val1.ToLower) And val2.Equals(val2.ToLower) Then
'大文字の場合、大文字を先にする
compareResult = -1
Else
'大文字と大文字、小文字と小文字の比較はデフォルトのString.Compareで処理
compareResult = String.Compare(val1, val2, False)
End If
Return compareResult
End Function
End Class
◎サンプルコード(C#)
-------------------------------
Webフォームクラス
-------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
return;
}
FpSpread1.ActiveSheetView.DataSource = CreateData();
}
private System.Data.DataSet CreateData()
{
//テストデータの生成
System.Data.DataSet ds = new System.Data.DataSet();
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add(new System.Data.DataColumn("EMPID", Type.GetType("System.String")));
dt.Columns.Add(new System.Data.DataColumn("ENAME", Type.GetType("System.String")));
dt.Rows.Add(new object[] { "1", "a" });
dt.Rows.Add(new object[] { "2", "A" });
dt.Rows.Add(new object[] { "3", "b" });
dt.Rows.Add(new object[] { "4", "B" });
dt.Rows.Add(new object[] { "5", "c" });
dt.Rows.Add(new object[] { "6", "C" });
ds.Tables.Add(dt);
return ds;
}
----------------------------------
IComparer 実装クラス
----------------------------------
public class MyStringComparer : System.Collections.IComparer
{
public int Compare(object x, object y)
{
string val1 = Convert.ToString(x);
string val2 = Convert.ToString(y);
int compareResult;
if (val1 == null & val2 == null)
{
compareResult = string.Compare(val1, val2);
}
else if (val1 == null & (val2 != null))
{
compareResult = -1;
}
else if ((val1 != null) & val2 == null)
{
compareResult = 1;
}
else if (val1.Equals(val1.ToLower()) & !val2.Equals(val2.ToLower()))
{
//小文字の場合、小文字を後にする
compareResult = 1;
}
else if (!val1.Equals(val1.ToLower()) & val2.Equals(val2.ToLower()))
{
//大文字の場合、大文字を先にする
compareResult = -1;
}
else
{
//大文字と大文字、小文字と小文字の比較はデフォルトのString.Compareで処理
compareResult = string.Compare(val1, val2, false);
}
return compareResult;
}
}
Webフォームクラス
-------------------------------
protected void Page_Load(object sender, EventArgs e)
{
if (Page.IsPostBack)
{
return;
}
FpSpread1.ActiveSheetView.DataSource = CreateData();
}
private System.Data.DataSet CreateData()
{
//テストデータの生成
System.Data.DataSet ds = new System.Data.DataSet();
System.Data.DataTable dt = new System.Data.DataTable();
dt.Columns.Add(new System.Data.DataColumn("EMPID", Type.GetType("System.String")));
dt.Columns.Add(new System.Data.DataColumn("ENAME", Type.GetType("System.String")));
dt.Rows.Add(new object[] { "1", "a" });
dt.Rows.Add(new object[] { "2", "A" });
dt.Rows.Add(new object[] { "3", "b" });
dt.Rows.Add(new object[] { "4", "B" });
dt.Rows.Add(new object[] { "5", "c" });
dt.Rows.Add(new object[] { "6", "C" });
ds.Tables.Add(dt);
return ds;
}
----------------------------------
IComparer 実装クラス
----------------------------------
public class MyStringComparer : System.Collections.IComparer
{
public int Compare(object x, object y)
{
string val1 = Convert.ToString(x);
string val2 = Convert.ToString(y);
int compareResult;
if (val1 == null & val2 == null)
{
compareResult = string.Compare(val1, val2);
}
else if (val1 == null & (val2 != null))
{
compareResult = -1;
}
else if ((val1 != null) & val2 == null)
{
compareResult = 1;
}
else if (val1.Equals(val1.ToLower()) & !val2.Equals(val2.ToLower()))
{
//小文字の場合、小文字を後にする
compareResult = 1;
}
else if (!val1.Equals(val1.ToLower()) & val2.Equals(val2.ToLower()))
{
//大文字の場合、大文字を先にする
compareResult = -1;
}
else
{
//大文字と大文字、小文字と小文字の比較はデフォルトのString.Compareで処理
compareResult = string.Compare(val1, val2, false);
}
return compareResult;
}
}
旧文書番号
40234