Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DataGrid copy/paste возможно ли? 
V
    Опции темы
ArsNov
Дата 16.7.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: 1
Всего: 1



Возможно ли скопировать данные из excel и вставить их в datagrid? Если да, то как?  smile 
PM MAIL ICQ   Вверх
ArsNov
Дата 16.7.2007, 13:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: 1
Всего: 1



Нашёл решение проблемы:
Код

    Private Function clipboardToDatatable() As DataTable
        Dim lDataObj As IDataObject = Clipboard.GetDataObject
        Dim lTableOutput As New DataTable
        Dim lLoopCounter As Integer

        If Not lDataObj.GetData(DataFormats.CommaSeparatedValue) Is Nothing Then        'Если есть данные:
            Dim lSrReadExcel As New System.IO.StreamReader(CType(lDataObj.GetData(DataFormats.CommaSeparatedValue), System.IO.Stream))
            While (lSrReadExcel.Peek() > 0)
                Dim lStrFormattedData As String
                lStrFormattedData = lSrReadExcel.ReadLine()

                Dim larrSplitData As Array

                larrSplitData = lStrFormattedData.Split(";")        'разбиваем строку данных.
                If lTableOutput.Columns.Count <= 0 Then

                    For lLoopCounter = 0 To larrSplitData.GetUpperBound(0)
                        lTableOutput.Columns.Add()
                    Next
                End If
                Dim lRowNew As DataRow
                lRowNew = lTableOutput.NewRow
                For lLoopCounter = 0 To larrSplitData.GetUpperBound(0)
                    lRowNew(lLoopCounter) = larrSplitData.GetValue(lLoopCounter)
                Next
                lTableOutput.Rows.Add(lRowNew)
            End While
        End If
        Return lTableOutput
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim xxx As DataTable
        xxx = clipboardToDatatable()
        DataGrid1.DataSource = xxx.DefaultView
    End Sub


PM MAIL ICQ   Вверх
ArsNov
Дата 16.7.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: 1
Всего: 1



Возникла еще одна проблема! 
Когда я копирую содержание excel файла, если в нем присутвствуют русские символы, то они не хотят работать с StreamReader. В результате в datatable вместо русских симвоолов пустота.... Может быть что то с кодировкой надо сделать? если да, то как?
PM MAIL ICQ   Вверх
ArsNov
Дата 16.7.2007, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 148
Регистрация: 1.9.2005

Репутация: 1
Всего: 1



решение опять же найдено.
строка dim lSrReadExcel as new System...... будет выглядеть так:

dim lSrReadExcel as new System.IO.StreamReader(CType(ldataobj.GetData(DataFormats.commaSeparatedValue), System.io.stream), system.text.encoding.getEncoding(1251))

Тему можно закрыть

Это сообщение отредактировал(а) ArsNov - 16.7.2007, 15:45
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0403 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.