Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и вставка конкретной таблицы в VB 2010 / 25 сообщений из 57, страница 1 из 3
11.08.2014, 13:44
    #38717249
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Всем доброго времени. Есть программный код на VB Application, который ищет на сайте из всех таблиц, одну нужную таблицу, и вставляет ее в Excel. Как правильно будет написать программный код в VB 2010? Код прилагаю.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Set maPageHtml = IE.document
Set Htable = maPageHtml.getElementsbyTagname("table") 'выбираем все таблицы и ищем таблицу с данными - ее имя должно быть "table tbl_1"
For i = 0 To Htable.Length - 1
    If Htable(i).classname = "t2standard" Then Exit For
Next i
Set maTable = Htable(i) ' выбрали нужную
'запускаем цикл по всем ячейкам - последовательно заносим их на лист
s = IIf(last = 8, last, last + 8) 'номер строки листа экселя куда будут заноситься данные - в первый раз = 1 затем = послед заполнен ячейка +1
ss = IIf(s = 1, 1, 1) 'номер строки таблицы сайта в первый запуск = 1 - шапка, в остальные = 2 (искл шапку)
On Error Resume Next
For i = ss To maTable.Rows.Length ' table rows
    For J = 1 To maTable.Rows(i - 1).Cells.Length ' for each cell of the row
        Worksheets("На_регистрации").Cells(s, J) = maTable.Rows(i - 1).Cells(J - 1).innertext
    Next J
    If maTable.Rows(i - 1).Cells.Length > 0 Then s = s + 1 'в таблице есть пустые строки, делаем проверку на колво ячеек в строке - если пусто то игнорми переход на новую строку листа
Next i




Заранее всем спасибо!

Модератор: Тема перенесена из форума "Visual Basic".
...
Рейтинг: 0 / 0
11.08.2014, 16:23
    #38717429
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visak,

Интересный вопрос, на делфи подсказали с такой проблемой)
...
Рейтинг: 0 / 0
11.08.2014, 16:24
    #38717432
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Spartak19,
К сожалению, необходимо на Visual Basic, как думаешь, тут помогут с этим?
...
Рейтинг: 0 / 0
11.08.2014, 16:31
    #38717440
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Spartak19,

Судя по коду это оргазация парсинга на VBA, я так понимаю тебе надо все это переписать на VISUAL BASIC. Поэтому мне кажется тут вопрос стоит как парсить данные с Интернет страницы и занести их в элемент на форме
...
Рейтинг: 0 / 0
11.08.2014, 16:32
    #38717445
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Spartak19, Ну будем надеяться, что гении мысли, помогут...
...
Рейтинг: 0 / 0
11.08.2014, 17:15
    #38717502
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visakSpartak19,
К сожалению, необходимо на Visual Basic, как думаешь, тут помогут с этим?

Посмотрите тему - принципы работы с Exсel.
Чисто по логике - будет похоже.
...
Рейтинг: 0 / 0
11.08.2014, 17:17
    #38717507
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
...
Рейтинг: 0 / 0
11.08.2014, 17:28
    #38717524
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
D129,
Как это записать на VISUAL BASIC 2010 EXPRESS? Не на VBA(MS Office), а в компиляторе VB2010
...
Рейтинг: 0 / 0
11.08.2014, 18:25
    #38717569
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Ну как-то так:


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
Imports System.Reflection

Public Class ExcelExpress



    Dim UID = "Excel.Application"
    Dim oExcel As Object

    Dim WorkBooks, WorkBook, WorkSheets, WorkSheet, Range, Interior

    '//КОНСТРУКТОР КЛАССА
    Public Sub New()
        oExcel = Activator.CreateInstance(Type.GetTypeFromProgID(UID))
    End Sub




    ' //ОТКРЫТЬ ДОКУМЕНТ
    Public Function OpenDocument(name As String)

        WorkBooks = oExcel.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, Nothing, oExcel, Nothing)
        WorkBook = WorkBooks.GetType().InvokeMember("Open", BindingFlags.InvokeMethod, Nothing, WorkBooks, New Object() {name, True})
        WorkSheets = WorkBook.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, Nothing, WorkBook, Nothing)
        WorkSheet = WorkSheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, Nothing, WorkSheets, New Object() {1})
        '' // Range = WorkSheet.GetType().InvokeMember("Range",BindingFlags.GetProperty,null,WorkSheet,new object[1] { "A1" });
    End Function


    ' // НОВЫЙ ДОКУМЕНТ
    Public Function NewDocument()

        WorkBooks = oExcel.GetType().InvokeMember("Workbooks", BindingFlags.GetProperty, Nothing, oExcel, Nothing)
        WorkBook = WorkBooks.GetType().InvokeMember("Add", BindingFlags.InvokeMethod, Nothing, WorkBooks, Nothing)
        WorkSheets = WorkBook.GetType().InvokeMember("Worksheets", BindingFlags.GetProperty, Nothing, WorkBook, Nothing)
        WorkSheet = WorkSheets.GetType().InvokeMember("Item", BindingFlags.GetProperty, Nothing, WorkSheets, New Object() {1})
        Range = WorkSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, Nothing, WorkSheet, New Object() {"A1"})
    End Function



    '// ЗАПИСАТЬ ЗНАЧЕНИЕ В ЯЧЕЙКУ
    Public Sub SetValue(range As String, value As String)

        Dim Rrange = WorkSheet.GetType().InvokeMember("Range", BindingFlags.GetProperty, Nothing, WorkSheet, New Object() {range})
        Rrange.GetType().InvokeMember("Value", BindingFlags.SetProperty, Nothing, Rrange, New Object() {value})
    End Sub


    Public WriteOnly Property Visible() As Boolean

        Set(ByVal value As Boolean)

            If False = value Then

                oExcel.GetType().InvokeMember("Visible", BindingFlags.SetProperty, Nothing, oExcel, New Object() {False})

            Else
                oExcel.GetType().InvokeMember("Visible", BindingFlags.SetProperty, Nothing, oExcel, New Object() {True})

            End If
        End Set
    End Property

      



End Class





Потом создайте форму с кнопкой, и в обработчике нажатия на кнопку:


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Public Class Form1

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

        Dim currentEx As New ExcelExpress

        currentEx.NewDocument()

        currentEx.SetValue("A1", "erwerwerw")


        currentEx.Visible = True


    End Sub
End Class




Добавляйте свою логику заполнения документа.

Все остальные функции для работы с Экселом - можно добавить по мере надобности.

:-)
...
Рейтинг: 0 / 0
11.08.2014, 19:03
    #38717592
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
D129,

Мне нужно скопировать данные из этой таблицы на сайте в элемент datagridview
...
Рейтинг: 0 / 0
11.08.2014, 19:04
    #38717593
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visak,
...
Рейтинг: 0 / 0
11.08.2014, 19:04
    #38717594
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visak,

в этот элемент
...
Рейтинг: 0 / 0
11.08.2014, 19:05
    #38717595
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visak,
Примерно так
...
Рейтинг: 0 / 0
11.08.2014, 19:19
    #38717607
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visak,

Так вам и эксель не нужен?
А в базу данных этого сайта случайно не обнаружится доступ?



авторМне нужно скопировать данные из этой таблицы на сайте в элемент datagridview

Это тоже знаю, но давайте завтра. Кушать хочется уже.
:-)

Если вы все равно VB не знаете - учили бы сразу Шарп...
А то заставили меня гуглить, как конструктор в VB писать....

:-(
...
Рейтинг: 0 / 0
11.08.2014, 19:27
    #38717609
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
D129, Буду ждать, а то я голову сломал, как вставить данные из таблицы в DataGridview, Приятного аппетита тебе =)
...
Рейтинг: 0 / 0
11.08.2014, 19:42
    #38717618
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
D129, Если, что вот ссылка на сайт http://www.minfin.ru/ru/accounting/reestr_audit/auditors/index.php?from4=1
...
Рейтинг: 0 / 0
11.08.2014, 21:25
    #38717669
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visak,
Данные вставляются не в DataGridView, а в DataTable, который "присоединён" к DataGridView.

Парсинг таблицы из HTML кода уже получилось соорудить?
...
Рейтинг: 0 / 0
11.08.2014, 21:47
    #38717680
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Alex Kuznetsov, парсинг таблицы еще не получилось соорудить.
Почему то думал, что данные вставляются в DataGridView...
...
Рейтинг: 0 / 0
11.08.2014, 22:00
    #38717682
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
visak... парсинг таблицы еще не получилось соорудить.Для начала надо с этим разобраться...

visakПочему то думал, что данные вставляются в DataGridView... А почитать в MSDN? Данные действительно можно вставлять в DataGridView, но потом-то Вы что с ними делать будете? Просто покажете и всё?
...
Рейтинг: 0 / 0
11.08.2014, 22:04
    #38717683
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Alex Kuznetsov, Можете показать на примере?
...
Рейтинг: 0 / 0
11.08.2014, 22:24
    #38717687
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Spartak19Alex Kuznetsov, Можете показать на примере?Что показать?
...
Рейтинг: 0 / 0
11.08.2014, 22:28
    #38717689
Spartak19
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Alex Kuznetsov,
Парсинг хотя бы одной строки в Datagrid через DataTable
...
Рейтинг: 0 / 0
11.08.2014, 22:49
    #38717694
Alex Kuznetsov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Spartak19Alex Kuznetsov,
Парсинг хотя бы одной строки в Datagrid через DataTable
"В лоб" алгоритм следующий:
1. Создать объект класса DataTable
2. Создать в этом объекте столбцы
3. Получить HTML страницу как одну строку ( поизучайте возможности )
4. Найти вхождение нужного тега, думаю что это будет
Код: plaintext
<table class="table tbl_1">
5. От найденной позиции в цикле "шуровать" по тегам <tr class="row_org">...</tr>
6. Для каждой новой "строки" <tr> создать строку в объекте класса DataTable
7. В каждой "строке" искать теги <td>...</td> и их "содержимое" копировать в соответствующее поле объекта класса DataRow
8. "Присоединить" DataTable к DataGridView используя хотя-бы метод SetDataBinding

Ежели не ждать чудес, а самому посмотреть документацию по классу DataTable, то там половина из того, что Вам нужно уже есть...
...
Рейтинг: 0 / 0
12.08.2014, 00:02
    #38717716
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Зачем 3 одинаковые темы? Неужто Spartak19 и visak - разные люди? Совсем не верится...

1) Для скачки таблицы с текущей страницы ясно же сказали:
WebBrowser.Document.GetElementsByTagName("TABLE").Cast<HtmlElement>().First(el => el.className=="значение атрибута class").GetElementsByTagName("TR") и далее работаете с коллекцией строк как хотите

2) Далее, создаете класс с любым названием, например Cortage и нужными полями (какие именно нужны из таблицы на сайте)

3) Из полученной коллекции строк делаете List<Cortage> (то есть просто заполняете полученными значениями)

4) DataGridView.DataSource = new BindingList<Cortage>(сюда список List<Cortage>)
...
Рейтинг: 0 / 0
12.08.2014, 14:10
    #38718200
visak
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск и вставка конкретной таблицы в VB 2010
Arm79, Совершенно верно, мы разные люди, просто похожи темы. Пробую, пробую, не получается, то ли руки кривые, то ли не понимаю =).
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и вставка конкретной таблицы в VB 2010 / 25 сообщений из 57, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]