Excel Hata Denetimi

Katılım
26 Temmuz 2017
Mesajlar
26
Excel Vers. ve Dili
Excel 2010 turkce
c# tan excele veri aktarımı yapıyorum daha sonra bu veriler üzerinde işlemler gerçekleştiriyorum fakat excele ilk aktardığım veriler excel tarafından hata denetimi yaptığı için hataları elimle yoksay demeden kodlarım çalışmıyor. excel üzerinde bu sorunu nasıl çözebilirim.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
608
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Ne istediğinizi tam olarak anlayamadım.

Ama Dosya/Seçenekler/Formüller /Hata denetimi seçeneğini kaldırmayı denediniz mi ?
 
Katılım
26 Temmuz 2017
Mesajlar
26
Excel Vers. ve Dili
Excel 2010 turkce
Ne istediğinizi tam olarak anlayamadım.

Ama Dosya/Seçenekler/Formüller /Hata denetimi seçeneğini kaldırmayı denediniz mi ?

yanıtınız için teşekkür ederim durumu daha net açıklayayım. Program üzerinden excele verileri kaydediyorum. Kayıttan sonra hücreler aşağıdaki fotoğrafta göründüğü gibi oluyor. daha sonra program üzerinden bu hücrelerde işlem yapmak istediğim zaman hata veriyor bu hatayıda fotoğraftaki hücrelere çift tıklayarak veya hatayı yoksay dediğimde sorun düzeliyor ama her seferinde excel dosyasını açıp bu şekilde elimle düzeltmek istemiyorum. Biraz karışık farkındayım ama umarım anlatabilmişimdir.
resim linki = hizliresim.com/zjVXlD
 
Katılım
26 Temmuz 2017
Mesajlar
26
Excel Vers. ve Dili
Excel 2010 turkce
Ne istediğinizi tam olarak anlayamadım.

Ama Dosya/Seçenekler/Formüller /Hata denetimi seçeneğini kaldırmayı denediniz mi ?
Bu arada belirtmiş olduğunuz yöntemi denedim sonuç yine aynı. Acaba excelde bir kod yazıp tüm hücrelerin biçimini "sayı" olarak yapsak sorun çözülür mü sizce?
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
608
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
Çözülebilir gibi. İsterseniz bir deneyin.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Bu arada belirtmiş olduğunuz yöntemi denedim sonuç yine aynı. Acaba excelde bir kod yazıp tüm hücrelerin biçimini "sayı" olarak yapsak sorun çözülür mü sizce?
Aktarılan veriler örneğin hep A2:L8 aralığındaysa; (1. satırda başlıklar olduğunu kabul ederek....)

Kod:
Sub Test()
    Range("A2:L8").Value = Range("A2:L8").Value
End Sub
.
 
Katılım
26 Temmuz 2017
Mesajlar
26
Excel Vers. ve Dili
Excel 2010 turkce
Aktarılan veriler örneğin hep A2:L8 aralığındaysa; (1. satırda başlıklar olduğunu kabul ederek....)

Kod:
Sub Test()
    Range("A2:L8").Value = Range("A2:L8").Value
End Sub
.
Haluk bey yanıtınız için teşekkür ederim. Dediğiniz gibi yaptım ama hücre biçimi "genel" den "sayı"ya geçiş yapmadı nerde yanlış yaptım bilemedim. kodu yazıp bir butona atatım öyle çalıştırmayı denedim
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Veriler "sayı" haline gelmedi mi.... ?

Gelmiş olması lazım.

.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
608
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
@ erkankesemen
Yanlış anlamadıysam Haluk beyin işlemi hücre formatını değiştirmiyor. Hücre içerisinde metin gibi görünen verilerin sayı olarak tanımlanmasını sağlıyor.
Eğer bu şekilde de sorununuz çözülmediyse. Bu işlemi yapmadan önce veya sonra, hücre formatlarını değiştirecek bir işlem sorunu çözebilir.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Eğer isterseniz, Cengiz Beyin bahsettiği ilaveyi de yapabilirsiniz...

Kod:
Sub Test()
    Range("A2:L8").Value = Range("A2:L8").Value
    Range("A2:L8").NumberFormat = "0.00"
End Sub
.
 
Katılım
26 Temmuz 2017
Mesajlar
26
Excel Vers. ve Dili
Excel 2010 turkce
Eğer isterseniz, Cengiz Beyin bahsettiği ilaveyi de yapabilirsiniz...

Kod:
Sub Test()
    Range("A2:L8").Value = Range("A2:L8").Value
    Range("A2:L8").NumberFormat = "0.00"
End Sub
.
bu kod ile format sayıya döndü ama yinede sorun çözülmedi. tek tek hücrelere çift tıklıyorum ondan sonra program hata vermiyor. çok garib bir sorun çözemedim.
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Dosyayı e-posta adresime gönderin bir bakayım ...

.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Excel' e aktarım yapan C# metodunu görebilir miyiz? Kaynağında düzeltilirse ilave çözümlere gerek kalmayacağını düşünüyorum.
 
Katılım
26 Temmuz 2017
Mesajlar
26
Excel Vers. ve Dili
Excel 2010 turkce
Excel' e aktarım yapan C# metodunu görebilir miyiz? Kaynağında düzeltilirse ilave çözümlere gerek kalmayacağını düşünüyorum.
C#:
private void kaydet2()
        {
            dataGridView2.Rows[0].Selected = true;
            dataGridView2.Rows[1].Selected = true;
            dataGridView2.Rows[2].Selected = true;
            dataGridView2.Rows[3].Selected = true;
            dataGridView2.Rows[4].Selected = true;
            dataGridView2.Rows[5].Selected = true;
            dataGridView2.Rows[6].Selected = true;
            var sec = dataGridView2.SelectedRows;

            foreach (DataGridViewRow secim in sec)
            {
                using (OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\üçüncüexcel.xlsx; Extended Properties='Excel 12.0 xml;HDR=YES;'"))
                {
                    using (OleDbCommand komut = new OleDbCommand("INSERT INTO [Sayfa1$] ([SiO2], [CaO], [Fe], [MgO], [Mn], [S], [K2O], [Al2O3], [Cu], [Na2O], [P], [Zn], [Ni], [SFCA ], [SFCA_1 ], [FEO_AGR_YUZDE ], [K Baziklik], [B Baziklik]) VALUES ([@SiO2], [@CaO], [@Fe], [@MgO], [@Mn], [@S], [@K2O], [@Al2O3], [@Cu], [@Na2O], [@P], [@Zn], [@Ni], [@SFCA ], [@SFCA_1 ], [@FEO_AGR_YUZDE ], [@K Baziklik], [@B Baziklik])", baglanti))
                    {

                        komut.Parameters.AddWithValue("@SiO2", secim.Cells[0].Value.ToString());
                        komut.Parameters.AddWithValue("@CaO", secim.Cells[1].Value.ToString());
                        komut.Parameters.AddWithValue("@Fe", secim.Cells[2].Value.ToString());
                        komut.Parameters.AddWithValue("@MgO", secim.Cells[3].Value.ToString());
                        komut.Parameters.AddWithValue("@Mn", secim.Cells[4].Value.ToString());
                        komut.Parameters.AddWithValue("@S", secim.Cells[5].Value.ToString());
                        komut.Parameters.AddWithValue("@K2O", secim.Cells[6].Value.ToString());
                        komut.Parameters.AddWithValue("@Al2O3", secim.Cells[7].Value.ToString());
                        komut.Parameters.AddWithValue("@Cu", secim.Cells[8].Value.ToString());
                        komut.Parameters.AddWithValue("@Na2O", secim.Cells[9].Value.ToString());
                        komut.Parameters.AddWithValue("@P", secim.Cells[10].Value.ToString());
                        komut.Parameters.AddWithValue("@Zn", secim.Cells[11].Value.ToString());
                        komut.Parameters.AddWithValue("@Ni", secim.Cells[12].Value.ToString());
                        komut.Parameters.AddWithValue("@SFCA ", secim.Cells[13].Value.ToString());
                        komut.Parameters.AddWithValue("@SFCA_1 ", secim.Cells[14].Value.ToString());
                        komut.Parameters.AddWithValue("@FEO_AGR_YUZDE ", secim.Cells[15].Value.ToString());
                        komut.Parameters.AddWithValue("@K Baziklik", secim.Cells[16].Value.ToString());
                        komut.Parameters.AddWithValue("@B Baziklik", secim.Cells[17].Value.ToString());


                        baglanti.Open();
                        komut.ExecuteNonQuery();
                    }
                    
                        spreadsheetControl1.LoadDocument("D:\\üçüncüexcel.xlsx", DocumentFormat.OpenXml);
                      

                    }
                }
           
        }

Acaba kaydederken mi veriyi biçimlendirsek ?
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
608
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
@erkankesemen

Excel'den excele aktarma yaparken buna benzer bir sorunda, dediğiniz gibi, veriyi yazmadan önce, excel hücresinde biçimlendirme yapmıştım. Sorun çözülmüştü. C# da yapabiliyorsanız böyle bir şey belki sorun çözülebilir. :)
 
Katılım
26 Temmuz 2017
Mesajlar
26
Excel Vers. ve Dili
Excel 2010 turkce
@erkankesemen

Excel'den excele aktarma yaparken buna benzer bir sorunda, dediğiniz gibi, veriyi yazmadan önce, excel hücresinde biçimlendirme yapmıştım. Sorun çözülmüştü. C# da yapabiliyorsanız böyle bir şey belki sorun çözülebilir. :)
o zaman bu noktada bir araştırma yapayım. nasıl düzenleyebilirim bilmiyorum ama araştırıp bulabilirim.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
608
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
......Value.ToString Bu kodda ToString değerin text olduğunu mu belirliyor ? Belki ToString yerine sayıyı temsil eden kod neyse onu yazarsanız olabilir.
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,369
Excel Vers. ve Dili
Office 365 (64 bit) - Türkçe
Datagrid nesnesinde kolonların veri tipi tanımlanmamışsa tür string' dir. 'ToString' ile, grid kolonu numeric bile olsa string tipine çeviriyorsunuz.
Parameter koleksiyonunu aşağıdaki gibi veri tipi ile (overload ları tam hatırlamıyorum) beraber tanımlarsanız sorunun çözüleceğini sanıyorum. (Value tipi object' tir)

C#:
komut.Parameters.Add("@SiO2", int) = secim.Cells[0].Value;
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Öncelikli olarak, Zeki Beyin C# koduyla ilgili önerisini dikkate almanız gerekir. Zira; eğer kullandığınız toString fonksiyonu JavaScript'deki gibiyse, parametresiz olarak kullanıldığında sonuç, sayı tabanında değişiklik yapılmaksızın "string" olur.

Diğer yandan, işin Excel tarafındaki çözümü ise; aşağıdaki kodla yapılabilir.

Kod:
Sub Test2()
    For Each cell In Range("A2:R8")
        cell.Value = cell.Value + 0
    Next
End Sub
.
 
Son düzenleme:
Üst