`
hw_alex
  • 浏览: 87971 次
社区版块
存档分类
最新评论

ZK Spreadsheet(表格)组件

    博客分类:
  • ZK
阅读更多
zul页面代码
<?xml version="1.0" encoding="UTF-8"?>
<?taglib uri="http://www.zkoss.org/zss/function" prefix="ss" ?>
<zk>
 <window title="差旅费计算" use="org.zkoss.zss.demo.MainWindow"
  border="normal" style="heigth:300px;width:700px">
  <hbox>
   <label style="font-weight:bold" id="lbpos" value="A1"/>
   <textbox id="tbxval" width="600px" />
  </hbox>
  <spreadsheet id="ss1" url="/WEB-INF/travel.xls" maxrow="20" maxcolumn="20" height="300px" width="690px" style="border:1px solid #8AA3C1" />
  <vbox>
   <hbox>退还 (合计 * 0.5) : <label id="lb" value="${ss:formula(ss1.book, '=Sheet1!B5 * 0.5')}"/></hbox>
  </vbox>
  <zscript>
   ss1.book.addFormulaListener(new SimpleFormulaListener(lb, "value", "=Sheet1!B5 * 0.5"));
  </zscript>
 </window>
</zk>
java代码:MainWindow.java
package org.zkoss.zss.demo;

import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.ext.AfterCompose;
import org.zkoss.zss.engine.xel.Indexes;
import org.zkoss.zss.model.Book;
import org.zkoss.zss.model.Cell;
import org.zkoss.zss.model.Sheet;
import org.zkoss.zss.ui.CellEvent;
import org.zkoss.zss.ui.Events;
import org.zkoss.zss.ui.Spreadsheet;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;


public class MainWindow extends Window implements AfterCompose{

	int lastRow=0;
	int lastCol=0;
	Book book;
	Spreadsheet spreadsheet;
	
	
	public void afterCompose() {
		spreadsheet = (Spreadsheet)getFellow("ss1");
		
		//设置要读取的xls文件
		book = spreadsheet.getBook();
		
		spreadsheet.addEventListener(Events.ON_CELL_FOUCSED,new EventListener(){
			public void onEvent(Event event) throws Exception {
				onCellEvent((CellEvent)event);
			}
		});
		spreadsheet.addEventListener(Events.ON_START_EDITING,new EventListener(){
			public void onEvent(Event event) throws Exception {
				onCellEvent((CellEvent)event);
			}
		});
		
		final Textbox tbxval = (Textbox)getFellow("tbxval");
		tbxval.addEventListener("onChange",new EventListener(){
			public void onEvent(Event event) throws Exception {
				doCellChange(tbxval.getValue());
			}
		});
	}
	void onCellEvent(CellEvent event){
		Sheet sheet = (Sheet)book.getSheets().get(event.getSheetIndex());
		lastRow = event.getRow();
		lastCol = event.getColumn();
		Label lbpos = (Label)getFellow("lbpos");
		Textbox tbxval = (Textbox)getFellow("tbxval");
		
		Cell cell = sheet.getCell(lastRow, lastCol);
		lbpos.setValue(Indexes.toA1(lastRow,lastCol,false,false));
		tbxval.setValue(cell == null ? "" : cell.getEditText());
	}
		
	void doCellChange(String value){
		if(lastRow == -1){
			return;
		}
		Sheet sheet = (Sheet)book.getSheets().get(0);
		Cell cell = sheet.getCell(lastRow, lastCol);
		if(cell==null){
			sheet.setCellValue(lastRow, lastCol, "");
			cell = (Cell)sheet.getCell(lastRow,lastCol);
		}
		cell.setEditText(value);
	}

}

 

使用说明:

1、双击单元格或者按F2键可以编辑单元格。

2、可以按上下左右键,HOME、END键来移动焦点。

3、编辑的时候,你可以输入文本,数字或者公式,比如=SUM(B1:B4)

4、按ENTER完成编辑,按ESC退出编辑

效果图:

 

  • 大小: 23.9 KB
分享到:
评论
3 楼 hurui3550 2009-05-13  
不知道博主现在还经常在不呢?有两个问题想请教下。

1、spreadsheet 可不可以嵌套到jsp代码中去。看了zkJspTag里面是没有的。所以好像只能用其他方式。
2、如何设置某个单元格只读。 不是Event.Cancel()。 而是只读,根本就不让他触发on_start_edit方法。

谢谢!
2 楼 hw_alex 2008-12-12  
这个excel是ZK例子里自带的
1 楼 duduniao 2008-12-12  
travel.xls 从哪弄呢!

相关推荐

    zk spreadsheet3.9.1 在线电子表格

    ZK Spreadsheet 3.9.1 是一个基于Web的电子表格组件,专为构建在线协作和数据编辑的应用程序设计。这个版本提供了与Microsoft Excel类似的功能,让用户能够在浏览器中创建、编辑和共享电子表格,无需安装任何桌面...

    ZK Spreadsheet(3-1)

    ZK Spreadsheet(3-1)

    ZK Spreadsheet API.chm

    ZK Spreadsheet API.chm ZK Spreadsheet API.chm

    ZK Spreadsheet(3-2)

    zk.part2.rar(3-2)

    轻量级在线表格(canvas ) 组件.zip

    本篇文章将深入探讨一个名为“x-spreadsheet-master”的开源项目,它是一个基于JavaScript和canvas技术的轻量级在线表格组件。 首先,让我们了解什么是canvas。Canvas是HTML5中的一项重要特性,它提供了一个二维...

    ZK Spreadsheet(3-3)

    标题“ZK Spreadsheet(3-3)”暗示我们正在讨论的是关于ZK Spreadsheet的一个特定部分,可能是教程或更新的第三部分。"zk.part3.rar(3-3)"的描述可能是一个压缩文件,包含了该系列内容的第三个部分,可能是文档、...

    zkspreadsheet:ZK Spreadsheet是一个基于Web的开源可嵌入的在线电子表格,可在使用纯Java的浏览器中提供Excel的丰富功能。 借助可嵌入的Excel功能,开发人员能够轻松创建交互式,协作和动态的企业应用程序

    ZK试算表ZK Spreadsheet是一个基于Web的开源可嵌入的在线电子表格,可在使用纯Java的浏览器中提供Excel的丰富功能。 借助可嵌入的Excel功能,开发人员可以轻松创建交互式,协作和动态的企业应用程序。 较新的。 更好...

    PhpSpreadsheet Excel组件,PHPExcel升级版

    PhpSpreadsheet是一个纯PHP编写的组件库,它使用现代PHP写法,代码质量和性能比PHPExcel高不少,完全可以替代PHPExcel(PHPExcel已不再维护)。使用PhpSpreadsheet可以轻松读取和写入Excel文档,支持Excel的所有操作...

    SpreadSheet简单使用实例

    1、SpreadSheet是一个Excel操作封装类,使用起来比其他的更为方便。 2、修正了原版SpreadSheet几个错误问题 3、压缩包里面包含了SpreadSheet的简单使用示例。 4、使用vs2008编译通过

    xspreadsheet一个用于Web的JavaScript电子表格

    《x-spreadsheet:Web端JavaScript电子表格组件详解》 在现代互联网应用中,电子表格是一种常见的数据管理和分析工具,广泛应用于数据输入、处理和展示。JavaScript作为前端开发的主要语言,自然也诞生了许多用于...

    x-spreadsheet.zip

    “x-spreadsheet”是一款轻量级的前端组件,专为Web Excel需求设计。它具有良好的兼容性,支持多种浏览器版本,包括Chrome、Firefox、Safari等主流浏览器,这使得它能够在广泛的用户群体中流畅运行。它的核心优势...

    spreadsheet:荧光粉的电子表格组件

    荧光粉的电子表格组件 安装 git clone https://github.com/jupyter/spreadsheet.git cd spreadsheet npm install tsd reinstall -so gulp 在电子表格目录中或在与电子表格目录相同级别的单独目录中构建磷光体。 ...

    dhtmlxSpreadsheet v2.1标准版(web电子表格控件)

    程序员可以容易的添加一个类似Excel功能的,可编辑的表格功能到自己的Web应用中。 [单元格格式化和函数功能] 使用dhtmlxSpreadsheet的单元格格式化功能,用户可以为不同的单元格设置不同的字体颜色,单元格背景,...

    react-spreadsheet:Excel之类的React电子表格组件

    像数据网格组件一样ReactExcel。 演示和文档 提供现场示例。 可文档。 特征 行/列大小调整; 固定行和列; 合并细胞; 自定义单元格; 虚拟化 造型风格 要获得基本样式,可以导入默认样式: import '@vadim-...

    XlsSpreadSheetDemo_D7.rar

    总之,"XlsSpreadSheetDemo_D7"是一个学习如何在Delphi中使用Spreadsheet Gear组件进行Excel电子表格开发的绝佳实例。通过深入研究这个项目,开发者可以掌握从基础到高级的Excel文件操作技术,为自己的项目提供强大...

    PhpSpreadsheet一个读取和写入电子表格文件的纯PHP库

    PhpSpreadsheet 是一个强大的 PHP 库,专门用于处理电子表格文件,它提供了读取和写入多种格式的功能,如 Microsoft Excel 的 .xlsx、.xls 以及 LibreOffice Calc 的 .ods 文件。这个库完全用 PHP 编写,无需依赖...

    iOS 类似 Excel 的 SpreadSheet 组件效果.zip

    iOS 类似 Excel 的 SpreadSheet 组件效果。.zip,iOS应用程序的完全可配置电子表格视图用户界面。使用此框架,您可以轻松创建复杂的布局,如计划、甘特图或时间表,就像使用Excel一样。

    关于Spreadsheet 对象的方法、事件、属性

    Spreadsheet对象通常指的是电子表格应用程序中的工作簿或工作表,如Microsoft Excel或Google Sheets。这些对象提供了丰富的功能,包括方法、事件和属性,使得开发人员可以进行数据处理、分析、计算以及创建复杂的...

    react-ReactSpreadsheetGrid用于React类似于Excel的网格组件

    在实际项目中,你可以利用React SpreadSheet Grid来实现数据的增删改查、排序、过滤等功能,创建一个功能丰富的在线电子表格应用。例如,用于财务管理、数据分析或者作为企业内部的信息管理系统等。 在下载的压缩包...

Global site tag (gtag.js) - Google Analytics