`
xuxin012
  • 浏览: 9041 次
  • 性别: Icon_minigender_1
  • 来自: 天津
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

JXL制作属于自己的excel导入导出报表工具(二)xml和dtd

    博客分类:
  • Java
阅读更多

  接下来开始第二篇文章了,以前采用的那种类的静态成员变量做配置确实不是什么好办法,所以我也就不谈了,直接进入正题用xml来配置.目前我正在用MyEclipse,用过的人可能都知道,在我们写struts等配置文件时,我们可以用快捷键将所有的当前可用标签列出来,还可以将相应的属性列出来,十分方便,那么xml有哪些标签,有哪些属性,究竟如何定义呢?这就是我们要谈的dtd了.

<!DOCTYPE myreport SYSTEM "myreport.dtd">

   在xml文件中加入这么一句,那么我们所写的myreport.dtd就可以使用了.

 那么myreport.dtd是如何编写的呢?

 XML中的任何一个标签元素在dtd中都是如下这么定义的.

<!ELEMENT report (page?,allhead?,firsthead?,dynamic?,alltail?,lasttail?,count?)>

   report就是我们给这个标签的名称,而括号中的page 等是定义给report的子元素,当然这些也需要定义,和report的定义方式是一样的,后面的?代表该子标签出现0次或1次,此处还可以用+代表至少出现一次,*代表出现0次或多次,如果我们什么都不加,则代表只出现一次.

   除此之外,我们还可以为其指定属性,如下代码

  

<!ELEMENT report (page*,allhead?,firsthead?,dynamic?,alltail?,lasttail?,count?)>
<!ATTLIST report
	id CDATA #REQUIRED
	name CDATA #IMPLIED
	key CDATA #IMPLIED
	defaultFontName CDATA #IMPLIED
	defaultFontSize CDATA #IMPLIED
	defaultRowHeight CDATA #IMPLIED
	blockRows CDATA #IMPLIED
>

 用 ATTLIST可以指定一组属性,后面紧跟指明谁的属性,之后就是属性的定义了,首先是属性名,然后是类型

 #CDATA:指元素包含不通过解析器解析的字符数据。特殊字符和保留字不需要转义。常用这个
 #PCDATA:指元素包括解析器可解析字符数据。特殊字符和保留字需要转义才可以通过解析器。

 接着是,是否必须设定该属性IMPLIED为可选,REQUIRED则在XML中必须设定该属性.

 

 这样我们就可以定义好一个简单的属于我们自己的dtd了,以后mye也能按照我们写的给出提示了.

    

 但是还存在一各问题,就是我们有时可能需要指定xml中该属性的选择范围,如sex属性,我们仅允许选择男女.

 那么可以这样写

 

<!ATTLIST person 
  sex (男|女) "女"
>

    "女"代表默认值

 

 dtd的介绍就到这了,这些基本上足够满足我们的需求了.

 

   下面我们来想一下我们的报表工具都需要定义什么

 

   首先是根元素我们需要定义一个包含导入导出的根元素

 

 

<!ELEMENT myreport (report*,import*)>

 

 

 接下来如我前面举例,实现report,import,我们先只考虑report.

 

   作为一个报表,我们需要给其一个id,以便在一个xml中,我们可以定义多个报表的配置信息,并给其一个name,用于做为导出的excel名如:name为货品清单导出的则为货品清单.xls.其他的主键用于合并单元格,对于我在(一)中发的图来说就是物品名和型号.我们还可以为这个报表指定默认的字体,字体大小,以及行高.

 接下来就是定义动态数据和静态数据了,除了动态信息以外的六大部分都是静态数据,它们不需要循环.

 下面是具体的定义,注释写的很清楚就不做解释了.

 

<!--
代表一个动态数据
column x坐标
width  横跨单元格数
height 竖跨单元格数
rowHeight 行高
colWidth 列宽
field 对应bean的属性名
align 水平对齐
vAlign 垂直对齐
border 边框 left right top bottom all none 可用 可用|组合
type 类型 fixed固定 不调用bean 直接输出field的值 可用@index输出页码
		 format格式化输出 用?代表bean的field值  field可放入多个属性 以&分割
		 empty输出空字符
		 copy 拷贝field给定位置的内容 field 需要指定位置 格式如A-8
		 copywithformat 带格式拷贝 同copy 附带拷贝格式
		 formatcopy 先拷贝 然后将目标单元格中的?替换为bean的field值
		 prefix输出bean的field值之前 加上前缀 在prefix属性指定前缀
		 double输出bean的field小数值 保留2位
		 string 正常输出bean的field值
format 格式化内容 配合type为format 
prefix 前缀 配合type为prefix
fontName 字体名
fontSize 字体大小
fontColor 字体颜色
merge 是否合并 当report的key不为空时按key合并
bold 是否加粗
italic 是否斜体
underline 是否下划线
-->
<!ELEMENT dymdata (#PCDATA)>
<!ATTLIST dymdata
	column CDATA #REQUIRED
	width CDATA #IMPLIED
	height CDATA #IMPLIED
	rowHeight CDATA #IMPLIED
	colWidth  CDATA #IMPLIED
	field CDATA #IMPLIED
	align (left|right|centre) "centre"
	valign (top|bottom|centre) "centre"
	border CDATA #IMPLIED
	type (fixed|format|empty|copy|copywithformat|formatcopy|prefix|double|string) "string"
	format CDATA #IMPLIED
	prefix CDATA #IMPLIED
	fontName CDATA #IMPLIED
	fontSize CDATA #IMPLIED
	fontColor (black|white|red|bright_green|blue|yellow|light_orange|orange|brown|pink|dark_red|green|dark_blue|dark_yellow|grey_25_percent|grey_50_percent|ocean_blue|ice_blue|light_green|light_blue|gold|grey_40_percent|grey_80_percent) "black"
	merge (true|false) "false"
	bold (true|false) "false"
	italic (true|false) "false"
	underline (true|false) "false"
	notNull (true|false) "false"
>

 

 静态数据则只是多了relative来由我们控制输出的内容是相对位置还是绝对位置.

   建立好数据与page firsthead dynamic等之间的包含关系,dtd就完成了.

 写好dtd,我们就可以配置一个xml来用于今后报表工具测试.

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE myreport SYSTEM "myreport.dtd">
<myreport>
    <report id="test" name="test">
  <firsthead rows="4" columns="">
   <staticdata column="1" row="2" field="user" border="null" />
   <staticdata column="6" row="2" field="money" type="double" border="null"/>
   <staticdata column="1" row="3" field="date" border="null"/>
  </firsthead>
 </report>
</myreport>

 

 今天就写到这里了,下一次我们将实现xml的配置对象,以及如何将配置放入对象中去.

分享到:
评论

相关推荐

    JXL、POI实现Excel导入导出

    以上就是关于使用JXL和Apache POI实现Excel导入导出的基本知识。根据实际需求,你可以结合这两个库的功能,灵活地处理各种Excel文件操作。在实际项目中,通常会根据性能、功能需求以及文件兼容性等因素选择适合的库...

    Excel导入导出 jxl及Poi 工具类

    为了更好地理解这两个库的用法,你可以查看提供的"Excel导入导出(jxl及Poi)工具类"压缩包中的示例代码。通过阅读和运行这些代码,你可以更深入地了解如何在实际项目中应用jxl和Apache POI。 总的来说,jxl和Apache ...

    java使用jxl进行Excel导入导出

    Java 使用 JXL 进行Excel导入导出是一个常见的任务,特别是在数据处理和分析场景中。JXL 是一个 Java 库,允许开发者方便地读取、写入和操作 Excel 文件(.xls 格式)。以下是对这个主题的详细阐述: 1. **JXL 概述...

    jxl 实现excel导入导出

    在本文中,我们将深入探讨`jxl`库如何帮助开发者实现Excel的导入和导出功能。 首先,我们需要理解`jxl`库的基本结构和核心概念。`jxl`库主要包含以下几个关键类: 1. `Workbook`:这个类代表一个Excel工作簿,相当...

    jxl数据导入导出jxl数据导入导出jxl数据导入导出jxl数据导入导出

    通过以上解析,我们可以看到JXL库在处理数据导入导出时的灵活性和实用性,它简化了Java程序与Excel文件交互的过程。在实际项目中,这样的功能对于数据报表、批量数据处理和用户交互等方面都非常有用。

    jxl导入导出excel

    在Java编程环境中,JXL库是一个非常流行的工具,用于读取和写入Excel文件。它提供了简单易用的API,使得开发者能够方便地处理Excel数据,而无需依赖Microsoft Office套件。本文将深入探讨如何使用JXL进行Excel的导入...

    Jxl实现Excel的导入导出

    使用Jxl对Excel进行导入导出,其中包含设置单元格样式以及数据有效性。

    jxl资源包,用于Excel导入导出

    《jxl资源包:高效Excel导入导出的利器》 在IT行业中,处理数据往往是一项繁琐的任务,尤其是在数据量庞大的情况下。此时,高效的数据导入导出工具显得尤为重要。"jxl资源包"正是这样一个专为Java开发者设计的库,...

    jxl.jar包(java导入导出Excel文件)

    在Java编程中,处理Excel文件是一项常见的任务,尤其在数据导入导出、报表生成或数据分析等场景下。jxl.jar是一个专门为Java设计的库,它允许开发者轻松地读取、写入和修改Excel文件。这个库的功能强大,覆盖了从...

    jxl 实现 excel的导入和 导出

    在Java编程环境中,处理Excel数据是一项常见的任务,而`jxl`库则为开发者提供了方便的接口来实现Excel文件的导入和导出。`jxl`是一个开源的Java库,它允许用户读取、写入和修改Excel文件,无需依赖Microsoft Excel...

    java实现excel导入导出.pdf

    在 Java 中,实现 Excel 导入导出可以使用多种方式,本文将介绍使用 JXL 和 POI 两个库实现 Excel 导入导出的方法。 使用 JXL 库实现 Excel 导入导出 JXL(Java Excel API)是一个开源的 Java 库,用于读写 Excel ...

    java_Jxl导入导出Excel

    Java中的Jxl库是一个强大的工具,用于...总的来说,Jxl库为Java开发者提供了一个简单易用的接口来操作Excel文件,适合进行基础的导入导出和数据处理任务。然而,对于更复杂的Excel操作,可能需要寻找更强大的解决方案。

    JAVA中excel导入导出通用方法

    JAVA 中 excel 导入导出通用方法可以应用于各种需要 excel 文件交互的业务场景中,例如报表生成、数据导出等。该方法可以提高项目的开发效率和灵活性。 十、扩展阅读 * jxl 库的使用 * excel 文件的读写操作 * ...

    jxl导出excel工具类

    在Java编程领域,导出Excel数据是一项常见的任务,特别是在数据处理和报表生成中。`jxl`库是一个广泛使用的开源库,它允许开发者方便地读取和写入Microsoft Excel文件。本文将详细介绍如何使用`jxl`库创建一个导出...

    jxl导出excel加水印.zip

    在Java编程环境中,我们经常需要处理数据的导入和导出,Excel作为一种常见的数据存储和展示格式,被广泛应用。`jxl`库是一个流行的Java库,它允许开发者读取、写入和修改Excel文件。本教程将详细介绍如何使用`jxl`库...

    apache以及jxl对excel的导入导出

    Apache POI与JXL:Excel导入导出的深入解析 在Java编程中,处理Microsoft Excel文件是一项常见的任务,Apache POI和JXL是两个广泛使用的库,分别提供了强大的功能来读取、写入和操作Excel文件。这两个库使得开发者...

    JXL操作EXCEL 数据库导出EXCEL相关文件

    在IT行业中,处理和操作Excel数据是一项常见的任务,特别是在数据导入导出、分析和报告生成等领域。JXL是一个Java库,专门用于读取、写入和修改Excel文件,它为Java开发者提供了一种方便的方式来处理Excel数据,而...

    java_Jxl(导入导出Excel)

    java_Jxl(导入导出Excel) 导入导出Excel的jar包,与大家共同分享,互相学习

    jxl导入导出excel完美运行demo

    本示例"jxl导入导出excel完美运行demo"提供了一个完整的实现,使得开发者能够快速理解和应用Excel处理功能。 `jxl`库是Java中广泛使用的第三方库,它支持读取和写入Excel 97-2003格式(.xls)的文件。这个库提供了...

    EXCEL导入导出demo

    在IT行业中,Excel数据处理是一项常见的任务,尤其是在数据分析、报表制作和信息管理等领域。本示例"EXCEL导入导出demo"聚焦于如何利用Java的一个库——jxl,来实现JSP(Java Server Pages)对Excel文件的导入与导出...

Global site tag (gtag.js) - Google Analytics