Uzun zamandır yazmak isteyipte yazamadığım bir konuyu paylaşmak istiyorum. C# ile text dosyaları içerisindeki verileri datagride aktarma işlemini nasıl yapacağımızdan bahsedeceğim. Fakat anlatmak istediğim konu iostream metodu ile ayraçları kullanarak verileri ayırıp çekmek değil. Bunun hakkında en az bin tane arama sonucu görebilirsiniz arama motorlarında. Anlatmak istediğim nokta eğer text dosyasındaki verileriniz belli bir sıraya ve düzene göre kayıtlı ise yani belli karakter aralığına göre kayıtlı ise bu kayıtları aynı sıraya göre datagridview içinde aynı kolonlarda gösterebilmek. ne demek istediğimi alttaki örnek'e bakarak daha iyi anlayabilirsiniz.
11.02.2011 07:59:57 Ali Yılmaz
11.02.2011 08:00:25 Veli Korkmaz
Yukarıdaki örnektede görüldüğü üzere Tarih, saat ve isimleri gösteren 3 adet sütun mevcut ve kayıtlar belli düzene ve karakter aralığına göre kayıtlı. şimdi gelelim kodumuzu yazmaya.
öncelikle formumuzun üst kısmına gerekli kütüphaneyi ekleyelim.
using System.IO;
daha sonra text dosyası ile bağlantı yolunu yazalım.
StreamReader inputstream = new StreamReader("deneme.txt", Encoding.GetEncoding("windows-1254"));
burada dosya isminden sonra yazılan Encoding ile başlayan kısım Türkçe karakterleri düzgün gösterebilmek için.
kod:
string s;
s = inputstream.ReadLine();
int i = 0;
while ((s = inputstream.ReadLine()) != null)
{
if (s != " ")
{
dataGridView1.Rows.Add();
dataGridView1.Rows[i].Cells[0].Value = s.Substring(0, 10).Trim();
dataGridView1.Rows[i].Cells[1].Value = s.Substring(11, 8).Trim();
i = i + 1;
}
}
inputstream.Close();
Kodu kısaca açıklayalım;
s isminde bir değişken tanımladık. daha sonra döngü için gerekli olan bir integer tanımladık. s değişkenini inputstream.readline() ile okunan verileri eşleştirdik ve while döngüsü ile s değişkeni içerisinde veri olduğu sürece döndürmeye devam etsin dedik.
while döngüsü içerisine de datagridview'in ilgili kolonuna yazdırmak istediğimiz verileri ayırarak görüntülemesini sağladık. "s.Substring(0, 10).Trim();" kodu 0. karakterden başlayarak 10 tane karakter'i datagridview'deki ilk kolona("Cells[0].Value") yazılmasını sağlıyor. (Boşlukların da bir karakter olduğunu unutmayalım)
i'nin ne anlama geldiğini zaten tahmin etmişsinizdir ama yinede özetlersek döngü boyunca satır satır okuduğu için her bir satırı i ile tanımladık ve 1 arttırarak okunan her yeni satırı datagridview içerisinde yeni satırda görünmesini sağladık. Eğer biz böyle bir tanımlama yapmasaydık her okunan satır datagridview içinde aynı satıra yazılacaktı ve dolayısıyla en son okunan satır görüntülenecekti. Yani datagridview içinde tek bir satırınız olmuş olacaktı. Tabi datagridview1.rows.add() özelliği ile önce satır eklediğimizi unutmayalım. ve son olarak açmış olduğumuz bağlantı yolunu inputstream.close() ile kapatıyoruz.
Elimden geldiğince basit şekilde anlatmaya çalıştım. Umarım faydalı olmuştur. İyi Çalışmalar.
Hiç yorum yok:
Yorum Gönder