• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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.
 
Ne istediğinizi tam olarak anlayamadım.

Ama Dosya/Seçenekler/Formüller /Hata denetimi seçeneğini kaldırmayı denediniz mi ?
 
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
 
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?
 
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

.
 
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
 
Veriler "sayı" haline gelmedi mi.... ?

Gelmiş olması lazım.

.
 
@ 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.
 
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

.
 
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.
 
Dosyayı e-posta adresime gönderin bir bakayım ...

.
 
Excel' e aktarım yapan C# metodunu görebilir miyiz? Kaynağında düzeltilirse ilave çözümlere gerek kalmayacağını düşünüyorum.
 
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 ?
 
@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. :)
 
@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.
 
......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.
 
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;
 
Ö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:
Geri
Üst