powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и вставка конкретной таблицы в VB 2010
25 сообщений из 57, страница 1 из 3
Поиск и вставка конкретной таблицы в VB 2010
    #38717249
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени. Есть программный код на 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
Поиск и вставка конкретной таблицы в VB 2010
    #38717429
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
visak,

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

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

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


Код: 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
Поиск и вставка конкретной таблицы в VB 2010
    #38717592
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129,

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

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

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



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

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

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

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

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

visakПочему то думал, что данные вставляются в DataGridView... А почитать в MSDN? Данные действительно можно вставлять в DataGridView, но потом-то Вы что с ними делать будете? Просто покажете и всё?
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38717683
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov, Можете показать на примере?
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38717687
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spartak19Alex Kuznetsov, Можете показать на примере?Что показать?
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38717689
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov,
Парсинг хотя бы одной строки в Datagrid через DataTable
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38717694
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Поиск и вставка конкретной таблицы в VB 2010
    #38717716
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем 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
Поиск и вставка конкретной таблицы в VB 2010
    #38718200
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, Совершенно верно, мы разные люди, просто похожи темы. Пробую, пробую, не получается, то ли руки кривые, то ли не понимаю =).
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 1 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и вставка конкретной таблицы в VB 2010
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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