2016-03-30 16 views
2

Ben bir "başlığını" uygulamak için bu kodu var (büyük, üst-of-the-sac "title") bir sayfaya:Neden "Tanımlanmış ad" (aralık) değerin bu E-tablo Işık kodunda ayarlanmıyor?

// Initialize 
private static SLDocument sl; 
. . . 
sl = new SLDocument(); 

// Create a Style 
SLStyle styleHeading = sl.CreateStyle(); 
styleHeading.SetFont(FontSchemeValues.Major, 36); 
styleHeading.Font.Italic = true; 
styleHeading.Font.FontName = "Candara"; 

// Create a Defined Name (Range) and give it a value and style 
sl.SetDefinedName("UnitName", "Sheet1!$A$1:$A$13"); 
sl.SetCellValue("UnitName", "Pennsylvania Platypi Presumptuously Parasailing"); 
sl.SetCellStyle("UnitName", styleHeading); 

// Save the sheet 
string appDataFolder = HttpContext.Current.Server.MapPath("~/App_Data/"); 
string spreadsheetLightFilename = "PlatypiTest.xlsx"; 
string fullspreadsheetLightPath = Path.Combine(appDataFolder, spreadsheetLightFilename); 
sl.SaveAs(fullspreadsheetLightPath); 

Not: Doğruladım "Sayfa1" doğru birlikte olduğunu Bu kod:

var nameList = sl.GetSheetNames(); 
string s = nameList[0]; // "s" is "Sheet1" 

dosya oluşturulan ve kaydedilen, ancak içerikten yoksun olduğu; açtığımda, A1 hücresi vurgulanır, ancak içerik içermez.

Hayati bir adımı kaçırıyor mu, yoksa bu tamamen yanlış mı oluyor?

cevap

1

Ne yapıyorsunuz mantıksal olarak iyi.

Bu hat

sl.SetDefinedName("UnitName", "Sheet1!$A$1:$A$13"); 

gerçekten adlandırılmış bir aralık oluşturur.

enter image description here

veya Adı Yöneticisi: Excel'de sonuçlanan dosyayı açmak ve hücre seçicisi bakarsanız bunu görebilirsiniz Çizelge Işık olmasına rağmen

enter image description here

sorundur Tanımlanmış isimler için çok temel bir destek - temel olarak tek yapmanız gereken bir isim oluşturmak ve formüller içinde kullanmaktır. İçeriği işleyen tüm yöntemler, tek hücre referansı bekler. Btw, tüm bu yöntemler geçerli bir hücre başvurusu geçirmiyor, ancak başarısızlık/başarısızlık gösteren bool döndürme, istisna atmayın. Eğer

bool success1 = sl.SetCellValue("UnitName", "Pennsylvania Platypi Presumptuously Parasailing"); 
bool success2 = sl.SetCellStyle("UnitName", styleHeading); 

için kodunuzu değiştirmeniz Örneğin

, her iki success değişkenleri false olduğunu göreceksiniz.

Kısa bir süre içinde, Excel dosyasına bazı içerikler getirmek isterseniz, hücreyi hücreye göre yapmalısınız. Hatta düzenli (isimsiz) aralıkları desteklemez.

0

Teorik olarak, en azından, bu şekilde yapabilirsiniz:

// from http://stackoverflow.com/questions/36481802/what-is-the-analogue-to-excel-interops-worksheet-usedrange-rows-in-spreadsheet 
var stats = sl.GetWorksheetStatistics(); 
var rowcount = stats.NumberOfRows; 

SLStyle entireSheetRangeStyle = sl.CreateStyle(); 
entireSheetRangeStyle.// (set style vals) 
. . . 
sl.SetRowStyle(1, rowcount, entireSheetRangeStyle);