グループフッタの書式設定がExcelファイルにエクスポートされない
対象製品
SPREAD for WPF 1.0J
状況
修正済み
詳細
グループフッタの書式設定がExcelファイルにエクスポートされません。
【手順】
1.新規ウィンドウにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.ボタンをクリックしてエクスポートされたExcelファイルを開きます
--グループフッタ(C8セル)の書式設定がExcelファイルに反映されません
【サンプルコード】
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' データソースの設定
GcSpreadGrid1.ItemsSource = Order.GetOrders()
' "Category" フィールドでグループ化
GcSpreadGrid1.Columns("Category").GroupHeader(0, 0).Value = "Group by Category"
GcSpreadGrid1.Columns("Category").GroupHeader.Rows(0).Background = New SolidColorBrush(Colors.Orange)
GcSpreadGrid1.Columns("Category").GroupFooter.Rows(0).Background = New SolidColorBrush(Colors.Orange)
Dim groupDes1 As New GrapeCity.Windows.SpreadGrid.SpreadGroupDescription()
groupDes1.ColumnName = "Category"
GcSpreadGrid1.GroupDescriptions.Add(groupDes1)
' 数値型セルの設定
Dim num As New GrapeCity.Windows.SpreadGrid.NumberCellType()
num.FieldSet = New GrapeCity.Windows.SpreadGrid.Editors.NumberFieldSet("#,##0,,,▲,")
Dim i As Integer = GcSpreadGrid1.Columns("Price").Index
GcSpreadGrid1.Columns("Category").GroupFooter(0, i).AggregationType = GrapeCity.Windows.SpreadGrid.AggregationType.Sum
GcSpreadGrid1.Columns("Category").GroupFooter(0, i).CellType = num
GcSpreadGrid1.Columns("Price").CellType = num
End Sub
' テストデータの設定
Public Class Order
Public Property Category() As String
Get
Return m_Category
End Get
Set(value As String)
m_Category = Value
End Set
End Property
Private m_Category As String
Public Property ProductName() As String
Get
Return m_ProductName
End Get
Set(value As String)
m_ProductName = value
End Set
End Property
Private m_ProductName As String
Public Property Price() As Integer
Get
Return m_Price
End Get
Set(value As Integer)
m_Price = value
End Set
End Property
Private m_Price As Integer
Public Property Count() As Integer
Get
Return m_Count
End Get
Set(value As Integer)
m_Count = value
End Set
End Property
Private m_Count As Integer
Public Property IsChecked() As Boolean
Get
Return m_IsChecked
End Get
Set(value As Boolean)
m_IsChecked = value
End Set
End Property
Private m_IsChecked As Boolean
Public Property OrderID() As Integer
Get
Return m_OrderID
End Get
Set(value As Integer)
m_OrderID = value
End Set
End Property
Private m_OrderID As Integer
Public Shared Function GetOrders() As System.Collections.ObjectModel.ObservableCollection(Of Order)
Dim orders As New System.Collections.ObjectModel.ObservableCollection(Of Order)()
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Apple", .Price = 100, .Count = 2, .IsChecked = True, .OrderID = 1})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Carrot", .Price = 150, .Count = 5, .IsChecked = True, .OrderID = 2})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Orange", .Price = 150, .Count = 4, .IsChecked = False, .OrderID = 3})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Banana", .Price = 200, .Count = 3, .IsChecked = True, .OrderID = 4})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Ginger", .Price = 100, .Count = 3, .IsChecked = False, .OrderID = 5})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Cucumber", .Price = 200, .Count = 2, .IsChecked = True, .OrderID = 6})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Pear", .Price = 300, .Count = 4, .IsChecked = True, .OrderID = 7})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Cabbage", .Price = 100, .Count = 5, .IsChecked = True, .OrderID = 8})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Watermelon", .Price = 450, .Count = 1, .IsChecked = False, .OrderID = 9})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Grape", .Price = 300, .Count = 3, .IsChecked = True, .OrderID = 10})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Spinach", .Price = 200, .Count = 3, .IsChecked = False, .OrderID = 11})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Eggplant", .Price = 150, .Count = 2, .IsChecked = True, .OrderID = 12})
Return orders
End Function
End Class
Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click
' Excelファイルへ出力
GcSpreadGrid1.SaveExcel("test.xls")
End Sub
【手順】
1.新規ウィンドウにSPREADとButtonを配置します
2.下記サンプルコードをコピーし、アプリケーションを実行します
3.ボタンをクリックしてエクスポートされたExcelファイルを開きます
--グループフッタ(C8セル)の書式設定がExcelファイルに反映されません
【サンプルコード】
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
' データソースの設定
GcSpreadGrid1.ItemsSource = Order.GetOrders()
' "Category" フィールドでグループ化
GcSpreadGrid1.Columns("Category").GroupHeader(0, 0).Value = "Group by Category"
GcSpreadGrid1.Columns("Category").GroupHeader.Rows(0).Background = New SolidColorBrush(Colors.Orange)
GcSpreadGrid1.Columns("Category").GroupFooter.Rows(0).Background = New SolidColorBrush(Colors.Orange)
Dim groupDes1 As New GrapeCity.Windows.SpreadGrid.SpreadGroupDescription()
groupDes1.ColumnName = "Category"
GcSpreadGrid1.GroupDescriptions.Add(groupDes1)
' 数値型セルの設定
Dim num As New GrapeCity.Windows.SpreadGrid.NumberCellType()
num.FieldSet = New GrapeCity.Windows.SpreadGrid.Editors.NumberFieldSet("#,##0,,,▲,")
Dim i As Integer = GcSpreadGrid1.Columns("Price").Index
GcSpreadGrid1.Columns("Category").GroupFooter(0, i).AggregationType = GrapeCity.Windows.SpreadGrid.AggregationType.Sum
GcSpreadGrid1.Columns("Category").GroupFooter(0, i).CellType = num
GcSpreadGrid1.Columns("Price").CellType = num
End Sub
' テストデータの設定
Public Class Order
Public Property Category() As String
Get
Return m_Category
End Get
Set(value As String)
m_Category = Value
End Set
End Property
Private m_Category As String
Public Property ProductName() As String
Get
Return m_ProductName
End Get
Set(value As String)
m_ProductName = value
End Set
End Property
Private m_ProductName As String
Public Property Price() As Integer
Get
Return m_Price
End Get
Set(value As Integer)
m_Price = value
End Set
End Property
Private m_Price As Integer
Public Property Count() As Integer
Get
Return m_Count
End Get
Set(value As Integer)
m_Count = value
End Set
End Property
Private m_Count As Integer
Public Property IsChecked() As Boolean
Get
Return m_IsChecked
End Get
Set(value As Boolean)
m_IsChecked = value
End Set
End Property
Private m_IsChecked As Boolean
Public Property OrderID() As Integer
Get
Return m_OrderID
End Get
Set(value As Integer)
m_OrderID = value
End Set
End Property
Private m_OrderID As Integer
Public Shared Function GetOrders() As System.Collections.ObjectModel.ObservableCollection(Of Order)
Dim orders As New System.Collections.ObjectModel.ObservableCollection(Of Order)()
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Apple", .Price = 100, .Count = 2, .IsChecked = True, .OrderID = 1})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Carrot", .Price = 150, .Count = 5, .IsChecked = True, .OrderID = 2})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Orange", .Price = 150, .Count = 4, .IsChecked = False, .OrderID = 3})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Banana", .Price = 200, .Count = 3, .IsChecked = True, .OrderID = 4})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Ginger", .Price = 100, .Count = 3, .IsChecked = False, .OrderID = 5})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Cucumber", .Price = 200, .Count = 2, .IsChecked = True, .OrderID = 6})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Pear", .Price = 300, .Count = 4, .IsChecked = True, .OrderID = 7})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Cabbage", .Price = 100, .Count = 5, .IsChecked = True, .OrderID = 8})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Watermelon", .Price = 450, .Count = 1, .IsChecked = False, .OrderID = 9})
orders.Add(New Order() With {.Category = "Fruit", .ProductName = "Grape", .Price = 300, .Count = 3, .IsChecked = True, .OrderID = 10})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Spinach", .Price = 200, .Count = 3, .IsChecked = False, .OrderID = 11})
orders.Add(New Order() With {.Category = "Vegetable", .ProductName = "Eggplant", .Price = 150, .Count = 2, .IsChecked = True, .OrderID = 12})
Return orders
End Function
End Class
Private Sub Button1_Click(sender As Object, e As RoutedEventArgs) Handles Button1.Click
' Excelファイルへ出力
GcSpreadGrid1.SaveExcel("test.xls")
End Sub
回避方法
Service Pack 2(v1.0.2015.1109)で修正済み。