Soran
C# DataGridView Kolondaki Tarihi Convert Etme

Genel Tartışma
-
Merhaba, Programda Grid içerisinde 5. kolonda tarihler var gridi excele aktama yaptığım zaman herşey yolunda fakat excelde tarih kısmına baktığım zaman metin olarak gözüküyor ve filtreleme yaparken tarihe göre sorun yaşıyorum gridde nasıl bir convert edebilirim de excele veriyi tarih formatında göndere bilirim teşekkür ederim. Yada başka bir çözüm yolu varmıdır.
- Değiştirilmiş Tür Kyamuran SalibryamMicrosoft contingent staff, Moderator 16 Aralık 2016 Cuma 13:45
Tüm Yanıtlar
-
-
Kod koymaya çalıştım fakat farklı alanlarda çok uzun olduğu için karışmasın diye koydum değer bana string olarak gözüküyor 01-01-2016 gibi bunu excele aktardığımdada bu şekilde aktarıyor ama hücre tipine metin olarak yapıştığı için filtrelemede istediğim şekilde gözükmüyor malesef gridde convert ederek tekrar yazdırsam sorunun düzeleceğini düşünüyorum
-
while (reader.Read())
{
model.Add(new KodModel
{Tarih = reader.IsDBNull(32) ? string.Empty : reader.GetString(32),
});
}
Classta Tarih kısmını Public string Tarih [get;set] olarak tanımlı bu kısmı datetime olarak yaptığımda bu seferde veri gelmiyor.
- Düzenleyen ahmt15 6 Aralık 2016 Salı 13:58
-
-
-
Modelinde string yapmissin anladigim. Orada DateTime? olarak degistirirsen:
model.Add(new KodModel { Tarih = (DateTime?)reader[32]; });
Ne guzel bir modelin var ve onu dolduruyorsun da, neden reader ile? Dogrudan Linq kullanarak yapsan olmuyor mu? Her neyse. Bence kaynaktan DateTime? olarak cekersen sorunun kalmaz. Ya da oraya dokunmayayim diyorsan Excel'e datagridden degil, dogrudan kaynaktan gonder. En kotu ihtimalle, DataGridden gondereceksen, bir List'te topla ve orada DateTime?'a cevir. Sonra codeplex EPPlus kutuphanesi ile Excel'e yaz (forumda N kere ornegi verildi).
Dogrudan kaynaktan Excel'e almak icin de, forumda daha once verilen QueryTables.Add ya da CopyFromRecordSet orneklerine bakabilirsin.
-
Verdiğiniz cevap için teşekkür ederim linq kullanmak istemedim çünkü sorgu sonucu yaklaşık olarak 1m satır geliyor bu şekilde daha hızlı ve doğru sonuç elde ediyorum. Değişkenin tipi datetime olarak dediğiniz gibi yaptığımda niye bilmiyorum program çalışıyor fakat sorgu sonucum gelmiyor. En doğrusuda dediğiniz gibi smalldatetime olarak gelen veriyi stringe ççevirmek başlıca hata ama öbür türlü sorgu sonucunu görüntüleyemiyorum.
-
Yada daha kolay ve basit bir yöntem ile şunuda yapabilirim şimdi aklıma geldi aşağıdaki kod ile excele gelen sonucu aktarıyorum griddeki. tarih kısmının geldiği kolon gridden string olarak gittiği için metin oluyor doğal olarak sonuç istediğim gibi görüntülenmiyor. exceli açtıkdan sonra tarihin geldiği kolonu (Örn. H kolonu) nu formatını tarihe çevirsem sorun düzelir diye düşünüyorum. Bu konuda yardımcı olabilecek yada bilgi olan varmı acaba.
saveFileDialog1.Filter = "SADECE XLSX Dosyaları (*.xlsx)|*.xlsx";
saveFileDialog1.InitialDirectory = "c:";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
var _Options = new DevExpress.XtraPrinting.XlsxExportOptions();
_Options.SheetName = ("Rapor");
DtgVeriSorguGorüntüle.ExportToXlsx(saveFileDialog1.FileName, _Options);
if (MessageBox.Show("Aktarılan dosyayı şimdi görmek ister misiniz?", "Excel dosyası", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
System.Diagnostics.Process.Start(saveFileDialog1.FileName);
}
} -
-
3 tane yöntem
1. H kolonunu seçin
replace komutu ile bütün "-" leri "/" ile değiştirin.
2. H2'den itibaren tüm tarihleri seçin. (F5,H2, Enter, CTRL+Aşağı ok)
bu seçimi yapınca excel otomatik string number/date çevrim sorusunu ufak bir kutuda getiriyor olmalı. Oradan convert edin
3. Date fonksiyonları ile başka bir kolonda tarihe çevirip eski yerine değer olarak kopyalayabilirsiniz.,
ek: Eğer gelen string dizisi boşluk içeriyor ise önce kolondaki boşlukları silin. (F5,H:H,enter,ctrl+H, boşluk,replace all)
http://pgnchess.com
http://dergikapaklari.com
- Düzenleyen Halil TAŞ 12 Aralık 2016 Pazartesi 08:04
-
Sonuc 1m satir diye Linq kullanmamak daha da garip olmus. O zaman DataTable daha da yavas bir cozum ama madem oyle istiyorsunuz oyle olsun. Yine de farketmez, modelinizde string kullanmayin, DateTime? kullanin. DateTime'in arayuzde gosterimi bir formata bakar.
-