IT 2018/1/12 執筆
GrapeCityのComponentOne Studio for WinForms
C1.Win.C1FlexGrid.4
C1FlexGrid control for .NET Windows Forms JPN.
ランタイム:v4.0.30319

VB.NET(6.0からマイグレしたやつ)
C1FlexGridから既存のExcelを開いてぺっと出力して表示するメモ
開発環境:
Microsoft Visual Studio Professional 2013 Version 12.0.40629.00 Update 5
DLL:Microsoft Visual Studio Professional 2013 Version 12.0.40629.00 Update 5
GrapeCityのComponentOne Studio for WinForms
C1.Win.C1FlexGrid.4
C1FlexGrid control for .NET Windows Forms JPN.
ランタイム:v4.0.30319

C1FlexGridから既存のExcelに出力する方法①
簡単に説明するとGridのDataSourceから2次元配列に変換して、
Excelの指定の範囲をRenge指定して代入するだけ。
引数1 Gridのインスタンス
引数2 Excelのパス
range1に(11:1) = A11
range2に(要素数 + 11 - 1:要素数 + 1 - 1) =
仮に配列のRow,Col共に要素数を5とすると
5+11-1 = 15
5+1-1 = 5
変換すると = E15
ExcelのRangeに(A11,E15)見たいな形で範囲指定し、2次元配列に変換したデータを全て代入します。
ぶっちゃけこの指定は無くてもいけます。
その内容はこの次に説明します。
画面上にExcelを表示さえるので開放はしていないです。
Private Function Func_ExcelOut(Grd As C1FlexGrid, ExcelPath As String)
Dim dt As DataTable = Grd.DataSource
'DataTableを二次元配列に格納する
Dim data(dt.Rows.Count - 1, dt.Columns.Count - 1) As Object
For y As Integer = 0 To dt.Rows.Count - 1
For x As Integer = 0 To dt.Columns.Count - 1
data(y, x) = dt.Rows(y)(x).ToString
Next
Next
Dim xlsApp As Excel.Application
Dim xlsBook As Excel.Workbook
Dim xlsSheet As Excel.Worksheet
Try
'Excelを起動する
xlsApp = New Excel.Application
xlsBook = xlsApp.Workbooks.Open(ExcelPath, [ReadOnly]:=True)
xlsSheet = DirectCast(xlsBook.Worksheets(1), Excel.Worksheet)
'Excelの開始位置
Dim xlsRowS As Integer = 11
Dim xlsColS As Integer = 1
Dim range1 As Excel.Range = xlsSheet.Cells(xlsRowS, xlsColS)
Dim range2 As Excel.Range = xlsSheet.Cells(dt.Rows.Count - 1 + xlsRowS, dt.Columns.Count - 1 + xlsColS)
'データ代入
xlsSheet.Range(range1, range2).Value = data
'表示
xlsApp.Visible = True
Catch
Finally
xlsSheet = Nothing
xlsBook = Nothing
xlsApp = Nothing
End Try
End Function
range1に(11:1) = A11
range2に(要素数 + 11 - 1:要素数 + 1 - 1) =
仮に配列のRow,Col共に要素数を5とすると
5+11-1 = 15
5+1-1 = 5
変換すると = E15
ExcelのRangeに(A11,E15)見たいな形で範囲指定し、2次元配列に変換したデータを全て代入します。
ぶっちゃけこの指定は無くてもいけます。
その内容はこの次に説明します。
画面上にExcelを表示さえるので開放はしていないです。
コメント