「スヌーピー」 【Japanese】 ぬぉぉぉー、おいらのあみ出したVB.NETからのExcel出力がけっこうすごかったみたいだから、 前回より改良してもう一度記事をUpしておくじょ。
VBからExcelへ出力すると、数値も文字列として認識されてしまうんだじょ。
例のセルを一回クリックすれば数値になるパターンだじょ。
しかし、これを1セルずつプログラムでしていくとデータ数が多い場合には、ものすごく時間が
かかってしまうじょ。
たいやきを食べながらでも待てない時間だじょ。
そこでおいらがあみだしたのがこの1行だじょ '1度貼り付けておいて xlRange.Value = iarData 再度その値を挿入するんだじょ。数字の文字列を数値にする多分世界最速の技だじょ xlRange.Value = xlRange.Value 【English】 I output to Excel from VB. , It is also recognized as a numeric string. If you click on a numeric value once the cell. However, when there are a large number of data, it takes a long time and we were terribly one cell to this program.
'Once I paste the data. xlRange.Value = iarData 'I want to insert its value again. xlRange.Value = xlRange.Value
''' <summary> ''' SnoopyExcelExport ''' </summary> ''' <param name="iTarget"></param> ''' <remarks></remarks> Private Sub ExcelExport()
Dim dtTable As New DataTable
dtTable.Clear() 'ここで何んらかdtTableにデータを取得しておくこと
'DataTableを二次元配列に格納する
Dim sarData(dtTable.Rows.Count - 1, dtTable.Columns.Count - 1) As String
For y As Integer = 0 To dtTable.Rows.Count - 1
For x As Integer = 0 To dtTable.Columns.Count - 1
sarData(y, x) = dtTable.Rows(y)(x).ToString()
Next
Next
Dim xlApp As New Excel.ApplicationClass
Dim xlBook As Excel.WorkbookClass
Dim xlSheet As Excel.Worksheet
Dim xlRange As Excel.Range = Nothing
Dim xlRange1 As Excel.Range = Nothing
Dim xlRange2 As Excel.Range = Nothing
xlApp.Application.Visible = False 'Excelを非表示にする
xlBook = xlApp.Workbooks.Add()
xlSheet = xlBook.Worksheets(1)
Try
xlRange1 = DirectCast(irefSheet.Cells(1, 1), Excel.Range) '始点
xlRange2 = DirectCast(irefSheet.Cells(1 + UBound(iarData), 1 + UBound(iarData, 2)), Excel.Range) '終点
xlRange = irefSheet.Range(xlRange1, xlRange2) 'セル範囲
xlRange.Value = sarData'貼り付け
'数字の文字列を数値にする(多分世界最速の技)
xlRange.Value = xlRange.Value
'書式設定などはここでしておけば表示も大丈夫
xlRange = irefSheet.Columns("I:I")
xlRange.NumberFormatLocal = "yyyy/mm/dd" '年月日
xlRange = irefSheet.Columns("R:BE")
xlRange.NumberFormatLocal = "#,##0;[赤]-#,##0" '通貨型
xlRange = irefSheet.Columns("BB:BB")
xlRange.NumberFormatLocal = "0.0%" 'パーセント
'Excelを表示する
xlApp.Application.Visible = True
Catch ex As Exception
'Throw MsgBox(Err.Description)
Finally
'使用したインスタンスは削除しておくこと
SnoopyReleaseComObject(DirectCast(xlSheet, Object))
SnoopyReleaseComObject(DirectCast(xlBook, Object))
SnoopyReleaseComObject(DirectCast(xlApp, Object))
SnoopyReleaseComObject(DirectCast(xlRange, Object))
SnoopyReleaseComObject(DirectCast(xlRange1, Object))
SnoopyReleaseComObject(DirectCast(xlRange2, Object))
End Try
End Sub
''' <summary> ''' SnoopyReleaseComObject ''' </summary> ''' <param name="iTarget"></param> ''' <remarks></remarks> Private Shared Sub SnoopyReleaseComObject(ByRef iTarget As Object)
Try
If Not iTarget Is Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(iTarget) End If
Finally
iTarget = Nothing
End Try
End Sub
End Try End Sub