在智能标记中分组数据时使用Image Markers
Contents
[
Hide
]
本篇文章展示了在智能标记中分组数据时使用Image Markers的示例。
在智能标记中分组数据时使用Image Markers
以下是一个示例代码,它创建了一个工作簿,然后在分别的单元格D2、E2和F2中添加了以下智能标记标签。
&=Person.Name(group:normal,skip:1)
&=Person.City
&=Person.Photo(Picture:FitToCell)
然后,它用数据源填充数据,并调用 WorkbookDesigner.Process() 方法处理智能标记标签。代码中使用了这些图片,例如 moon.png 和 moon2.png,你也可以使用任何图片。下面的截图显示了此示例代码的输出,可以看到,E 列和 F 列的数据是按照 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; } | |
} |