2015-01-28 9 views
5

Epplus'ta dinamik olarak bir formül alanı oluşturmaya çalışıyorum. Formül alanı 255 karakterden az içeriyorsa, düzgün bir şekilde oluşturuyor. 255 'u aşarsa, olarak bir istisna atar. Özel Durum: Bir DataValidation listesinin toplam uzunluğu 255 karakteri aşamaz.Özel Durum: Bir DataValidation listesinin toplam uzunluğu 255 karakterden uzun olamaz.

Bu sorunu çözmek için lütfen bana yardımcı olabilir misiniz? ya da lütfen bana biraz alternatif söyle.

+0

Lütfen cevap yeterli değilse, şu anda sahip olduğunuz hakkında ek bilgi veriniz. –

+0

Merhaba Nicholas, cevabınız için teşekkürler buna benzer deniyorum ama yukarıda istisna alıyorum formül alanını kısıtlamak istemiyorum. Formül alanına 'var val = ws.DataValidations.AddListValidation ("A1") 255 karakterden fazlasını eklemek istiyorum; val.Formula.Values.Add ("Uzun metin eklemek zorundayız"); val.Formula.Values.Add ("Tüm liste değerleri bir arada 255 karaktere sahip olmalıdır"); val.Formula.Values.Add ("daha fazla metin 1 daha fazla metin daha fazla metin daha fazla metin"); val.Formula.Values.Add ("daha fazla metin 2 daha fazla metin daha fazla metin"); pack.SaveAs (yeni FileInfo ("err.xlsx")); ' –

cevap

8

Sorun, tüm mevcut liste seçeneklerini - temel olarak bir CSV listesi - saklamak için bu hücrenin Formula kapsayıcısını kullanıyor olmanızdır. Excel'de 255 karakterlik bir sınırlama sınırı vardır. Bunu, yeni bir Doğrulama Listesi oluştururken "Kaynak" kutusuna virgülle ayrılmış değerleri manuel olarak girerek ve el ile girerek görebilirsiniz.

En iyi seçeneğiniz, hücrelerdeki değerleri doldurmak ve değerlerin aralığını bunun yerine Formula'ya vermek olabilir. Bunun gibi:

using (var pack = new ExcelPackage(existingFile)) 
{ 

    var ws = pack.Workbook.Worksheets.Add("Content"); 

    //var val = ws.DataValidations.AddListValidation("A1"); 
    //val.Formula.Values.Add("Here we have to add long text"); 
    //val.Formula.Values.Add("All list values combined have to have more then 255 chars"); 
    //val.Formula.Values.Add("more text 1 more text more text more text"); 
    //val.Formula.Values.Add("more text 2 more text more text more text"); 

    ws.Cells["B1"].Value = "Here we have to add long text"; 
    ws.Cells["B2"].Value = "All list values combined have to have more then 255 chars"; 
    ws.Cells["B3"].Value = "more text 1 more text more text more text"; 
    ws.Cells["B4"].Value = "more text 2 more text more text more text"; 
    ws.Cells["B5"].Value = "more text 2 more text more text more textmore text 2 more text more text more textmore text 2 more text more text more textmore text 2 more text more text more textmore text 2 more text more text more textmore text 2 more text more text more textmore text 2 more text more text more textmore"; 

    var val = ws.DataValidations.AddListValidation("A1"); 
    val.Formula.ExcelFormula = "B1:B5"; 

    pack.SaveAs(existingFile); 
} 
+0

Soruma bir bakabilir misiniz? Teşekkür ederim! http://stackoverflow.com/questions/44030344/epplus-length-of-a-datavalidation-list-cannot-exceed-255-characters –

1

Ernie'nin çözümü mükemmel çalışıyor! Her satırda değişmeye devam eden değerler aralığı dışında. Ben izin verilmedi çünkü

val.Formula.ExcelFormula = "$B$1:$B$5"; 

[çözüm olarak ekleme: Bu kod değişimi sorununu çözdü

(... B6: B5, ikinci sıra B2 yani ilk satır B1 öğeleri eklendi) Yorum yapmak için :)]