ZK SpreadSheet简介
ZK SpreadSheet,简称ZSS。它是唯一可嵌入的Java Web应用程序的Ajax组件。它是ZK框架的一个组件,专门用于处理excel文件,加载、生成、编辑、下载等。
https://www.zkoss.org/product/zkspreadsheet
代码剖析
体验
下载Demo工程https://github.com/zzyymaggie/ZK_HelloWorld,按照readme运行和查看结果。
代码结构
解释一下该项目的代码结构。这里可以参考 ZK框架学习(一)的代码剖析。zss只是zk的一个组件,运行框架是一样的。这里只解释差异的部分。
1. pom.xml 增加zss的依赖
<dependency>
<groupId>org.zkoss.zss</groupId>
<artifactId>zss</artifactId>
<version>${zss.version}</version>
</dependency>
<!-- [Optional] Using ZK Spreadsheet EE -->
<dependency>
<groupId>org.zkoss.zss</groupId>
<artifactId>zssex</artifactId>
<version>${zss.version}</version>
</dependency>
2.excel加载
2.1 编写zul
<?page title="My First ZK Spreadsheet application" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="My First ZK Spreadsheet Application"
apply="org.sophia.spreadsheet.MyComposer"
border="normal" height="100%" width="100%">
<spreadsheet id="ss" height="100%" width="100%"
maxVisibleRows="150" maxVisibleColumns="40" showContextMenu="false"
showToolbar="false" showSheetbar="true" showFormulabar="false"/>
</window>
</zk>
excel文件可以由Compsoer加载,也可以直接在spreadsheet标签中,配置src属性加载。
2.2 编写Composer
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp); //wire variables and event listeners
//access components after calling super.doAfterCompose()
//import and load the template excel file "/WEB-INF/books/startzss.xlsx"
Importer importer = Importers.getImporter();
Book book = importer.imports(getFile(), "sample");
ss.setBook(book);
}
private File getFile() {
//get a file
return new File(WebApps.getCurrent().getRealPath("/WEB-INF/books/startzss.xlsx"));
}
运行原理
ZK Spreadsheet 组件包括三个关键的部分:
- 客户端UI
它是一个网格小部件,你可以就地编辑单元格的内容。 - 服务端组件
就像你的Controller那样工作。 - 包含公式计算引擎的book数据模型
数据模型存储真正的电子表格数据,公式计算引擎负责解析和计算公式。