http://yazilim.cevapsitesi.com/Sorular/1078/webbrowser-icindeki-sayfada-bulunan-tablodaki-verileri-veritabanina-kaydetmek Burdaki soruyu inceledim çokçada uğraşmama rağmen bir türlü çözüm bulamadım. öncelikle çekmek istediğim tablonun id ve name değerleri sürekli değişiyor. Çünkü tablo bir sorgulamanın sonucunda div içinde açılıyor. Referans olarak bulabildiğim tek değer tablonun html element collectiondaki sırası. Bu hiç değişmiyor.
System.Windows.Forms.HtmlDocument doc = browser.Document;
HtmlElementCollection elems = doc.GetElementsByTagName("table");
HtmlElement a = elems[5];
a elementinin düzeltilmiş hali
...<TBODY>\r\n
<TR>\r\n
1 <TH class=bslkK><INPUT onclick=\"selectAll(this); beyannameIs
lemButonlariniDuzenle(this.form);\" id=hepsi title=\"Bu sayfadaki tüm beyannameleri seç\" type=checkbox name=hepsi></TH>\r\n
<TH class=bslkK>Beyanname Türü</TH>\r\n
<TH class=bslkK>TC Kimlik Numarası / Vergi Kimlik Numarası</TH>\r\n
<TH class=bslkK>Ad Soyad/Unvan(*)</TH>\r\n
<TH class=bslkK>Vergi Dairesi / Malmüdürlüğü</TH>\r\n
<TH class=bslkK>Vergilendirme Dönemi</TH>\r\n
<TH class=bslkK>Şube No</TH>\r\n
<TH class=bslkK>Durumu</TH>\r\n
1 <TH class=bslkK align=left>\r\n
<TABLE>\r\n
<TBODY>\r\n
<TR>\r\n
<TD style=\"WIDTH: 17px\" align=center><IMG src=\"https://ebeyanname.gib.gov.tr/images/ico_msg.gif\"></TD>\r\n
<TD></TD>\r\n
<TD></TD>\r\n
<TD></TD>
</TR>
</TBODY>
</TABLE>
</TH>
</TR>\r\n
<SCRIPT type=text/javascript>var beyannameTipleri = [];</SCRIPT>\r\n\r\n
<SCRIPT>beyannameTipleri['pty'] = 'KDV1';\n\n</SCRIPT>\r\n\r\n
<TR id=row1pty title=\"DBS_12345678_1_4007 26.07.2019 - 14:58:45\" class=blAG>\r\n
<TD id=checkboxTDpty align=center></TD>\r\n
<TD>KDV1</TD>\r\n
<TD align=left>12345678912</TD>\r\n
<TD>name surname</TD>\r\n
<TD align=left>suranın dairesi</TD>\r\n
<TD align=center>06/2019-06/2019</TD>\r\n
<TD align=center>Merkez</TD>\r\n
<TD id=durumTDpty><IMG src=\"https://ebeyanname.gib.gov.tr/images/ok.gif\"> Onaylandı</TD>\r\n
<TD>\r\n
<TABLE>\r\n
<TBODY>\r\n
<TR>\r\n
<TD style=\"WIDTH: 17px\" align=center></TD>\r\n
<TD style=\"WIDTH: 17px\" align=center><IMG onclick=\"beyannameGoruntule('pty',false,false)\" title=\"Beyannameyi PDF Formatında görüntülemek için tıklayınız.\" style=\"CURSOR: pointer\" src=\"https://ebeyanname.gib.gov.tr/images/pdf_b.gif\"> </TD>\r\n
<TD id=thkPDFpty style=\"WIDTH: 17px\" align=center><IMG onclick=\"tahakkukGoruntule('pty','r81',false,false)\" title=\"Tahakkuku PDF Formatında görüntülemek için tıklayınız.\" style=\"CURSOR: pointer\" src=\"https://ebeyanname.gib.gov.tr/images/pdf_t.gif\"> </TD>\r\n
<TD id=pty style=\"WIDTH: 17px\" align=center></TD>
</TR>
</TBODY>
</TABLE>
</TD>
</TR>\r\n
</TBODY>
ben bu tabloyu datatableye ordanda datagridview e almak istiyorum.
... DataTable dt = new DataTable();
dt.Clear();
foreach (HtmlElement coll in a.GetElementsByTagName(tagName: "th"))
{
try
{
dt.Columns.Add(coll.InnerText);
}
catch
{
}
}
burdan columns ları aldım başında ve sonunda 1. kod bloğunda 1 ile işaretlediğim yerleri boş sütün olarak ekliyor.
ancak satırları eklemeye kalktığımda "tr" ile ayırdığım için her satırın son hücresinin içindeki ayrı tablo yüzünden hata alıyorum.
... int[] Hucrn = new int[] {1, 2, 3, 4, 5, 6, 7, 8};
HtmlElementCollection satirlar = a.GetElementsByTagName("tr");
HtmlElementCollection hucreler;
DataRow kayit;
for (int i = 2; i < satirlar.Count; i++)
{
kayit = dt.NewRow();
hucreler = satirlar[i].GetElementsByTagName("td");
for (int j = 0; j < Hucrn.Length; j++)
{
int hucreNo = Hucrn[j];
kayit[j] = hucreler[hucreNo].InnerText;
}
dt.Rows.Add(kayit);
dataGridView1.DataSource = dt;
}
İç içe geçmiş olan tablodan verileri nasıl çekebilirim.
Yardımlarınız için şimdiden teşekkür ederim.