Akıllı İşaretçi Kullanımı
Giriş
Tasarım Elektronik Tablosu & Akıllı İşaretçiler
Tasarımcı elektronik tablolar, görsel biçimlendirme, formüller ve akıllı işaretçiler içeren standart Excel dosyalarıdır. Bir veya daha fazla veri kaynağına, örneğin bir projenin bilgileri ve ilgili kişilerin bilgileri gibi bilgilere atıfta bulunan akıllı işaretçiler içerebilir. Akıllı işaretçiler, bilgilerin istendiği hücrelere yazılır.
Tüm akıllı işaretçiler &= ile başlar. Bir veri işaretinin bir örneği, örneğin &=Party.FullName. Veri işareti birden fazla öğe sonucuna yol açarsa, örneğin tam bir satır, o zaman yeni bilgi için otomatik olarak aşağıya kaydırılır. Böylece alt toplamlar ve toplamlar, eklenen verilere dayalı hesaplamalar yapmak için hemen sonraki satıra yerleştirilebilir. Eklenen satırlarda hesaplama yapmak için dinamik formüller kullanın.
Akıllı işaretçiler çoğu bilgi için veri kaynağı ve alan adı bölümlerinden oluşur. Özel bilgi, değişkenler ve değişken dizileri ile de iletilmiş olabilir. Değişkenler her zaman sadece bir hücreyi doldururken, değişken dizileri birkaç hücreyi doldurabilir. Bir hücre başına yalnızca bir veri işareti kullanın. Kullanılmayan akıllı işaretçiler kaldırılır.
Akıllı bir işaretçi ayrıca parametreler içerebilir. Parametreler, bilgilerin nasıl yerleştirildiğini değiştirmenize olanak tanır. Bunlar, virgülle ayrılmış bir liste olarak parantez içine akıllı işaretçinin sonuna eklenir.
Akıllı İşaretçi Seçenekleri
&=VeriKaynağı.AlanAdı &=[Veri Kaynağı].[Alan Adı] &=$DeğişkenAdı &=$DeğişkenDizisi &==DinamikFormül &=&=TekrarDinamikFormül
Parametreler
Aşağıdaki parametreler kabul edilir:
- noadd - Ekstra satırlar eklemeyin.
- skip:n - Her veri satırı için n sayısında satır atla.
- ascending:n veya descending:n - Veriyi akıllı işaretçilerde sıralayın. N 1 ise, sütun sıralayıcının ilk anahtarıdır. Veri, veri kaynağının işlenmesinden sonra sıralanır. Örneğin: &=Table1.Field3(ascending:1).
- horizontal - Veriyi yukarıdan aşağıya değil, soldan sağa yazın.
- numeric - Metni mümkünse numaraya dönüştürür.
- shift - Verileri sığdırmak için aşağı veya sağa kaydırır, ek satırlar veya sütunlar oluşturur. Kaydırma parametresi Microsoft Excel’deki gibi çalışır. Örneğin, Microsoft Excel’de bir hücre aralığını seçtiğinizde, sağ tıklayıp Ekle‘yi seçip hücreleri aşağı kaydır veya hücreleri sağa kaydır gibi seçenekleri belirttiğinizde. Kısacası, kaydırma parametresi dikey/normal (üstten alta) veya yatay (soldan sağa) akıllı işaretler için aynı işlevi doldurur.
- bean - Veri kaynağının basit bir POJO olduğunu belirtir. Yalnızca Java API’sinde desteklenir.
noadd ve skip parametreleri birleştirilerek verinin sırasıyla alternatif satırlara eklenmesi sağlanabilir. Şablonun alttan üste işlendiği için, alternatif satırın öncesine ek satırların eklenmesini engellemek için ilk satıra noadd eklemelisiniz.
Birden fazla parametreniz varsa, bunları virgülle ayırın, ancak boşluk bırakmayın: parametreA,parametreB,parametreC
Aşağıdaki ekran görüntüleri, her iki satıra veri eklemenin nasıl yapılacağını göstermektedir.
şu şekilde olur…
Dinamik Formüller
Dinamik formüller, dışa aktarma işlemi sırasında eklenecek satırlara referans olan hücrelere Excel formüllerini eklemenizi sağlar. Dinamik formüller her eklenen satır için tekrarlayabilir veya yalnızca veri işaretinin konumlandığı hücreyi kullanabilir.
Dinamik formüller aşağıdaki ek seçenekleri sağlar:
- r - Geçerli satır numarası.
- 2, -1 - Geçerli satır numarasına göre ofset.
Aşağıdaki, tekrar eden dinamik bir formülü ve sonuçta oluşan Excel çalışma sayfasını göstermektedir.
şu şekilde olur…
C1 hücresi =A1B1 formülünü, C2 = A2B2 formülünü ve C3 = A3*B3 formülünü içerir.
Akıllı İşaretleri işlemek çok kolaydır. Aşağıdaki örnek kod, Akıllı İşaretlerde dinamik formüllerin nasıl kullanılacağını göstermektedir. Şablon dosyasını yükler ve test verileri oluşturur, işaretleri işleyerek hücrelere veri doldurur.
// 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 Diziler Kullanma
Aşağıdaki örnek kod, Akıllı İşaretlerde değişken dizilerin nasıl kullanılacağını göstermektedir. Bir değişken dizi işareti ekler ve dinamik olarak işaretin içeriğini ayarladığımız bir dizi değer içerir, işaretleri işleyerek hücrelere veri doldurur. Son olarak, Excel dosyasını kaydederiz.
// 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"); |
Veri Gruplama
Bazı Excel raporlarında verileri okumayı ve analiz etmeyi kolaylaştırmak için verileri gruplara ayırmanız gerekebilir. Verileri gruplara ayırmak için temel amaçlardan biri, her kayıt grubu üzerinde hesaplamaları (özet operasyonları gerçekleştirmek) çalıştırmaktır.
Aspose.Cells akıllı işaretleri, verileri belirlenen alanlara göre gruplandırmanıza ve veri setleri veya veri grupları arasına özet satırlar yerleştirmenize olanak tanır. Örneğin, Veriler.CustomerID’ye göre gruplandırma yaparsanız, her grup değiştiğinde bir özet kaydı ekleyebilirsiniz.
Parametreler
Gruplandırma verileri için kullanılan bazı akıllı işaret parametreleri aşağıda verilmiştir.
group:normal/merge/repeat
Seçebileceğiniz üç tür gruplamayı destekliyoruz.
- normal - Gruplama alanının değeri sütundaki ilgili kayıtlar için tekrarlanmaz; bunun yerine her veri grubu için bir kez yazdırılır.
- merge - Normal parametre için aynı davranışa sahiptir, ancak her grup için gruplandırma alanlarını birleştirir.
- repeat - Gruplama alanının değeri ilgili kayıtlar için tekrarlanır.
Örnek: &=Veriler.CustomerID(group:merge)
skip
Her grup sonrasında belirli sayıda satır atlar.
Örnek: &=Çalışanlar.ÇalışanID(group:normal,skip:1)
subtotalN
Belirtilen bir gruplama alanıyla ilgili veri alanı için bir özet işlemi gerçekleştirir. N, veri listesinde alt toplamlar hesaplanırken kullanılan işlevi belirleyen 1 ile 11 arasındaki sayıları temsil eder. (1=ORTALAMA, 2=SAYI, 3=SAYMAK, 4=MAKS, 5=MIN,…9=TOPLAM vb.) Daha fazla ayrıntı için Microsoft Excel’in yardımında Subtotal başvurusuna bakınız.
Format aslında şu şekilde belirtilir: subtotalN:Ref, Ref gruplama sütununu temsil eder.
Örneğin,
- &=Ürünler.Birimler(subtotal9:Ürünler.ÜrünID) Ürünler tablosundaki Birimler alanı üzerinde ÜrünID alanına göre özet işlevi belirtir.
- &=Tabx.Col3(subtotal9:Tabx.Col1) Tabx tablosundaki Col1 tarafından gruplandırılan Col3 alanı üzerinde özet işlevi belirtir.
- &=Tablo1.ColumnD(subtotal9:Tablo1.ColumnA&Tablo1.ColumnB) Tablo1 tablosundaki ColumnA ve ColumnB tarafından gruplandırılan ColumnD alanı üzerinde özet işlevi belirtir.
Yerleşik Nesneleri Kullanmak
Aspose.Cells, akıllı işaretleyicilerde yerleşik nesneleri destekler, ancak yerleşik nesneler basit olmalıdır.
Basit bir şablon dosyası kullanıyoruz. Yerleşik akıllı işaretçiler içeren tasarım elektronik tablo dosyasına bakın.
Yerleşik akıllı işaretçileri gösteren tasarım dosyasının ilk çalışma tablosu.
Aşağıdaki örnek gösteriyor ki, bu nasıl çalışır. Aşağıdaki kodu çalıştırmak aşağıdaki çıktıya neden olur.
Sonuç verilerini gösteren çıktı dosyasının ilk çalışma tablosu.
// 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; | |
} | |
} |
Yerleşik Nesne Olarak Genel Liste Kullanma
Aspose.Cells artık genel bir listeyi yerleşik bir nesne olarak kullanmayı destekliyor. Lütfen aşağıdaki kodla oluşturulan çıktı elektronik tablo dosyasının ekran görüntüsüne bakın. Ekran görüntüsünde bir Öğretmen nesnesinin birden fazla yerleşik öğrenci nesnesi içerdiğini görebilirsiniz.
// 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ı İşaretçilerin HTML Özelliğini Kullanma
The following sample code explains the use of the HTML property of the Smart Markers. When it will be processed, it will show “World” in “Hello World” as bold because of HTML <b> tag.
// 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ı İşaretçilerle Veri Birleştirirken Bildirim Almak
Bazen, tamamlanmadan önce hücre başvurusu veya belirli Akıllı İşaretçinin işlenmesi hakkında bildirim alınması gerekebilir. Bunun WorkbookDesigner.CallBack özelliği ve ISmartMarkerCallBack ile başarılabileceği.
Örnek kod ve detaylı açıklama için lütfen bu makaleye bakın.