Bruins888 » 30.12.2008 (Вт) 11:55
Объект DataTable можно взять из пространства имен System.Data, объекты StreamReader, StringReader можно взять из пространства имен System.IO. на Visual Basic 2005, такие объекты присутствует, это точно!
Пишу на Visual Basic 2005 приведенный ранее пример
//Обработчик кнопки вставки для выделенного фрагмента данных Excel в DataGridView
Private Sub btnPaste_Click(ByVal sender As System.Object, _
(ByVal e As System.EventArgs) Handles _
BtnPaste.Click
Try
Dim itfObjExcel As System.Windows.Forms.IDataObject // объявляем интерфейсную ссылку для хранения выделеннго
itfObjExcel = System.Windows.Forms.Clipboard.GetDataObject() // копируем
If itfObjExcel != Nothing Then
//проверка Excel?
If itfObjExcel.GetDataPresent(System.Windows.Forms.DataFormats.CommaSeparatedValue) = True Then
Dim readExcel As new System.IO.StreamReader((System.IO.Stream) _
itfObjExcel.GetData(System.Windows.Forms.DataFormats.CommaSeparatedValue)
Dim sFormatDate As System.String //для хранения выделеных данных
Dim ch As New System.Char() = {';'} //хранение символа разделителя
Dim table As New System.Data.DataTable() // хранение выделенных данных в объекте Table
Do While readExcel.Peek() >0
Dim arrayData As New System.Array() // хранение преобразованной строки в массиве для передачи Row
Dim counter As System.Integer = 0
sFormatDate = readExcel.ReadLine()
arrayData = sFormatDate.Split(ch)
If table.Columns.Count <= 0 Then
For counter = 0 To counter <= arrayData.GetUpperBound(0)
table.Columns.Add()
Next
counter = 0
End If
Dim row As New System.Data.DataRow()
row = table.NewRow()
For counter=0 To counter <= arrayData.GetUpperBound(0)
row(counter)=arrayData.GetValue(counter)
Next
counter = 0
table.Rows.Add(row)
row = Nothing
Loop
readExcel.Close()
System.Windows.Forms.DataGridView.DataSource = table.DefaultView
Else
MsgBox("Data not Excel")
End If
End If
Cath olExeption As New System.Exception()
MsgBox(olException.Message)
End
Finally
If readExcel != Nothing Then
readExcel.Dispose()
End If
End Try
Прошу не ругать если в синтаксисе я что то упустил я на Basic не писал уже года 3-4 подзабыл. Но код привел, вам и
решать использовать его или что то другое придумать.
*
Я привел код На VB 2005 с библиотекой NetFrameWork 2.0 в ней 100% присутствуют все объекты мною использованные,
по поводу DataTable, VB 2005 поддерживает технологию ADO.NET значит данный объект и объект DataRow там есть 100% (namespace System.Data). VB 2005 поддерживает систему ввода вывода из пространства имен System.IO 100% значит объект StreamReader присутствует.