Akıllı İşaretleyicileri Kullanma
Giriş
Tasarımcı Elektronik Tablosu ve Akıllı İşaretleyiciler
Tasarımcı elektronik tabloları, görsel biçimlendirme, formüller ve akıllı işaretçiler içeren standart Excel dosyalarıdır. Bir projeden gelen bilgiler ve ilgili ilgili kişiler için bilgiler gibi bir veya daha fazla veri kaynağına başvuran akıllı işaretçiler içerebilirler. Akıllı işaretçiler, bilgi almak istediğiniz hücrelere yazılır.
Tüm akıllı işaretçiler &= ile başlar. Veri işaretçisine örnek olarak &=Party.FullName verilebilir. Veri işaretçisi birden fazla öğeyle, örneğin tam bir satırla sonuçlanırsa, sonraki satırlar yeni bilgilere yer açmak için otomatik olarak aşağı taşınır. Böylece ara toplamlar ve toplamlar, girilen verilere dayalı hesaplamalar yapmak için veri işaretçisinden hemen sonra satıra yerleştirilebilir. Girilen satırlarda hesaplamalar yapmak için şunu kullanın:dinamik formüller.
Akıllı işaretçiler şunlardan oluşur:veri kaynağı vealan adıçoğu bilgi için parçalar. Değişkenler ve değişken dizileri ile özel bilgiler de iletilebilir. Değişkenler her zaman yalnızca bir hücreyi doldururken, değişken dizileri birkaç hücreyi doldurabilir. Hücre başına yalnızca bir veri işaretçisi kullanın. Kullanılmayan akıllı işaretçiler kaldırılır.
Bir akıllı işaretleyici ayrıca parametreler içerebilir. Parametreler, bilgilerin düzenlenme şeklini değiştirmenize olanak tanır. Akıllı işaretçinin sonuna parantez içinde virgülle ayrılmış bir liste olarak eklenirler.
Akıllı İşaretleyici Seçenekleri
&=DataSource.FieldName &=[Veri Kaynağı].[Alan Adı]&=$VariableName &=$Değişken Dizisi &==Dinamik Formül &=&=Tekrar DinamikFormül
parametreler
Aşağıdaki parametrelere izin verilir:
- ekleme - Verileri sığdırmak için fazladan satır eklemeyin.
- atla:n - Her veri satırı için n sayıda satır atlayın.
- *artan:n veya azalan:n - Verileri akıllı işaretçilerde sıralayın. n 1 ise sütun sıralayıcının ilk anahtarıdır. Veri kaynağı işlendikten sonra veriler sıralanır. Örneğin: &=Tablo1.Alan3(artan:1).
- yatay - Verileri yukarıdan aşağıya yazmak yerine soldan sağa yazın.
- sayısal - Mümkünse metni sayıya dönüştürün.
- vardiya - Verileri sığdırmak için fazladan satırlar veya sütunlar oluşturarak aşağı veya sağa kaydırın. Shift parametresi, Microsoft Excel’dekiyle aynı şekilde çalışır. Örneğin, Microsoft Excel’de, bir hücre aralığı seçtiğinizde, sağ tıklayın ve seçinSokmak ve belirtinhücreleri aşağı kaydır, Hücreleri sağa kaydır ve diğer seçenekler. Kısacası, kaydırma parametresi dikey/normal (yukarıdan aşağıya) veya yatay (soldan sağa) akıllı işaretçiler için aynı işlevi yerine getirir.
- fasulye - Veri kaynağının basit bir POJO olduğunu gösterir. Yalnızca Java API’de desteklenir.
Değişken satırlara veri eklemek için noadd ve jump parametreleri birleştirilebilir. Şablon aşağıdan yukarıya doğru işlendiği için, alternatif satırın önüne fazladan satır eklenmesini önlemek için ilk satıra noadd eklemelisiniz.
Birden fazla parametreniz varsa, bunları virgülle ayırın ancak boşluk bırakın: parametreA,parametreB,parametreC
Aşağıdaki ekran görüntüleri, her bir satıra nasıl veri ekleneceğini gösterir.
olur…
Dinamik Formüller
Dinamik formüller, formül dışa aktarma işlemi sırasında eklenecek satırlara başvursa bile Excel formüllerini hücrelere eklemenize olanak tanır. Dinamik formüller, eklenen her satır için yinelenebilir veya yalnızca veri işaretçisinin yerleştirildiği hücreyi kullanabilir.
Dinamik formüller aşağıdaki ek seçeneklere izin verir:
- r - Geçerli satır numarası.
- 2, -1 - Geçerli satır numarasına kaydırma.
Aşağıda yinelenen bir dinamik formül ve sonuçta ortaya çıkan Excel çalışma sayfası gösterilmektedir.
olur…
Cell C1, =A1 formülünü içerirB1, C2 içerir = A2B2 ve C3 = A3*B3.
Akıllı işaretleyicileri işlemek çok kolaydır. Aşağıdaki kod parçacığı bunun nasıl yapıldığını gösterir.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(DynamicFormulas.class) + "SmartMarkers/"; | |
//set the file path of designer spreadsheet containing smart markers | |
String designerFile = dataDir + "templateDynamicFormulas.xlsx"; | |
// Create the relevant data listfor the AnswerData object | |
ArrayList<AnswerData> dataList = new ArrayList<>(); | |
dataList.add(new AnswerData(100.00, 2)); | |
dataList.add(new AnswerData(75.25, 3)); | |
dataList.add(new AnswerData(25.00, 5)); | |
if (designerFile != null) | |
{ | |
// Instantiating a WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Open a designer spreadsheet containing smart markers | |
designer.setWorkbook(new Workbook(designerFile)); | |
// Set the data source for the designer spreadsheet | |
designer.setDataSource("Answer", dataList); | |
// Process the smart markers | |
designer.process(); | |
} | |
public class AnswerData | |
{ | |
private double price; | |
private int amount; | |
public AnswerData(double priceValue, int amountValue) | |
{ | |
this.price = priceValue; | |
this.amount = amountValue; | |
} | |
public double getPrice() | |
{ | |
return price; | |
} | |
public void setPrice(double price) | |
{ | |
this.price = price; | |
} | |
public int getAmount() | |
{ | |
return amount; | |
} | |
public void setAmount(int amount) | |
{ | |
this.amount = amount; | |
} | |
} |
Değişken Dizileri Kullanma
Aşağıdaki örnek kod, Akıllı İşaretleyicilerde değişken dizilerin nasıl kullanılacağını gösterir. Çalışma kitabının ilk çalışma sayfasının A1 hücresine dinamik olarak işaretleyici için belirlediğimiz bir dizi değer içeren bir değişken dizi işaretçisi yerleştiririz, işaretçileri hücrelere işaretçiye karşı doldurmak için işler. Son olarak Excel dosyasını kaydediyoruz.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingVariableArray.class) + "SmartMarkers/"; | |
// Instantiate a new Workbook designer. | |
WorkbookDesigner report = new WorkbookDesigner(); | |
// Get the first worksheet of the workbook. | |
Worksheet w = report.getWorkbook().getWorksheets().get(0); | |
/* | |
* Set the Variable Array marker to a cell.You may also place this Smart | |
* Marker into a template file manually in Ms Excel and then open this | |
* file via Workbook. | |
*/ | |
w.getCells().get("A1").putValue("&=$VariableArray"); | |
// Set the DataSource for the marker(s). | |
report.setDataSource("VariableArray", new String[] { "English", "Arabic", "Hindi", "Urdu", "French" }); | |
// Process the markers. | |
report.process(false); | |
// Save the Excel file. | |
report.getWorkbook().save(dataDir + "varaiblearray_out.xlsx"); |
Verileri Gruplandırma
Bazı Excel raporlarında, okumayı ve analiz etmeyi kolaylaştırmak için verileri gruplara ayırmanız gerekebilir. Verileri gruplara ayırmanın birincil amaçlarından biri, her bir kayıt grubu üzerinde hesaplamalar yapmaktır (özet işlemleri gerçekleştirmek).
Aspose.Cells akıllı işaretleyiciler, verileri ayarlanan alanlara göre gruplandırmanıza ve veri kümeleri veya veri grupları arasına özet satırlar yerleştirmenize olanak tanır. Örneğin, verileri Customers.CustomerID’ye göre gruplandırıyorsanız, grup her değiştiğinde bir özet kayıt ekleyebilirsiniz.
parametreler
Aşağıda, verileri gruplandırmak için kullanılan bazı akıllı işaretleyici parametreleri verilmiştir.
grup:normal/birleştir/tekrarla
Aralarından seçim yapabileceğiniz üç tür grubu destekliyoruz.
- normal - Alan(lar)a göre grup değeri, sütundaki karşılık gelen kayıtlar için tekrarlanmaz; bunun yerine veri grubu başına bir kez yazdırılırlar.
- birleştirmek - Her grup kümesi için alan(lar)a göre gruptaki hücreleri birleştirme dışında normal parametreyle aynı davranış.
- tekrar et - Alan(lar)a göre grup değeri ilgili kayıtlar için tekrarlanır.
Örneğin: &=Customers.CustomerID(group:merge)
atlamak
Her gruptan sonra belirli sayıda satırı atlar.
Örneğin &=Employees.EmployeeID(grup:normal,atla:1)
ara toplamN
Alana göre grupla ilgili belirtilen alan verileri için bir özet işlemi gerçekleştirir. N, bir veri listesinde ara toplamları hesaplarken kullanılan işlevi belirten 1 ile 11 arasındaki sayıları temsil eder. (1=ORTALAMA, 2=SAYI, 3=SAYI, 4=MAKS, 5=MIN,…9=TOPLA vb.) Daha fazla ayrıntı için Microsoft Excel’in yardımındaki Ara toplam referansına bakın.
Biçim aslında şöyle belirtir: alt toplamN:Ref burada Ref sütuna göre grubu ifade eder.
Örneğin,
- &=Products.Units(subtotal9:Products.ProductID) şuna göre özet işlevini belirtir:Birimler alanı ile ilgili olarakÜrün kimliği alanÜrün:% s masa.
- &=Tabx.Col3(subtotal9:Tabx.Col1) özet fonksiyonunu belirtir.Sütun3 alan grubuCol1 masadaTabx.
- &=Table1.ColumnD(subtotal9:Table1.ColumnA&Table1.ColumnB) aşağıdaki özet işlevini belirtirsütunD alan grubuSütunA veSütunB masadaTablo 1.
Yuvalanmış Nesneleri Kullanma
Aspose.Cells, akıllı işaretleyicilerdeki iç içe nesneleri destekler, iç içe nesneler basit olmalıdır.
Basit bir şablon dosyası kullanıyoruz. Bazı iç içe akıllı işaretçileri içeren tasarımcı elektronik tablosuna bakın.
İç içe akıllı işaretçileri gösteren tasarımcı dosyasının ilk çalışma sayfası.
Aşağıdaki örnek bunun nasıl çalıştığını göstermektedir. Aşağıdaki kodu çalıştırmak, aşağıdaki çıktıyı verir.
Elde edilen verileri gösteren çıktı dosyasının ilk çalışma sayfası.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingNestedObjects.class) + "SmartMarkers/"; | |
Workbook workbook = new Workbook(dataDir + "TestSmartMarkers.xlsx"); | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
designer.setWorkbook(workbook); | |
ArrayList<Individual> list = new ArrayList<Individual>(); | |
list.add(new Individual("John", 23, new Wife("Jill", 20))); | |
list.add(new Individual("Jack", 25, new Wife("Hilly", 21))); | |
list.add(new Individual("James", 26, new Wife("Hally", 22))); | |
list.add(new Individual("Baptist", 27, new Wife("Newly", 23))); | |
designer.setDataSource("Individual", list); | |
designer.process(false); | |
workbook.save(dataDir + "UsingNestedObjects_out.xlsx"); |
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
public class Individual { | |
private String m_Name; | |
private int m_Age; | |
private Wife m_Wife; | |
public Individual(String name, int age, Wife wife) { | |
this.m_Name = name; | |
this.m_Age = age; | |
this.m_Wife = wife; | |
} | |
public String getName() { | |
return m_Name; | |
} | |
public int getAge() { | |
return m_Age; | |
} | |
public Wife getWife() { | |
return m_Wife; | |
} | |
} |
Genel Listeyi İç İçe Nesne Olarak Kullanma
Aspose.Cells artık genel bir listenin iç içe geçmiş bir nesne olarak kullanılmasını da destekliyor. Lütfen aşağıdaki kodla oluşturulan çıktı excel dosyasının ekran görüntüsünü kontrol edin. Ekran görüntüsünde görebileceğiniz gibi, bir Öğretmen nesnesi iç içe geçmiş birden çok öğrenci nesnesi içerir.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingGenericList.class) + "SmartMarkers/"; | |
// Create a designer workbook | |
Workbook workbook = new Workbook(); | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
worksheet.getCells().get("A1").putValue("Teacher Name"); | |
worksheet.getCells().get("A2").putValue("&=Teacher.Name"); | |
worksheet.getCells().get("B1").putValue("Teacher Age"); | |
worksheet.getCells().get("B2").putValue("&=Teacher.Age"); | |
worksheet.getCells().get("C1").putValue("Student Name"); | |
worksheet.getCells().get("C2").putValue("&=Teacher.Students.Name"); | |
worksheet.getCells().get("D1").putValue("Student Age"); | |
worksheet.getCells().get("D2").putValue("&=Teacher.Students.Age"); | |
// Apply Style to A1:D1 | |
Range range = worksheet.getCells().createRange("A1:D1"); | |
Style style = workbook.createStyle(); | |
style.getFont().setBold(true); | |
style.setForegroundColor(Color.getYellow()); | |
style.setPattern(BackgroundType.SOLID); | |
StyleFlag flag = new StyleFlag(); | |
flag.setAll(true); | |
range.applyStyle(style, flag); | |
// Initialize WorkbookDesigner object | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
// Load the template file | |
designer.setWorkbook(workbook); | |
ArrayList<Teacher> list = new ArrayList<>(); | |
// Create the relevant student objects for the Teacher object | |
ArrayList<Person> students = new ArrayList<>(); | |
students.add(new Person("Chen Zhao", 14)); | |
students.add(new Person("Jamima Winfrey", 18)); | |
students.add(new Person("Reham Smith", 15)); | |
// Create a Teacher object | |
Teacher h1 = new Teacher("Mark John", 30, students); | |
// Create the relevant student objects for the Teacher object | |
students = new ArrayList<>(); | |
students.add(new Person("Karishma Jathool", 16)); | |
students.add(new Person("Angela Rose", 13)); | |
students.add(new Person("Hina Khanna", 15)); | |
// Create a Teacher object | |
Teacher h2 = new Teacher("Masood Shankar", 40, students); | |
// Add the objects to the list | |
list.add(h1); | |
list.add(h2); | |
// Specify the DataSource | |
designer.setDataSource("Teacher", list); | |
// Process the markers | |
designer.process(); | |
// Autofit columns | |
worksheet.autoFitColumns(); | |
// Save the Excel file. | |
designer.getWorkbook().save(dataDir + "UsingGenericList_out.xlsx"); |
package AsposeCellsExamples.SmartMarkers; | |
import java.util.ArrayList; | |
public class Teacher extends Person { | |
public Teacher(String name, int age, ArrayList<Person> students) { | |
super(name, age); | |
// TODO Auto-generated constructor stub\ | |
m_Students = students; | |
} | |
private ArrayList<Person> m_Students; | |
public ArrayList<Person> getStudents() { | |
return m_Students; | |
} | |
} |
package AsposeCellsExamples.SmartMarkers; | |
public class Person { | |
private String m_Name; | |
private int m_Age; | |
public Person(String name, int age) { | |
this.m_Name = name; | |
this.m_Age = age; | |
} | |
public String getName() { | |
return m_Name; | |
} | |
public int getAge() { | |
return m_Age; | |
} | |
} |
Akıllı İşaretleyicilerin HTML özelliğini kullanma
Aşağıdaki örnek kod, Akıllı İşaretleyicilerin HTML özelliğinin kullanımını açıklar. İşleme gireceği zaman HTML’den dolayı “Hello World” içinde “World” yazısını kalın olarak gösterecektir. etiket.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UsingHTMLProperty.class) + "SmartMarkers/"; | |
Workbook workbook = new Workbook(); | |
WorkbookDesigner designer = new WorkbookDesigner(); | |
designer.setWorkbook(workbook); | |
workbook.getWorksheets().get(0).getCells().get("A1").putValue("&=$VariableArray(HTML)"); | |
designer.setDataSource("VariableArray", | |
new String[] { "Hello <b>World</b>", "Arabic", "Hindi", "Urdu", "French" }); | |
designer.process(); | |
workbook.save(dataDir + "UHProperty-out.xls"); |
Akıllı İşaretleyiciler ile Verileri Birleştirirken Bildirim Alma
Bazen, tamamlanmadan önce işlenmekte olan hücre referansı veya belirli Akıllı İşaretleyici ile ilgili bildirimlerin alınması gerekebilir. Bu kullanılarak elde edilebilirWorkbookDesigner.CallBackmülkiyet veISmartMarkerCallBack
Örnek kod ve ayrıntılı açıklama için lütfen bu makaleye bakın.