none
Visual Studio ile Excel'den istediğim veriyi textboxlara yazdırma RRS feed

  • Soru

  • Merhaba,

    Elimde bir Excel dosyam var 4 sayfadan oluşan şifreli bir dosya. Visual Studio ile bir masaüstü uygulaması geliştirip bu excel dosyasına giriş yapılmasına gerek kalmaksızın textboxlara veri çekmek istiyorum.

    Örneğin 1. textboxta "4" yazıcam ve sonrasında excel dosyasının 1.sayfasındaki A sütununda bu 4 değerini bulup yanında istediğim sütunda bulunan diğer değerleri de bu formdaki diğer textboxlara yazdırmak istiyorum. 

    Buna benzer bir program yaptım ancak visual basic kodları ile aşağıda verdim. Sizden istediğim şeyler;

    1- Excel dosyasında 1. sayfayı seçtirmeyi sağlamak.

    2- Excel dosyam şifreli salt okunur olarak açabilmeyi sağlamak.

    3- Bu yazılan programı nasıl .exe olarak işleyebilirim.

    Şimdiden çok teşekkürler eğer Visual Basic kodları ile devam et derseniz Visual Basic kodlarına da açığım yoksa C# olursa benim için o da uygundur.

    Yazdığım Visual Basic kodları;

    Imports Excel = Microsoft.Office.Interop
    Public Class Form1
        Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
            Dim k As String
            Dim xls As Excel.Excel.Application
            Dim workbook As Excel.Excel.Workbook
            xls = New Excel.Excel.Application
            workbook = xls.Workbooks.Open(OpenFileDialog1.FileName)
            xls.Visible = True
            k = TextBox1.Text
            For i = 7 To 50
                If xls.Cells(i, 4).value = k Then
                    TextBox2.Text = xls.Cells(i, 5).value
                    TextBox3.Text = xls.Cells(i, 8).value
                    TextBox4.Text = xls.Cells(i, 21).value
                    TextBox5.Text = xls.Cells(i, 13).value
                    TextBox6.Text = xls.Cells(i, 12).value
                End If
            Next
            xls.Quit()
            xls = Nothing
        End Sub
    
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim xls As Excel.Excel.Application
            xls = New Excel.Excel.Application
            OpenFileDialog1.ShowDialog()
            Label7.Text = "Dosya Konumu Seçilmiştir..."
        End Sub
    
    End Class
    

    11 Kasım 2019 Pazartesi 10:52

Yanıtlar

  • Tabii ki C# varken, VB ile devam et demeyiz :)

    private void FillInfoFromExcel()
    {
    	var filename = GetExcelFile();
    	var xls = new Excel.Application();
    	var workbook = xls.Workbooks.Open(filename,ReadOnly:true,Password:"secretPassword");
    	//xls.Visible = true; Quit var sonda
    	var ws = (Excel.Worksheet)workbook.Worksheets[1];
    	var k = TextBox1.Text;
    	var range = ws.Range[ws.Cells[7,1],ws.Cells[50,1]]; // A sutunu demistin
    // A sutunu 7-50.satirlar arasında arıyoruz
    
    	var firstFound = range.Find(k);
    	if (firstFound != null)
    	{
    		var row = firstFound.Row;
    		TextBox2.Text = ((Excel.Range)ws.Cells[row, 5]).Value.ToString();
    		TextBox3.Text = ((Excel.Range)ws.Cells[row, 8]).Value.ToString();
    		TextBox4.Text = ((Excel.Range)ws.Cells[row, 21]).Value.ToString();
    		TextBox5.Text = ((Excel.Range)ws.Cells[row, 13]).Value.ToString();
    		TextBox6.Text = ((Excel.Range)ws.Cells[row, 12]).Value.ToString();
    	}
    	xls.Quit();
    }
    
    private string GetExcelFile()
    {
    	OpenFileDialog ofd = new OpenFileDialog();
    	ofd.Filter = "Excel dosyalari (*.xls,*.xlsx)|*.xls;*.xlsx|Tum dosyalar (*.*)|*.*";
    	ofd.ShowDialog();
    	return ofd.FileName;
    }
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak Öneren A_BLR 11 Kasım 2019 Pazartesi 20:56
    • Yanıt Olarak İşaretleyen Can09 12 Kasım 2019 Salı 12:16
    11 Kasım 2019 Pazartesi 15:56
    Yanıtlayıcı

Tüm Yanıtlar

  • Tabii ki C# varken, VB ile devam et demeyiz :)

    private void FillInfoFromExcel()
    {
    	var filename = GetExcelFile();
    	var xls = new Excel.Application();
    	var workbook = xls.Workbooks.Open(filename,ReadOnly:true,Password:"secretPassword");
    	//xls.Visible = true; Quit var sonda
    	var ws = (Excel.Worksheet)workbook.Worksheets[1];
    	var k = TextBox1.Text;
    	var range = ws.Range[ws.Cells[7,1],ws.Cells[50,1]]; // A sutunu demistin
    // A sutunu 7-50.satirlar arasında arıyoruz
    
    	var firstFound = range.Find(k);
    	if (firstFound != null)
    	{
    		var row = firstFound.Row;
    		TextBox2.Text = ((Excel.Range)ws.Cells[row, 5]).Value.ToString();
    		TextBox3.Text = ((Excel.Range)ws.Cells[row, 8]).Value.ToString();
    		TextBox4.Text = ((Excel.Range)ws.Cells[row, 21]).Value.ToString();
    		TextBox5.Text = ((Excel.Range)ws.Cells[row, 13]).Value.ToString();
    		TextBox6.Text = ((Excel.Range)ws.Cells[row, 12]).Value.ToString();
    	}
    	xls.Quit();
    }
    
    private string GetExcelFile()
    {
    	OpenFileDialog ofd = new OpenFileDialog();
    	ofd.Filter = "Excel dosyalari (*.xls,*.xlsx)|*.xls;*.xlsx|Tum dosyalar (*.*)|*.*";
    	ofd.ShowDialog();
    	return ofd.FileName;
    }
    



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    • Yanıt Olarak Öneren A_BLR 11 Kasım 2019 Pazartesi 20:56
    • Yanıt Olarak İşaretleyen Can09 12 Kasım 2019 Salı 12:16
    11 Kasım 2019 Pazartesi 15:56
    Yanıtlayıcı
  • Merhaba yanıtınız için çok teşekkür ederim. Verdiğiniz kodları visual studio'ya aktarmaya çalışıyorum ancak kodda bulunan Excel ve Textbox kelimelerinin altı kırmızı kaldı. Microsoft Excel 16.0 Object Library başvurusunu ekledim ama sonuç aynı. Using kısımlarına eklemem gereken birşeyler mi var acaba? 
    12 Kasım 2019 Salı 05:57
  • En basit seylere takilmissiniz :( Onları bildiginizi sanmiştim.

    using Excel=Microsoft.Office.Interop.Excel;

    Textbox'larin altini çizmesi benim sucum degil, sizin kodunuza gore o isimlerde nesneleriniz vardi, ben de aynen koydum. Dogru isimleri neyse onları kullanın. Altı kirmizi çizilen bir şey oldugunda, hatayı okumak icin mouse'u o çizginin uzerine getirip çıkan mesajı okumanız gerektiğini de bilmiyorsunuz sanırım :(

    Bu arada neden öyle textBox1, textBox2 ... gibi VS'nun verdigi isimleri kullanıyorsunuz. Onları anlasilir isimlerle değiştirsenize. Ornegin: txtAdet, txtAd, txtSoyad ... yani ne oldukları isimlerinden de anlasilsin. Yoksa kod yazarken o 1, 2, ... ne neydi hep ezberlemeniz, tekrar tekrar kontrol etmeniz gerekebilir.



    How to create a Minimal, Reproducible Example
    The way to Go.
    World's most advanced open source (object-) relational Database.
    Flutter (for mobile, for web & desktop.

    12 Kasım 2019 Salı 11:54
    Yanıtlayıcı
  • Tekrar merhaba Çetin Bey. Yanıtınız için tekrar çok teşekkür ederim. Sanırım yanlış cümle kurmuşum sizi kırdıysam kusura bakmayın. Tabiki de sizin hatanız değil altı kırmızı kalması benim c# bilmememden kaynaklı. Dosyayı çevirmek istememin sebebi de hem c#öğrenmeye çalışıyorum hemde programın daha hızlı çalışabilmesi için gerekli bir dilmiş kendisi. Kusura bakmayın tekrar.

    Hatalar çözülmüştür Çetin Bey'e çok teşekkür ederim.

    12 Kasım 2019 Salı 12:16