读书人

extjs 4.0 作的 Excel 小功能

发布时间: 2012-10-06 17:34:01 作者: rapoo

extjs 4.0 做的 Excel 小功能

公司出的 三级程序程序员试题

?

题目如下

?

实现一可编辑的表格,表格布局类似Excel,行号用数字表示,列号用26进制字母组合表示,支持单元格间简单公式计算,如在A1单元格输入1,A2输入2,A3输入=A1+A2,回车后A3自动计算出3

?

excel.html

只包含了 导入extjs 文件

?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Untitled Document</title><!-- ext --><link rel="stylesheet" type="text/css" href="ext-4.0/resources/css/ext-all.css" />    <link rel="stylesheet" type="text/css" href="ext-4.0/shared/example.css" /><link rel="stylesheet" type="text/css" href="ext-4.0/examples/ux/css/CheckHeader.css" />    <script type="text/javascript" src="ext-4.0/bootstrap.js"></script><script type="text/javascript" src="excel.js"></script></head><body></body></html>

?excel.js

?

Ext.Loader.setConfig({    enabled: true});Ext.Loader.setPath('Ext.ux', 'ext-4.0/examples/ux');Ext.require(['Ext.grid.*','Ext.data.*','Ext.util.*','Ext.state.*','Ext.selection.CellModel',    'Ext.form.*',    'Ext.ux.CheckColumn'])Ext.onReady(function(){Ext.QuickTips.init();var excelArr = new Array();     //作示部份var index=1;for(var i=0;i<26;i++){var str = new Array();for(var j=0;j<26;j++){if(j==0)str.push(index);elsestr.push('');}index++;excelArr.push(str);}var tempStor = new Array();   //作store  fieldsfor(var i=0;i<27;i++){var temp ;if(i==0){temp = {name: 1,      type: 'float'}}else{temp = {name: (String.fromCharCode(65+i-1)),      type: 'float'}}tempStor.push(temp);}var store = Ext.create('Ext.data.ArrayStore', { //取store        fields:tempStor ,        data: excelArr    });var gridData = new Array();   //作 grid columnsgridData.push({ text     : 'no',locked:true,sortable : false,width:50,dataIndex: 1});for(var i=1;i<27;i++){gridData.push({ text     : String.fromCharCode(65+i-1),sortable : false,width:50,dataIndex: (String.fromCharCode(65+i-1)),field: 'textfield',});}var grid = Ext.create('Ext.grid.Panel', {        store: store,autoScroll:true,plugins: [        Ext.create('Ext.grid.plugin.CellEditing', {            clicksToEdit: 1,listeners:{'edit':function(editor,e,options){   //监听修改事件value = e.value;var err = value.match(/^([a-zA-Z]{1})([0-9]{1,3})([+|\-|*|\/]{1})([a-zA-Z]{1})([0-9]{1,3})$/)//使用正则表达式if(err!=null){var v1 = (grid.getStore().getAt(err[2]-1).get(err[1].toUpperCase())); //获取第一个的值var v2 = (grid.getStore().getAt(err[5]-1).get(err[4].toUpperCase())); //获取第二个的值var result = eval(v1+err[3]+v2);  //计算grid.getStore().getAt(e.rowIdx ).set(e.column.text,result);  //添加进表格}if(value.match(/^[0-9|\-|.]{1,10}$/)==null&&err==null){grid.getStore().getAt(e.rowIdx ).set(e.column.text,'0');  //添加进表格}}}        })    ],columnLines:true,flex:1,        columns: gridData,        height: 550,        width: 1200,        renderTo: Ext.getBody(),    });});

读书人网 >JavaScript

热点推荐