C# SaveFileDialog Kullanımı – Tüm Özellikleri
Merhaba arkadaşlar bu dersimizde C# SaveFileDialog Kullanımı ‘nı Tüm Özellikleri ile göreceğiz. Elimden geldiğince tüm detayları ile birlikte vermeye çalışacağım. Burada SaveFileDialog için gereksiz olan bir kaç özelliği es geçeceğim. Gerçekten çok gereksiz özellikler. Örn MultiSelect özelliği… Kayıt yaparken MultiSelect özelliği gerçekten gereksiz.
C# SaveFileDialog Kullanımı
SaveFileDialog, bize bir dialog ekranı ile dosya kaydetme işlemi yapmamızı sağlar. Bu demek değil ki kayıt işlemini yapacaktır. Kayıt etme kodlarını biz yazacağız. Bu özellik bize dosya yolu seçmemiz konusunda yardımcı olacaktır. İşlemleri yine biz yapacağız.
SaveFileDialog save = new SaveFileDialog(); save.ShowDialog();
Yukarıdaki kodlarda gördüğünüz gibi SaveFileDialog ekranını çağırmak bu kadar. Ancak sadece bu iki satır işimizi çözmüyor. Şimdi özelliklerine bakalım.
SaveFileDialog, Visual Studio’da ToolBox’tan nesne olarak da forma atılabilir. Ancak ben bu zamana kadar hiç oradan kullanmadım. Zaten Form üzerinde bir yer kaplamıyor. Formda yer kaplayan bir nesne olmadığından dolayı kod ile oluşturmak daha kolay geliyor bana…
Özellikleri anlatırken, sona doğru tüm özellikleri içeren hali olacak. Yani her özellikle kod bloğumuza özellikleri ekleyeceğiz.
C# SaveFileDialog OverwritePrompt – Üzerine Yazma
Varsayılan olarak seçilen dosyada dosyamızı kaydetmek istediğimiz bir dosya varsa üzerine yazmak için onay mesajı çıkarır. Eğer bu onay mesajı çıkmasın direk üzerine yazsın derseniz kodlarımız aşağıdaki gibi olmalıdır.
SaveFileDialog save = new SaveFileDialog(); save.OverwritePrompt = false; save.ShowDialog();
C# SaveFileDialog CreatePrompt – Oluşturma Onayı
Varsayılan olarak, dizinde, yazdığımız dosya isminde bir dosya yoksa dosya oluşturulur. Ancak biz yine de bir onay mesajı çıkarsın, onay verdikten sonra dosya kaydedilsin dersek kodlarımız aşağıdaki gibi olmalıdır.
SaveFileDialog save = new SaveFileDialog(); save.OverwritePrompt = false; save.CreatePrompt = true; save.ShowDialog();
C# SaveFileDialog InitialDirectory – Başlangıç Klasörü
Initial Directory özelliği SaveFileDialog açıldığında hangi klasörü göstereceğini belirliyoruz.
SaveFileDialog save = new SaveFileDialog(); save.OverwritePrompt = false; save.CreatePrompt = true; save.InitialDirectory = @"D:\"; save.ShowDialog();
Yukarıdaki kodlarda gördüğünüz gibi, SaveFileDialog açıldığında direk D sürücüsünün içinde odaklanır. Buradan yine de başka bir klasöre geçilebilir.
C# SaveFileDialog Title – Başlık
Açılan dialog penceresinin başlığını bu özellikle belirleyebiliriz.
SaveFileDialog save = new SaveFileDialog(); save.OverwritePrompt = false; save.CreatePrompt = true; save.InitialDirectory = @"D:\"; save.Title = "Excel Dosyaları"; save.ShowDialog();
C# SaveFileDialog DefaultExtn – Varsayılan Uzantı
Varsayılan dosta uzantısını temsil eder.
SaveFileDialog save = new SaveFileDialog(); save.OverwritePrompt = false; save.CreatePrompt = true; save.InitialDirectory = @"D:\"; save.Title = "Excel Dosyaları"; save..DefaultExt = "xlsx"; save.ShowDialog();
C# SaveFileDialog Filter – Filtre
Dialog ekranı açıldığında dosya olarak görebileceğiniz dosyaları belirler. Örneğin filtremizi xlsx olarak ayarlarsak, pencere açıldığında klasörleri gezerken sadece xlsx uzantılı dosyaları görebiliriz. Diğerleri görünmeyecektir.
SaveFileDialog save = new SaveFileDialog(); save.OverwritePrompt = false; save.CreatePrompt = true; save.InitialDirectory = @"D:\"; save.Title = "Excel Dosyaları"; save..DefaultExt = "xlsx"; save.Filter = "xlsx Dosyaları (*.xlsx)|*.xlsx|Tüm Dosyalar(*.*)|*.*"; save.ShowDialog();
Şimdi tüm özelliklerimizi verdikten sonra diğer işlemlerimize geçelim. Burada vereceğimiz işlemler kaydedilen dosyanın adını, yolunu alma ve pencereye onay verildiyse yapılacak işlemler gibi işlemler olacak.
Aşağıda, bir textbox’ta yazılmış olan metini bir txt belgesine yazmak ve o belgeyi kaydetme işlemini görüyorsunuz. Burada açılan pencerede OK / Tamam’ a tıkladığımızda işlemler gerçekleşecek. İptal edersek kayıt işlemi gerçekleşmez.
SaveFileDialog save = new SaveFileDialog(); save.OverwritePrompt = false; save.CreatePrompt = true; save.InitialDirectory = @"D:\"; save.Title = "Metin Dosyaları"; save..DefaultExt = "txt"; save.Filter = "txt Dosyaları (*.txt)|*.txt|Tüm Dosyalar(*.*)|*.*"; if (save.ShowDialog() == DialogResult.OK) { StreamWriter Kayit = new StreamWriter(save.FileName); Kayit.WriteLine(textBox1.Text); Kayit.Close(); }
Şimdi bu kayıt işlemini gerçekleştirdikten sonra kaydettiğimiz dosyanın yolunu alıp başka bir textbox’a yazalım.
textBox2.Text = save.FileName;
Yukarıdaki satır ile de kaydettiğimiz dosyanın tam yolunu alabiliriz.
C# SaveFileDialog Kullanımı – Tüm Özellikleri dersimizde bu kadardı arkadaşlar. Diğer derslerimizde görüşmek üzere…
C Sharp Eğitim Seti eğitimi sayfasına gitmek için tıklayınız.
Derslerime özel olarak hazırladığım Github Projeme buradan ulaşabilirsiniz…
Takipte ve Sağlıcakla kalın.
save dialog program calışırken arka planda belirli dosyaya kayıt işlemi hakkında bilgi verirmisiniz
Merhaba Hocam ben acces de bulunan bilgileri görüntüleme butonu ile önce görüntüleyip sonra excele aktar butonu ile excele aktarıyorum fakat excel dosyasını projenın debug dosyasının için e kaydediyor ben bunu masaüstüne veya istediğim bir yere kaydedilmesini istiyorum. yardımcı olursanız çok sevinirim kodlar aşağıda ki gibidir.
using System;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Diagnostics;
using System.Collections.Generic;
using System.IO;
using OfficeOpenXml;
using System.Reflection;
using System.Linq;
using System.Data;
namespace Personel_Takip_1._0
{
[DebuggerDisplay(“{” + nameof(GetDebuggerDisplay) + “(),nq}”)]
public partial class Raporlar : Form
{
public Raporlar()
{
InitializeComponent();
}
OleDbConnection baglantı = new OleDbConnection(“Provider=Microsoft.Ace.OleDb.12.0;Data Source=Database1.accdb”);
OleDbCommand komut;
OleDbDataAdapter rpradtr;
System.Data.DataTable rprtablo = new System.Data.DataTable();
private void button1_Click(object sender, EventArgs e)
{
listele();
}
private void listele()
{
rprtablo.Clear();
baglantı.Open();
komut = new OleDbCommand(“select * from zaman”, baglantı);
rpradtr = new OleDbDataAdapter(komut);
rpradtr.Fill(rprtablo);
MyGrid.DataSource = rprtablo;
baglantı.Close();
}
private string GetDebuggerDisplay()
{
return ToString();
}
private void button2_Click_1(object sender, EventArgs e)
{
if (MyGrid.Rows.Count==0)
{
MessageBox.Show(“İndirilecek rapor bulunamadı”);
return;
}
List list = new List();
for (int i = 0; i < MyGrid.Rows.Count; i++)
{
RaporDto myObject = new RaporDto();
myObject.Isim = (string)MyGrid.Rows[i].Cells[0].Value; // Assuming the column is called "Id"
myObject.Tarih = MyGrid.Rows[i].Cells[1].Value?.ToString();
myObject.Saat = MyGrid.Rows[i].Cells[2].Value?.ToString();
list.Add(myObject);
}
var result = Export(list,true);
string fileName = "Personel Rapor-" + DateTime.Now.ToString("yyyy-dd-M–HH-mm");
var path =fileName + ".xlsx";
File.WriteAllBytes(path, result);
MessageBox.Show(path);
}
public class RaporDto
{
public string Isim { get; set; }
public string Tarih { get; set; }
public string Saat { get; set; }
}
///
/// Export
///
///
///
///
///
///
///
///
public byte[] Export(IList list,bool autoFitColumns = false) where T : class
{
byte[] byteArray;
using (var stream = new MemoryStream())
{
using (var package = new ExcelPackage(stream))
{
var workSheet = package.Workbook.Worksheets.Add(“Sheet1”);
LoadFromCollectionFiltered(workSheet.Cells, list);
workSheet.Row(1).Style.Font.Bold = true;
var i = 1;
foreach (var property in typeof(T).GetProperties().Where(x => x.PropertyType == typeof(string)))
{
var index = i++;
workSheet.Column(index).Style.Numberformat.Format = “@”;
}
if (autoFitColumns)
workSheet.Cells.AutoFitColumns();
package.Save();
stream.Position = 0;
byteArray = stream.ToArray();
}
}
return byteArray;
}
///
/// LoadFromCollectionFiltered
///
///
///
///
///
public ExcelRangeBase LoadFromCollectionFiltered(ExcelRange @this, IEnumerable collection) where T : class
{
MemberInfo[] membersToInclude = typeof(T)
.GetProperties(BindingFlags.Instance | BindingFlags.Public)
.Where(p => !Attribute.IsDefined(p, typeof(EpplusIgnore)))
.ToArray();
return @this.LoadFromCollection(collection, true,
OfficeOpenXml.Table.TableStyles.None,
BindingFlags.Instance | BindingFlags.Public,
membersToInclude);
}
///
/// EpplusIgnore
///
public class EpplusIgnore : Attribute { }
///
/// ColumnAttribute
///
[AttributeUsage(AttributeTargets.All)]
public class ColumnAttribute : Attribute
{
public int ColumnIndex { get; set; }
public ColumnAttribute(int column)
{
ColumnIndex = column;
}
}
}
}
Merhaba,
string fileName = "Personel Rapor-" + DateTime.Now.ToString("yyyy-dd-M–HH-mm");
Buradaki “Personel Rapor” önüne dosya yolu yazarsan o yola kaydeder. Aşağıdaki gibi.
string fileName = "C:\\klasoör adı\Personel Rapor-" + DateTime.Now.ToString("yyyy-dd-M–HH-mm");