powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и вставка конкретной таблицы в VB 2010
25 сообщений из 57, страница 2 из 3
Поиск и вставка конкретной таблицы в VB 2010
    #38718259
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но вы же ничего не попробовали?

Код: c#
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.
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();

            webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
            webBrowser1.Navigate("http://www.minfin.ru/ru/accounting/reestr_audit/auditors/index.php?from4=1");
        }

        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            var browser = sender as WebBrowser;

            if (null == browser) return;

            HtmlElement table = browser.Document.GetElementsByTagName("TABLE").Cast<HtmlElement>().First(el => el.GetAttribute("className") == "table tbl_1");
            List<HtmlElement> rows = table.GetElementsByTagName("TR").Cast<HtmlElement>().Where(el => el.GetAttribute("className") == "row_org").ToList();

            dataGridView1.DataSource = new BindingList<Cortage>(
                rows.Select(
                    el =>
                        {
                            List<HtmlElement> rawData = el.GetElementsByTagName("TD").Cast<HtmlElement>().ToList();
                            return new Cortage()
                                {
                                    ФамилияИмяОтчество = rawData[0].InnerText,
                                    НомерАттестата = rawData[1].InnerText,
                                    ОРНЗ = rawData[2].InnerText,
                                    ОГРН = rawData[3].InnerText,
                                    СаморегулируемаяОрганизацияАудиторов = rawData[4].InnerText,
                                    СубъектРоссийскойФедерации = rawData[5].InnerText
                                };
                        }).ToList());
        }
    }

    public class Cortage
    {
        public string ФамилияИмяОтчество { get; set; }
        public string НомерАттестата { get; set; }
        public string ОРНЗ { get; set; }
        public string ОГРН { get; set; }
        public string СаморегулируемаяОрганизацияАудиторов { get; set; }
        public string СубъектРоссийскойФедерации { get; set; }
    }
}
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718395
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79, Я так понимаю, это Visual Basic.Net, а мне необходим именно Visual Basic 2010 Express(так как он бесплатный).
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718400
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Visual Basic 2010 Express - это и есть .NET
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718420
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One,
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718421
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spartak19,

У меня тоже не выходит((
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718424
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем это мне?
найдите уже наконец в сети конвертор C#>VB.NET
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718427
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129,

Куда пропал? Нам нужна твоя VB2010 express помощь)))
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718498
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visakArm79, Я так понимаю, это Visual Basic.Net, а мне необходим именно Visual Basic 2010 Express(так как он бесплатный).
Может, вы хоть учебники то почитаете, прежде чем что-то пытаться сделать?

1) Это C#
2) Конвертеры: http://yandex.ru/yandsearch?text=c# to vb.net converter&from=fx3&clid=1909644
3) Прикладываю архив с проектом. Надеюсь, разархивировать то сможете?
4) Spartak19, не надо пользоваться клонами. С трудом себе представляю ситуацию, что на форуме будет два пользователя с одинаковым заданием, одинаковыми затруднениями, одинаковым инструментом, одинаковым стилем речи и одинаковым уровнем знаний.

Я вам привел лишь пример, как парсить HTML через WebBrowser. Это демонстрация. Там нет даже обработки исключительных ситуаций.
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718577
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spartak19D129,

Куда пропал? Нам нужна твоя VB2010 express помощь)))
Работать заставили капиталисты проклятые.
:-)

На любой язык дотнета хорошо NET Reflector переводит.
Но только если сборка есть готовая - которая дллка или экзешник.
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718582
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Spartak 19 , Arm 79 , D 129

сначала думал - простые числа, не, не все. Но что-то тут с девяткой явно связано.
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718589
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Spartak 19 , Arm 79 , D 129

сначала думал - простые числа, не, не все. Но что-то тут с девяткой явно связано.


У меня все просто :-) 1979 г.р.
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718681
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129, Просто видишь, на VBA эту задачу решили легко, а вот VB - язык совершенно уже другой, поэтому нужна твоя помощь :)
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718766
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79,
Фигасе ты их сразу в COM взаимодействие + LINQ запульнул... Это-же для неокрепших умов равнозначно выносу мозга и непониманию базовых основ и принципов...

Т.е. получится, что люди, не понимая того что и как на самом деле делается, просто будут копиманками...

Уж лучше пусть по полочкам пройдутся по всем фазам, а потом уже и к LINQ и прочим лямбдам, анонимным методам, автоклассам и т.д. подключаются...
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718788
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovФигасе ты их сразу в COM взаимодействие
Какой Com? Я ж не МСУ неокрепшие мозги взрывать :-) WebBrowser в стандартной панели Toolbox находится.
Ну а LINQ - буду я из-за них страдать, выписывая руками циклы. Я, кстати, в преподаватели не нанимался. Хотя мысль интересная... Может, действительно подработку себе небольшую организовать? :-)

В качестве демонстрашки проект пойдет.

Было бы хуже, если бы я дал пример на XPath (HtmlAgilityPack) или обрабатывал регэксами голый хтмл
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38718795
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Alex KuznetsovФигасе ты их сразу в COM взаимодействие
Какой Com? Я ж не МСУ неокрепшие мозги взрывать :-) WebBrowser в стандартной панели Toolbox находится.
...Компонент WebBrowser как раз и есть обёртка, которая через COM+ взаимодействие встраивает ишачка в приложение...
Ну да это ладно, пусть у ребяток от LINQ мозг покипит трохи, потом пойдут доку читать...

PS. Я конечно ничего плохого сказать не хочу, но меня воротит от синтаксиса VB, а посему предпочитаю си диез, это просто IMHO, а не разжигание холивара...
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38719240
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Spartak 19 , Arm 79 , D 129

сначала думал - простые числа, не, не все. Но что-то тут с девяткой явно связано.

И у меня просто - Д - это первая буква имени.
А 129 - у меня во взводе связи был личный позывной такой.
Когда "вышел в сеть" - решил везде использовать как ник.
:-)
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38719444
Spartak19
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
visak,

Ты разобрался?
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38719515
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Spartak19, нет, видимо руки кривые)
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38719548
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visak, Spartak19,
когда уже начнёте читать то о чём Вам пишут?
Открывайте MSDN и читайте до просветления...
Не ждите готовых ответов, ищите сами, направление Вам уже дали и не один раз...

Для парсинга строки можно использовать множество методов, начиная c банального IndexOf ...
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38719597
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visakSpartak19, нет, видимо руки кривые)
При чем здесь руки?

Вы просто недооценили обьем знаний, которые требуются для программирования на дотнет.

В VBA - для вас подготовлены уже готовые компоненты - типа браузера или документа эксель, А в дотнет - это надо уметь самому "подключать"... И понимать что такое обьекты, чем они отличаются от класса и тому подобное.

Судя по скрин шотам - вы не понимаете, почему скопированный код не компилируется.
Не зная, что такое неймспейс и partial класс - не починить.

Ну если хотябы понимаете, что такое метод - то копируйте маленькими кусочками в код, который у вас запускается.

Самый простой способ создать запускаемый код (свой) - это создать аппликацию типа WinForm, поместить на ней простую кнопку, и сделать на этой кнопке даблклик.

Сгенерируется обработчик нажатия кнопки - вот в него и копируйте примеры....

Скажем - обьявить и создать обьект веббраузера, вызвать его функцию navigate с нужным адресом, выйти из обработчика...
и ага, нужно дать время браузеру перейти на страницу и загрузить ее.
Значит добавляем еще одну кнопку, и уже по нажатию на нее - ищем в обьекте (раз, и походу выучили что такое область видимости переменных и переменные уровня класса :-) ) табличку. Находим, создаем грид и...

Счастливого вам творчества.

:-)

Дальше решаем проблемы по мере поступления.
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38721596
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
D129, Arm79,


Код: html
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.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Linq
Imports System.Windows.Forms
Namespace WindowsFormsApplication1




    Partial Public Class Form1
        Inherits Form
        Public Sub New()
            InitializeComponent()

            AddHandler WebBrowser1.DocumentCompleted, AddressOf webBrowser1_DocumentCompleted
            WebBrowser1.Navigate("http://www.minfin.ru/ru/accounting/reestr_audit/auditors/index.php?from4=1")
        End Sub

        Private Sub webBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs)
            Dim browser = TryCast(sender, WebBrowser)

            If browser Is Nothing Then
                Return
            End If

            Dim table As HtmlElement = browser.Document.GetElementsByTagName("TABLE").Cast(Of HtmlElement)().First(Function(el) el.GetAttribute("className") = "table tbl_1")
            Dim rows As List(Of HtmlElement) = table.GetElementsByTagName("TR").Cast(Of HtmlElement)().Where(Function(el) el.GetAttribute("className") = "row_org").ToList()

            DataGridView1.DataSource = New BindingList(Of Cortage)(rows.[Select](Function(el)
                                                                                     Dim rawData As List(Of HtmlElement) = el.GetElementsByTagName("TD").Cast(Of HtmlElement)().ToList()
                                                                                     Return New Cortage() With { _
                                                                                      .ФамилияИмяОтчество = rawData(0).InnerText, _
                                                                                       .НомерАттестата = rawData(1).InnerText, _
                                                                                       .ОРНЗ = rawData(2).InnerText, _
                                                                                       .ОГРН = rawData(3).InnerText, _
                                                                                       .СаморегулируемаяОрганизацияАудиторов = rawData(4).InnerText, _
                                                                                       .СубъектРоссийскойФедерации = rawData(5).InnerText _
                                                                                     }

                                                                                 End Function).ToList())
        End Sub
        Friend WithEvents DataGridView1 As System.Windows.Forms.DataGridView
        Friend WithEvents WebBrowser1 As System.Windows.Forms.WebBrowser

        Private Sub InitializeComponent()
            Me.DataGridView1 = New System.Windows.Forms.DataGridView()
            Me.WebBrowser1 = New System.Windows.Forms.WebBrowser()
            CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
            Me.SuspendLayout()
            '
            'DataGridView1
            '
            Me.DataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
            Me.DataGridView1.Location = New System.Drawing.Point(540, 51)
            Me.DataGridView1.Name = "DataGridView1"
            Me.DataGridView1.Size = New System.Drawing.Size(240, 348)
            Me.DataGridView1.TabIndex = 0
            '
            'WebBrowser1
            '
            Me.WebBrowser1.Location = New System.Drawing.Point(77, 51)
            Me.WebBrowser1.MinimumSize = New System.Drawing.Size(20, 20)
            Me.WebBrowser1.Name = "WebBrowser1"
            Me.WebBrowser1.Size = New System.Drawing.Size(250, 383)
            Me.WebBrowser1.TabIndex = 1
            '
            'Form1
            '
            Me.ClientSize = New System.Drawing.Size(906, 507)
            Me.Controls.Add(Me.WebBrowser1)
            Me.Controls.Add(Me.DataGridView1)
            Me.Name = "Form1"
            CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).EndInit()
            Me.ResumeLayout(False)

        End Sub

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub
    End Class

    Public Class Cortage
        Public Property ФамилияИмяОтчество() As String
            Get
                Return m_ФамилияИмяОтчество
            End Get
            Set(ByVal value As String)
                m_ФамилияИмяОтчество = value
            End Set
        End Property
        Private m_ФамилияИмяОтчество As String
        Public Property НомерАттестата() As String
            Get
                Return m_НомерАттестата
            End Get
            Set(ByVal value As String)
                m_НомерАттестата = value
            End Set
        End Property
        Private m_НомерАттестата As String
        Public Property ОРНЗ() As String
            Get
                Return m_ОРНЗ
            End Get
            Set(ByVal value As String)
                m_ОРНЗ = value
            End Set
        End Property
        Private m_ОРНЗ As String
        Public Property ОГРН() As String
            Get
                Return m_ОГРН
            End Get
            Set(ByVal value As String)
                m_ОГРН = value
            End Set
        End Property
        Private m_ОГРН As String
        Public Property СаморегулируемаяОрганизацияАудиторов() As String
            Get
                Return m_СаморегулируемаяОрганизацияАудиторов
            End Get
            Set(ByVal value As String)
                m_СаморегулируемаяОрганизацияАудиторов = value
            End Set
        End Property
        Private m_СаморегулируемаяОрганизацияАудиторов As String
        Public Property СубъектРоссийскойФедерации() As String
            Get
                Return m_СубъектРоссийскойФедерации
            End Get
            Set(ByVal value As String)
                m_СубъектРоссийскойФедерации = value
            End Set
        End Property
        Private m_СубъектРоссийскойФедерации As String
    End Class
End Namespace




Всё работает. Но при запуске приложения появляется новая форма, как запустить, и почему так не приложу ума
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38721597
visak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А при запуская появляется новая форма и всё.
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38721788
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visak,
Вот честно, за получение страницы и её парсинг в конструкторе, я бы руки отшибал.
Нельзя что-ли вынести это в отдельный поток, который запускается по нажатию кнопки?
Да ладно в поток, просто по нажатию кнопки...
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38721867
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovНельзя что-ли вынести это в отдельный поток, который запускается по нажатию кнопки?
Да ладно в поток, просто по нажатию кнопки...

Какой еще поток ?!! , сбавьте темп.
:-)
...
Рейтинг: 0 / 0
Поиск и вставка конкретной таблицы в VB 2010
    #38721868
Фотография D129
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
visakА при запуская появляется новая форма и всё.

У формы есть такой эвент - FormLoaded.

Перенесите обращение к веб сайту туда, в обработчик этого эвента.
Конструктор формы не может ее подготовить полностью, так как форма - не примитивный класс, а визуальный компонент.
Но вот когда вызывается FormLoaded - тогда уже точно все готово к работе.
...
Рейтинг: 0 / 0
25 сообщений из 57, страница 2 из 3
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Поиск и вставка конкретной таблицы в VB 2010
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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