Uso de marcadores de imagen al agrupar datos en marcadores inteligentes
Contents
[
Hide
]
Este artículo presenta un ejemplo que ilustra el uso de marcadores de imagen al agrupar datos en marcadores inteligentes.
Uso de marcadores de imagen al agrupar datos en marcadores inteligentes
El siguiente código de ejemplo crea un libro de trabajo y luego agrega las siguientes etiquetas de marcador inteligente en las celdas D2, E2 y F2 respectivamente.
&=Person.Name(group:normal,skip:1)
&=Person.City
&=Person.Photo(Picture:FitToCell)
Luego llena la fuente de datos con datos y llama alWorkbookDesigner.Proceso() método para procesar etiquetas de marcadores inteligentes. El código utiliza estas imágenes, es decirluna.png yluna2.png pero puedes usar cualquier imagen. La siguiente captura de pantalla muestra el resultado de este código de ejemplo. Como puede ver, los datos de la columna E y F están agrupados con respecto a los datos de la columna D.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static void main(String[] args) throws Exception { | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(SmartMarkerGroupingImage.class); | |
SmartMarkerGroupingImage grouping = new SmartMarkerGroupingImage(); | |
grouping.Execute(dataDir); | |
} | |
public void Execute(String dataDir) throws Exception { | |
//Get the image | |
Path path = Paths.get(dataDir + "sample1.png"); | |
byte[] photo1 = Files.readAllBytes(path); | |
//Get the image | |
path = Paths.get(dataDir + "sample2.jpg"); | |
byte[] photo2 = Files.readAllBytes(path); | |
//Create a new workbook and access its worksheet | |
Workbook workbook = new Workbook(); | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
//Set the standard row height to 35 | |
worksheet.getCells().setStandardHeight(35); | |
//Set column widhts of D, E and F | |
worksheet.getCells().setColumnWidth(3, 20); | |
worksheet.getCells().setColumnWidth(4, 20); | |
worksheet.getCells().setColumnWidth(5, 40); | |
//Add the headings in columns D, E and F | |
worksheet.getCells().get("D1").putValue("Name"); | |
Style st = worksheet.getCells().get("D1").getStyle(); | |
st.getFont().setBold(true); | |
worksheet.getCells().get("D1").setStyle(st); | |
worksheet.getCells().get("E1").putValue("City"); | |
worksheet.getCells().get("E1").setStyle(st); | |
worksheet.getCells().get("F1").putValue("Photo"); | |
worksheet.getCells().get("F1").setStyle(st); | |
//Add smart marker tags in columns D, E, F | |
worksheet.getCells().get("D2").putValue("&=Person.Name(group:normal,skip:1)"); | |
worksheet.getCells().get("E2").putValue("&=Person.City"); | |
worksheet.getCells().get("F2").putValue("&=Person.Photo(Picture:FitToCell)"); | |
//Create Persons objects with photos | |
ArrayList<Person> persons = new ArrayList<Person>(); | |
persons.add(new Person("George", "New York", photo1)); | |
persons.add(new Person("George", "New York", photo2)); | |
persons.add(new Person("George", "New York", photo1)); | |
persons.add(new Person("George", "New York", photo2)); | |
persons.add(new Person("Johnson", "London", photo2)); | |
persons.add(new Person("Johnson", "London", photo1)); | |
persons.add(new Person("Johnson", "London", photo2)); | |
persons.add(new Person("Simon", "Paris", photo1)); | |
persons.add(new Person("Simon", "Paris", photo2)); | |
persons.add(new Person("Simon", "Paris", photo1)); | |
persons.add(new Person("Henry", "Sydney", photo2)); | |
persons.add(new Person("Henry", "Sydney", photo1)); | |
persons.add(new Person("Henry", "Sydney", photo2)); | |
//Create a workbook designer | |
WorkbookDesigner designer = new WorkbookDesigner(workbook); | |
//Set the data source and process smart marker tags | |
designer.setDataSource("Person", persons); | |
designer.process(); | |
//Save the workbook | |
workbook.save(dataDir + "output.xlsx", SaveFormat.XLSX); | |
System.out.println("File saved"); | |
} | |
public class Person | |
{ | |
//Create Name, City and Photo properties | |
private String m_Name; | |
private String m_City; | |
private byte[] m_Photo; | |
public Person(String name, String city, byte[] photo) | |
{ | |
m_Name = name; | |
m_City = city; | |
m_Photo = photo; | |
} | |
public String getName() { return this.m_Name; } | |
public void setName(String name) { this.m_Name = name; } | |
public String getCity() { return this.m_City; } | |
public void setCity(String address) { this.m_City = address; } | |
public byte[] getPhoto() { return this.m_Photo; } | |
public void setAddress(byte[] photo) { this.m_Photo = photo; } | |
} |