四、从XML读取数据表格

XML是一种常见的数据,其应用也非常广泛。现在新建一个名为xmlgrid.html网页,其内容如下:

<!DOCTYPE html PUBLIC “-//W3C//DTDHTML 4.01//EN”>

<html>

<head>

<meta http-equiv=”Content-Type”content=”text/html; charset=UTF-8; user-scalable=no”>

<title>XML表格</title>

<link rel=”stylesheet”type=”text/css” href=”resources/css/ext-all.css”/>

<scripttype=”text/javascript” src=”bootstrap.js”></script>

<script type=”text/javascript” src=”xmlgrid.js”></script>

</head>

<body>

<div id=”myDataGrid”width=”100%” height=500></div>

</body>

</html>

然后新建一个xmlgrid.xml文件,其内容如下:

<?xml version=”1.0” encoding=”UTF-8”?>

<MyXML>

<student>

<name>张三</name>

<gender></gender>

<studentNO>2012001</studentNO>

<height>170</height>

<birthday>1985 9/1 12:00am</birthday>

</student>

<student>

<name>王芳</name>

<gender></gender>

<studentNO>2012003</studentNO>

<height>160</height>

<birthday>1985 10/10 12:00am</birthday>

</student>

<student>

<name>王五</name>

<gender></gender>

<studentNO>2012002</studentNO>

<height>168</height>

<birthday>1983 5/21 12:00am</birthday>

</student>

</MyXML>

最后,新建一个xmlgrid.js文件,在该文件中添加加载上面xml文件的代码,如下:

Ext.require([ //添加需要引用的库

‘Ext.grid.*’,

‘Ext.data.*’,

‘Ext.util.*’,

‘Ext.state.*’

]);

Ext.onReady(function(){

//1定义表格列数据模型,包括列名称、数据类型

Ext.define(‘studenetInfo’, {

extend: ‘Ext.data.Model’,

fields: [

{name: ‘name’}, //姓名为字符串

{name: ‘gender’},//性别也为字符串

{name: ‘studentNO’,type: ‘int’, convert: null,defaultValue: undefined},//学号为int

{name: ‘height’,type: ‘float’, convert: null,defaultValue: undefined},//高度为float

{name: ‘birthday’, type: ‘date’,dateFormat: ‘Yn/j h:ia’,defaultValue: undefined}//生日为date

],

idProperty: ‘name’//ID属性

});

//2 创建数据对象

var store = Ext.create(‘Ext.data.Store’, {

model: ‘studenetInfo’,

autoLoad: true, //自动加载

proxy: {

type: ‘ajax’,

url: ‘xmlgrid.xml’,//xml文件

reader: {

type: ‘xml’,

record: ‘student’,

idProperty: ‘name’,

totalRecords: ‘@total’

}

}

});

//3 创建表格

var grid = Ext.create(‘Ext.grid.Panel’, {

store: store,

columns: [

{text: 姓名”, width: 100, dataIndex: ‘name’, sortable: true},

{text: 学号”, width: 60, dataIndex: ‘studentNO’, sortable: true},

{text: 性别”, width: 60, dataIndex: ‘gender’, sortable: true},

{text: 身高”, width: 60, dataIndex: ‘height’, sortable: true},

{text: 出生时间”, flex: 1, dataIndex: ‘birthday’, renderer : Ext.util.Format.dateRenderer(‘m/d/Y’),sortable: true}

],

title:’XML数据表格’,

renderTo:’myDataGrid’,

width: 500,

height: 200

});

Ext.MessageBox.alert(“xml表格”,这是来自于xml的表格数据”);

});

以上js文件中的内容与前面一例中基本相似,只是在创建数据对象store的时候有些差别,原先的表格数据直接来源于定义的数组,所以store的data就直接来源于这个定义的数组,但是现在store的数据要来源于xml文档,通过proxy可以读取xml文件(proxy用于从某个途径读取原始数据,如MemoryProxy等),通过reader来读取数据,如下:

var store = Ext.create(‘Ext.data.Store’, {

model: ‘studenetInfo’,

autoLoad: true, //自动加载

proxy: {

type: ‘ajax’,

url: ‘xmlgrid.xml’,//xml文件

reader: {

type: ‘xml’,

record: ‘student’,

idProperty: ‘name’,

totalRecords: ‘@total’

}

}

});

值得注意的是,尽管这三个文件xmlgrid.html、xmlgrid.js和xmlgrid.xml存放在同一路径下,但是必须要在服务器上浏览才能加载xml数据,如在IIS上发布然后浏览,其结果如下图所示:



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用 easyExcel 读取动态列 xls 表格数据的方法如下: 1. 首先导入 easyExcel 相关的依赖包: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.11</version> </dependency> ``` 2. 定义一个类作为读取表格数据的模板,其中使用 @ExcelProperty 注解标注每一列对应的属性名,如下所示: ```java public class ExcelData { @ExcelProperty("姓名") private String name; @ExcelProperty("年龄") private Integer age; // 省略 getter 和 setter 方法 } ``` 3. 使用 easyExcel 提供的 ExcelReader 对象读取 Excel 表格数据,代码如下: ```java public void readExcelData(String filePath) { ExcelReader reader = null; try { reader = EasyExcel.read(filePath, ExcelData.class, new ExcelDataListener()).build(); // 读取第一个 sheet reader.readSheet(0); } finally { if (reader != null) { reader.finish(); } } } // 定义一个监听器处理读取到的每一行数据 public class ExcelDataListener extends AnalysisEventListener<ExcelData> { @Override public void invoke(ExcelData data, AnalysisContext context) { // 处理读取到的数据 System.out.println(data.getName() + ", " + data.getAge()); } } ``` 其中,ExcelDataListener 是一个实现了 easyExcel 的 AnalysisEventListener 接口的监听器,用于处理读取到的每一行数据。 注意,在读取表格数据时,easyExcel 默认会将表格的第一行作为列名,因此需要在 ExcelData 类中使用 @ExcelProperty 注解标注每一列对应的属性名,否则 easyExcel 无法正常读取数据。 另外,easyExcel 也支持读取动态列的表格数据,可以使用 @ExcelProperty(index = n) 注解标注每一列在表格中的位置,其中 n 为列的索引,从 0 开始计数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值