2016-01-26 35 views
5

Bir elektronik sayfayı dinamik olarak cfscript e-tablosuYeni yöntemi kullanarak yapıyorum. Binanın şeyler sütunColdFusion Kullanarak Koşullu Biçimlendirme Excel Dosyası

<cfscript> 
    downloadDoc = spreadsheetNew("spreadSheetName"); 
    spreadsheetAddRow(downloadDoc,"spreadsheetCols"); 
    .... 
</cfscript> 

bir değerleri arasındaki yüzde farkı göstermek için bir formül içeren

yani bu boş sütununa bir kullanıcı tuşları ve (farklı sütununda) akım değeri .

Kullanıcıya, formül hücresinin rengini değere göre değiştirmek için koşullu biçimlendirme eklemesini istediğim için yapıyorum (örneğin, değişiklik% 20'den büyükse veya% -20'den azsa hücre olmalıdır. kırmızı). Formülü etkileyen değerlerden biri kullanıcı tarafından girildiğinden, renk değişikliğinin işlevimde değil Excel'de olması gerekir.

Excel'de bu, cfml tarafından oluşturulan bir Excel dosyasına nasıl oluşturulacağından emin değilsiniz. enter image description here

Sorum şu; cfml (cfscript veya cfspreadsheet etiketi ile) kullanılarak bunun mümkün olup olmadığını bilen var mı?

Hiçbir şey bulamadım ve cfdocs.org bir arama yapamadı.

+2

It mümkün. Bebek adımlar atmanızı öneriyorum. Öncelikle, e-tablo hücrelerini nasıl biçimlendireceğinizi bilmiyorsanız, bunu öğrenin. Bunu bir kez kurduğunuzda, koşullu mantık daha kolay olacaktır. –

+1

Sadece bir kullanıcı için ColdFusion'ı tamamen atlayıp onun için bir makro yazarım. –

+3

Bunu yapmak için muhtemelen Apache POI'ye dalmanız gerekecektir. CFML, bu kitaplıktan yalnızca çok sınırlı işlevsellik gösterir. –

cevap

5

İyi haber! Bu yapılabilir (CF10'da olmasa da, bununla birlikte gönderilen POI sürümü çok düşük). CF11’de olduğunuz için, bu, sizi bu yoldan en iyi şekilde alacak. Bu özel demo 100 kırmızıdan büyük bir şey döndürüyor.

<cfset var poiSheet = downloadDoc.getWorkBook().getSheet("Sheet1")> 
<cfset poiSheet.setFitToPage(true)> 

<cfset comparison = CreateObject("java", "org.apache.poi.ss.usermodel.ComparisonOperator")> 

<cfset rule = poiSheet.getSheetConditionalFormatting().createConditionalFormattingRule(comparison.GE, "100.0", javacast("null", ""))> 
<cfset patternFmt = rule.createPatternFormatting()> 
<cfset color = CreateObject("java", "org.apache.poi.ss.usermodel.IndexedColors")> 

<cfset patternFmt.setFillBackgroundColor(javacast("short", color.RED.index))> 

<cfset cellRangeAddress = CreateObject("java", "org.apache.poi.ss.util.CellRangeAddress")> 
<cfset regions = [ cellRangeAddress.valueOf("A1:A6") ]> 
<cfset poiSheet.getSheetConditionalFormatting().addConditionalFormatting(regions, rule)> 

bir kombinasyonu Alındığı (ama ikincisi verilen örneklerin gerçekten yok performans gösterdiğini unutmayın)

+0

Darn, bana onu döv ;-). Kudos +1 – Leigh

+0

Teşekkürler Tim! Tam olarak aradığım şey bu. – kuhl