jxl.jar使用方法

合集下载

东南大学计算机Java作业成绩管理系统

东南大学计算机Java作业成绩管理系统

东南大学题目学生成绩管理系统学院计算机学院专业班别学号姓名摘要随着网络通信技术的迅速发展和信息技术的广泛应用,计算机的应用已普及到经济和社会生活的各个领域。

教育领域也不例外,现今已经出现了各种远程网络在线教育系统、图书管理系统、学籍管理系统,学生成绩管理系统等。

其中成绩管理系统是任一院校都不可缺少的部分,它的内容对于学校的决策者和教育管理者来说都是至关重要,而传统的人工管理方式效率较低,为数据的查询、更新和维护带来了极大的不便。

所以学生成绩管理信息系统的开发和应用是必要的,它能够为管理人员提供充足的信息和快捷的查询手段,提高学校学生成绩管理的效率。

本文的学生成绩管理系统是给予C/S模型的,它提供了强大的学生成绩管理功能,方便系统管理员对学生成绩等信息的添加、修改、删除、查询等操作,同时一样的方便学生对自己各科成绩查询,学习的交流。

本系统也主要利用java语言和SQLserver2005实现,因此它具有很强的可移植性,很方便。

关键字:学生成绩管理系统java JDBC SQL jxl.jarAbstractAlong with the fast development of network communication technology and the wide application of information technology, the computer application to the economical and social life each domain. Education is no exception, now has a variety of remote network education system, library management system, student management system, student achievement management system. The performance management system is one of the institutions are an indispensable part, its contents for the policy makers and school education managers is critical, and the traditional manual management mode is the low efficiency, data query, update and maintenance has brought great inconvenience. So the student achievement management information system development and application is necessary, it can provide adequate staff for management information and the quick inquiry method, improve student achievement school management efficiency.The student achievement management system is given by C / S model, which provides a powerful student achievement management functions, the system administrator to facilitate student achievement and other information to add, modify, delete, query and other operations, like the convenience of their students all query results, learning exchanges. This system is mainly the use of Java language and SQLserver2005 to achieve, so it has strong portability, very convenient.Keywords: student achievement management system for Java JDBC SQL jxl.jar目录Abstract (2)Keywords: student achievement management system for Java JDBC SQL jxl.jar (3)第一章绪论 (5)1.1 背景 (5)1.2基于B/S结构技术的应用 (6)第二章需求分析 (7)2.1 开发目标 (7)2.2项目的意义 (7)2.3可行性分析 (8)2.3.1 经济上可行性 (8)2.3.2 技术上可行性 (8)2.3.3 操作可行性 (9)2.4主要研究内容 (9)2.5系统环境需求 (9)第三章系统分析 (10)3.1 系统分析 (10)3.2 应解决的问题 (11)3.2.1合理的设计数据库 (11)3.2.2设计出友好的界面 (11)3.2.3实现的基本功能 (11)3.3 系统调查 (12)3.3.1 统计数据源 (12)3.3.2 功能调查 (12)3.3.3查询结果输出形式 (12)3.4 系统模块结构图 (13)3.5 系统业务流程图 (13)3.5.1 系统总业务流程图 (14)3.5.2 登录业务流程图 (15)第四章数据库设计 (15)4.1 数据库系统分析 (15)4.2 调查结果 (18)4.2.1 功能需求 (18)4.2.2 数据字典 (18)4.2.3数据库表的具体设计 (18)第五章系统功能和代码编写 (20)5.1系统模型实际 (20)5.1.1系统主界面 (22)5.1.2 学生添加界面 (24)5.1.3 学生添加界面 (26)5.1.4 选修课添加界面 (29)5.1.5学生界面 (32)5.1.6个人信息 (33)第六章系统测试 (36)6.1 测试准备 (36)6.2 测试的目标 (36)6.3 测试方法 (37)6.3.1 功能测试 (37)6.3.2 性能测试 (37)6.3.2 界面测试 (38)6.4 测试技术 (38)第七章结束语 (39)致谢 (40)参考文献 (41)第一章绪论1.1 背景现在的社会日新月异,发展的非常快。

JXL入门常用格式设置

JXL入门常用格式设置

JXL⼊门常⽤格式设置创建//输出流OutputStream os = new FileOutputStream(“D:\\test.xls”);//创建workbookWritableWorkbook workbook= Workbook.createWorkbook(os);//创建⼀个sheet 参数(sheetName ,sheetNumber)下标0开始代表第⼀页WritableSheet sheet = workbook.createSheet(“第⼀个sheet”, 0);宽度、⾼度、和并单元格//设置列的默认列宽(所有单元格)sheet.getSettings().setDefaultColumnWidth(9);//设置列的默认⾏⾼(所有单元格)sheet.getSettings().setDefaultRowHeight(500);//宽度设定第⼀列宽16 下标0开始代表第⼀列sheet.setColumnView(0, 16);//⾼度设定第⼀⾏⾼度700sheet.setRowView(0, 700);//单元格合并开始列号,开始⾏号,结束列号,结束⾏号sheet.mergeCells(0, 0, 31, 0);⽂字格式: 字体、⼤⼩、背景⾊、对齐、边框线、⾃动换⾏想使⽤⾃⼰定义的颜⾊请关注本⼈百度空间实现⽅法。

//⽣成字体字体MSPゴシック18号⾮粗体⾮斜体(字体在Excle中复制)WritableFont font = new WritableFont(WritableFont.createFont("MSPゴシック"), 18, WritableFont.NO_BOLD, false);//⽣成格式WritableCellFormat format= new WritableCellFormat();//向格式中加⼊字体format.setFont(font);//背景⾊format .setBackground(Colour.BLUE)//⽔平对齐format.setAlignment(Alignment.CENTRE);//垂直对齐format.setVerticalAlignment(VerticalAlignment.CENTRE);//边框线所有边框细线format.setBorder(Border.ALL, BorderLineStyle.THIN);//⾃动换⾏这⾥为true 时在⽂本中打\n会⾃动换⾏,不然要⼿动点⼀下才会换⾏format.setWrap(true);数字格式:百分⽐、分隔符等//百分⽐⽤右键EXCEL单元格---格式设置----表⽰形式---⽤户定义把格式复制到这⾥WritableCellFormat formate = new WritableCellFormat(numberFormat);……此处省略字体对齐等//千位加逗号⽤NumberFormat nf = new NumberFormat("#,##0");WritableCellFormat formate = new WritableCellFormat(nf);……此处省略字体对齐等//数字强制⽂本//下⾯代码插⼊以零开头的纯数字⽂本“000222”//sheet.addCell(new Label(33, rowNo,"000222", fromart));//虽然前⾯三个零会显⽰,但当我们双击单元格以后,前⾯的零会消失!!//解决办法:WritableCellFormat kodoFromart = new WritableCellFormat(NumberFormats.TEXT); …….此处省略字体对齐等sheet.addCell(new Label(33, rowNo,"000222", kodoFromart));写⼊:⽂本、数字、⼯式//⽂本写⼊第⼀列第⼆⾏插⼊⽂本“⽂本写⼊Test “,使⽤格式formatesheet.addCell(new Label(0, 1 ,”⽂本写⼊Test”, formate));//数字sheet.addCell(new jxl.write.Number(1, 1,99999 ,format));sheet.addCell(new jxl.write.Number(2, 1,99999 ,format));//插⼊⼯式sheet.addCell(new Formula(3, 1, “sum(B1:C1)”, format));。

Excel_DEMO

Excel_DEMO
Label cLable5 = new Label(4, colind, rowmap.get("4"),wcf);
//将信息装入到sheet页中
try {
sheet.addCell(cLable1);
sheet.addCell(cLable2);
sheet.addCell(cLable3);
sheet.addCell(cLable4);
// TODO Auto-generated method stub
TestJxl Tj = new TestJxl();
//调用导出方法
Tj.expExl();
//调用导入方法
Tj.impExl();
}
//上传表格并保存到数据库,现将表格上传到服务器,然后将完整文件名(包含路径)传到该方法,通过该方法读取表格中信息,将信息整理存入数据库
String fileName = "下载文件名称1.xls";
String dtPath = "D:\\"+fileName;
//根据路径获取电子表格
Workbook workbook;
try {
workbook = Workbook.getWorkbook(new File(dtPath));
//获取电子表格的所有sheet,如果知道几个sheet也可以指定具体的sheet
WritableWorkbook workbook = null;
try {
//根据路径生成电子表格
workbook = Workbook.createWorkbook(new File(dtPath));
//创建sheet及名称
WritableSheet sheet = workbook.createSheet("第一个sheet", 0);

Eclipse导出jar文件的两种方式

Eclipse导出jar文件的两种方式

具体做法如下:方法一:(工程没有引用外部jar包时,直接导出)选中工程---->右键,Export...--->Java--->JAR file--->next-->选择jar file的路径及名称-->next-->next---> 选择main class--->finish.方法2:当工程引用了其他的外部jar时,由于eclipse不支持同时导出外部jar包的功能,所以比较麻烦一点;具体步骤如下:生成manifest file:选中工程--->右键,Export--->Java--->JAR file--->选择jar file的路径及名称--->next--->next--->next;此时来到了方法1中要选择main class的窗口,但这里先不选择main class,选择最上方的Generate the manifest file, 勾上Save the manifest in the workspace,在Manifest file:中输入file的名称,如/testProject/main,(其中testProject为工程名,main为man ifest file的名称)点击finish,回到工程,打开刚刚生成的main,在这里要输入如下信息:Manifest-Version: 1.0Main-Class: com.pacong.convert.auto.propertes.ConvertAutoPropertiesClass-Path: jxl.jar其中,Manifest-Version: 1.0为刚刚自动生成的manifest版本号;Main-Class: com.pacong.convert.auto.propertes.ConvertAutoProperties为main class所在类;Class-Path: jxl.jar为外部jar包名称,这里是告诉导出的jar包,所要用到的外部的jar包的路径及名称。

Java读取Excel文件的几种方法

Java读取Excel文件的几种方法

Java读取Excel文件的几种方法最近单位有个项目需要读取excel文件的内容,特别对java读取excel文件的方法做了一点学习,也为了其他人以后能更简单地开发,少走弯路,特写此文,以下程序经过了我的测试,可以保证程序可用,如果你照搬都不行,可能是你的环境有问题。

读取excel文件的常用开源免费方法有以下几种:JDBC-ODBC Excel Driverjxl.jarjcom.jarpoi.jar下面分别对这几种方法分别进行探讨1、JDBC-ODBC Excel Driver这种方法是将excel看成是数据库进行操作,使用SQL Select语句即可查询excel表格。

优点是:不需要第三方的jar包。

如下表样首先在控制面板进行数据源ODBC登记具体方法如下:下面就是代码了。

package xuzhe;import java.io.*;import java.sql.*;//java xuzhe.ExcelJDBCpublic class ExcelJDBC {public static void main(String[] args) throws SQLException{Connection con = null;try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");con = DriverManager.getConnection( "jdbc:odbc:ExcelJDBC" );Statement st = con.createStatement();ResultSet rs = st.executeQuery( "Select * from [Sheet1$]" );ResultSetMetaData rsmd = rs.getMetaData();int numberOfColumns = rsmd.getColumnCount();System.out.println ("表格列数"+numberOfColumns );System.out.println( rsmd.getColumnName(1)+ "," +rsmd.getColumnName(2) + "," + rsmd.getColumnName(3));while (rs.next()) {for (int i = 1; i <= numberOfColumns; i++) {if (i > 1) System.out.print(", ");String columnValue = rs.getString(i);System.out.print(columnValue);}System.out.println("");}rs.close();st.close();}catch(Exception ex) {System.err.print("Exception: ");System.err.println(ex.getMessage());}finally {con.close();}}}执行结果如下:2、jxl.jarjxl.jar为开源代码,任何运行java虚拟机的操作系统都能使用这个jar包操作excel表格。

接口测试参数化-Java中的Excel表数据导入

接口测试参数化-Java中的Excel表数据导入
今天我们经理说让我学习做一些接口的测试,从开发那里拿了接口说明文档开始看了,在开发同学的帮助下,在本机做了一些部署后,就开始准备测试了,当然这次说的内容不是这些,而是如何简化测试时数据的输入。
测试的时候发现这样一个问题,测试代码是一个java文件,通过修改不同的参数来测试各种情况下接口是否正常工作,这样一来,就需要每次都去改代码里的参数,很麻烦,如果不小心还会造成代码的错误,所以就想可不可以通过方法读取excel表格中的数据来自动修改参数内容,这样是搞出来了,以下就是大致的方法。
首先,一个前提很重要代码方面其实比较简单如下:
import java.io.File;
import java.io.IOException;
import jxl.Cell;
import jxl.Sheet;
File file = new File(fileName);
// 创建文件对象
Workbook wb = Workbook.getWorkbook(file);
// 从文件流中获取Excel工作区对象(WorkBook)
}
}
这样就搞定了,接下来测试的时候,只要在excel表里填写需要测试的数据,然后运行java程序,就会自动把所有的数据都执行一遍了,这样是不是方便很多呢。
Cell _a = sheet.getCell(0, i);
Cell _b = sheet.getCell(1, i);
Cell _c = sheet.getCell(2, i);
//以上变量名根据自己需要自行定义
import jxl.Workbook;
import jxl.read.biff.BiffException

基于SSH呼叫中心排班系统的设计与实现

基于SSH呼叫中心排班系统的设计与实现

基于SSH呼叫中心排班系统的设计与实现摘要:随着呼叫中心规模不断壮大,服务水平与员工舒适度、管理便利性与资源利用率、以及效率与公平之间的博弈也越来越突出。

基于SSH,阐述了呼叫中心排班系统的设计与实现,重点描述了系统各个功能模块、系统流程、所采用的关键技术和排班算法、及使用SSH的系统整合实现。

系统在某南方供电分公司呼叫中心已实施,从而验证了算法的准确性、合理性。

与同类其他系统比较,该系统具有更安全、更稳定、更易扩展、更易维护之优点。

关键词:SSH;呼叫中心;排班管理;Erlang C0 引言随着呼叫中心规模的不断扩大,其管理工作也变得日益复杂,如何通过分析现有的历史话务数据,结合员工的不同技能来完成呼叫中心人力资源的最佳配置,成了管理者们所关注的重要问题。

但是目前小型呼叫中心现存的手工排班,由于各方面的局限性,无法解决所面对的种种问题和冲突。

呼叫中心排班系统的诞生,是为了替代复杂的手工排班,通过预测、排班、统计分析管理等途径,提高呼叫中心的整体服务水平,提升客户的满意度,降低不必要的运营成本,并且提高员工的满意度。

1 SSH框架现代的企业开发中,越来越多地引入了多层架构设计模式,SSH(Spring、Struts和Hibernate,简称为SSH)是目前比较流行的开源框架,它提出了一种开发J2EE 应用的轻量级解决方案,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用系统。

1.1 SSH框架整合开发SSH框架是利用Struts2框架作为系统整体的基础技术架构,Struts2负责了MVC(Model-View-Cotroller,模型-视图-控制)的分离;Spring框架的核心是IoC (Inversion of Control,控制翻转)/ DI(Dependence Injection,依赖注入)机制,负责架构的结合;Hibernate架构来提供持久层支持。

1.2 Struts与Spring的整合Spring提供了自己的Web框架.同时也提供了与其他流行的Web框架整合的能力。

java中常用jar包

java中常用jar包

java中常⽤jar包commons-io.jar:可以看成是java.io的扩展,⽤来帮助进⾏IO功能开发.它包含三个主要的领域:Utilityclasses-提供⼀些静态⽅法来完成公共任务.Filters-提供⽂件过滤器的各种实现.Streams-提供实⽤的Stream,reader与writer实现.commons-beanutils.jar:提供对Java反射和⾃省API的包装,主要提供了对于 JavaBean进⾏各种操作。

commons-digester.jar:它能⽅便地将XML⽂档所定义的元素转化为JAVA对象,其实它的⽤法有点象栈(当然内在的原理就是那个古⽼的东西,只是提供了更⾼⼀层的封装)。

commons-lang.jar:它扩展了标准 ngAPI,增加了字符串操作⽅法、基本数值⽅法、对象反射、创建和串⾏化以及System属性。

它还包含⼀个可继承的enum类型、对多种嵌套的Exception类型的⽀持、对java.util.Date的增强以及⽤于构建⽅法的实⽤程序,例如⾃动⽣成 toString()的结果、⾃动实现hashCode()和equals()⽅法、数组操作、枚举、⽇期和时间的处理等等。

ArrayUtils–⽤于对数组的操作,如添加、查找、删除、⼦数组、倒序、元素类型转换等;BitField–⽤于操作位元,提供了⼀些⽅便⽽安全的⽅法;BooleanUtils–⽤于操作和转换boolean或者Boolean及相应的数组;CharEncoding–包含了Java环境⽀持的字符编码,提供是否⽀持某种编码的判断;CharRange–⽤于设定字符范围并做相应检查;CharSet–⽤于设定⼀组字符作为范围并做相应检查;CharSetUtils–⽤于操作CharSet;CharUtils–⽤于操作char值和Character对象;ClassUtils–⽤于对Java类的操作,不使⽤反射;ObjectUtils–⽤于操作Java对象,提供null安全的访问和其他⼀些功能;RandomStringUtils–⽤于⽣成随机的字符串;SerializationUtils–⽤于处理对象序列化,提供⽐⼀般Java序列化更⾼级的处理能⼒;StringEscapeUtils–⽤于正确处理转义字符,产⽣正确的Java、JavaScript、HTML、XML和SQL代码;StringUtils–处理String的核⼼类,提供了相当多的功能;SystemUtils–在ng.System基础上提供更⽅便的访问,如⽤户路径、Java版本、时区、操作系统等判断;Validate–提供验证的操作,有点类似assert断⾔;WordUtils–⽤于处理单词⼤⼩写、换⾏等。

java开发常用jar包

java开发常用jar包
stax-api-1.0.1.jar 解析XML
struts2-core-2.0.14.jar struts2核心jar
struts2-spring-plugin-2.0.6.jar struts2整合Spring所需jar
taglibs-datetime.jar Apache开源组织提供标签库,用于格式化日期。
db2jcc.jar java连接DB2所需jar
db2jcc_license_cu.jar java连接DB2所需jar
dom4j-1.6.1.jar 解析XML
ehcache-1.2.4.jar hibernate的二级缓存如果用ehcache的时候需要此jar包
emf.jar 基于Eclipse的模型框架
wsdl4j-1.5.1.jar Axis运行所需要的组件包
activation.jar JAF框架的jar包
annotations-api.jar 使用注解所需jar
ant.jar 用于自动化调用程序完成项目的编译,打包,测试等
aopalliance-1.0.jar 支持Spring AOP
ezmorph-1.0.6.jar 使用JSON所需的jar包
FastInfoset-1.2.2.jar 使用WebService所需的jar包
freemarker-2.3.8.jar Strus2支持的一种表现层框架
geronimo-activation_1.1_spec-1.0.2.jar Apache Geronimo所带jar包,
taglibs-mailer.jar 用于发送邮件
taglibs-string.jar Apache开源组织提供标签库,用于对String的操作。

jxl简介

jxl简介

Jxl 简析2010-05-17 11:23 一、API 系列 jxl.jar 包 下载地址:/jexcelapi/ 真实下载地址:/jexcelapi/download.htmlJxl 的API 主要有三个包,jxl,jxl.format,jxl.write .如果单独的分析API ,可能对于更明确的了解此API 没有太多的帮助,我们还是从Excel 文件的层次来剥离此API 吧.一个excel 文件由一个工作簿组成,一个工作簿又由n 个工作表组成.每个工作表又由多个单元格组成.对应于Jxl 中的结构为 读文件(包jxl )写文件(包jxl.write)说明 Workbook WritableWorkbook工作簿 Sheet WritableSheet工作表Cell/Image/Hyperlink WritableCell/WritableImage//WritableHyperlink单元格/图像/超链接单元格(此处指文本单元格,图像及链接和单元格做为一个层次)分为好多种,所以在API 的设计中将Cell 作为一个接口而存在.对应的jxl 中的结构为: 读文件(包jxl ) 写文件(包jxl.write) 说明 Cell WritableCell 单元格 BooleanCellBoolean布尔值单元格DateCell DateTime 时间单元格 ErrorCell 形式错误的单元格 LabelCell Label 文本单元格 NumberCell Number 数字单元格 FormualCedll Formual 公式单元格Blank 空格单元格 BooleanFormualCell 布尔公式单元格 DateFormualCell时间公式单元格 ErrorFormualCell 错误公式单元格 StringFormualCell 文本公式单元格 NumberFormualCell数字公式单元格而有的时候,我们可能将几个单元格作为一个整体来处理,在API 中对应的则是: jxl.Range虽然数据是电子表格的核心,但是同时其也需要一些辅助类 比如文件格式设置,工作表设置与显示效果.单元格设置与显示效果等.按照其层次,则依次有以下接口或类. 读文件(包jxl ) 写文件(包jxl.write)说明WorkbookSettings WorkbookSettings (包jxl )设置workbook 属性的bean SheetSettings SheetSettings (包jxl ) 设置具体sheet 的属性的bean (比如表头表底等)HeaderFooterHeaderFooter (包jxl )表示表头表底类HeaderFooter.Contents HeaderFooter.Contents (包jxl ) 具体表头表底设置CellFeaturesWritableCellFeautres表格内容相关设置(验证)CellReferenceHelper 得到引用单元格相关属性CellType表格相关类型 CellView CellView (包jxl ) 表格视图相关设置 CellFormat WritableCellFormat 表格显示样式设置 BoldStyle 边框枚举DateFormat时间格式DateFormats 时间格式枚举NumbreFormat 数据格式NumbreFormats 数字模式枚举WritableFont 字体设置WriteableFont.Fontname 静态字体内部类最后,关于Jxl.format包.此包主要是一些与具体样式有关的接口和枚举.不进行具体描述.第一部分完.二)应用在进行实践前,我们需要对excel有一个大致的了解,excel文件由一个工作簿(Workbook)组成,工作簿由工作表(sheet)组成,每个工作表又由很多单元格(cell)组成. 工作簿有自己的特征,同样工作表,单元格也一样.从大局上了解了excel文件,对于我们更好的使用jxl是有一定的帮助的.具体请查看(一)API在jxl中其大概的层次是这样的名称属性Workbook WorkbookSettingsSheet SheetSettingsCell CeLlFormat CellFeatures CellView CellTypeJxl读excel:得到工作簿的方法主要有四个:Java代码1.getWorkbook(File file)2.3. getWorkbook(File file,WorkSettings ws)4.5. getWorkbook(InputStream is)6.7. getWorkbook(InputStream is,WorkSettings ws)8.9.参数有两个:10.11.第一个参数是必须的:文件或输入流,12.13.第二个参数:工作簿ws是作为读出来的excel的一些约定,如地区,编码等.15.如果文件错误或格式错误,将会抛出BiffException或IOException.16.17.代码段:18.19.Workbook wb=null;20.21.try22.23.{24.25.wb = Workbook.getWorkbook(excelFile);26.27.wb.close();28.29.}30.31.catch(BiffException ex){32.33. //转换错误34.35.}catch(IOException ex){36.37. //IO错误38.39.}以上如果一切正常的话,将得到此excel文件的工作簿.接下来我们就可以通过此文件簿得到其他的东西了.以下是得到工作表有关的方法Java代码1.int getNumberOfSheets()//工作表个数2.3.Sheet getSheet(String name);//得到此对应名称的工作表4.5.Sheet getSheet(int index);//得到此序列号的工作表6.7.Sheet[] getSheets();//得到工作表数组8.9.String[] getSheetNames();//得到工作表名称数组10.11.示例代码如下:13.Sheet sheet;14.15.if(wb.getNumberOfSheets()>0)16.17.{18.19. sheet = wb.getSheet(0);20.21.}Java代码1.以下的方法除非特别目的,否则用到的地方不多.2.3.Range[] finaName(String name);//得到此名称的表格区4.5.Cell findCellByName(String name);//得到此名称的Cell6.7.Cell getCell(String loc)8.9.String[] getRangeNames();10.11.与文件是否可写有关的12.13.boolean isProected();14.15.得到了工作簿文件的某个工作表时.16.17.对于工作表而言其主要的内容就是单元格了.18.19.//根据内容查看20.21.Cell findCell(Pattern pattern,int firstCol,int firstRow,intlastCol,int lastRow,Boolean reverse)22.23.Cell findCell(String content)24.25.Cell findCell(String content,omt forstCol,int firstRow,intlastCol,int lastRow,Boolean reverse)26.belCell findLabelCell(String contents)28.29.//根据位置得到30.31.Cell getCell(int col,int row)32.33.Cell getCell(String loc)//loc的格式为A3/B1/C3其相同于34.35.getCell(CellReferenceHelper.getColumn(loc0,CellReferenceHelper.getRow(loc)),所以相对而言其性能没有Cell getCell(int col,int row)快36.37.//单元格数组38.39.Cell[] getRows(int row)//当前行单元格数组40.41.Cell[] getCols(int col)//当前列单元格数组42.43.//特殊单元格数组44.45.//超链接表格46.47.Hyperlink[] getHyperlinks();//超链接数组48.49.//区域表格50.51.Range[] getMergedCells();//区域单元格数组52.53.//图像表格54.55.Int getNumberOfImages()//拥有图片数56.57.Image getDrawing(int index)//对应序号的图片58.59.//工作表或多个表格一些自我属性60.61.String getName()//工作表名62.63.int getRows()//行数64.65.int getCols()//列数66.67.SheetSettings getSettings()//工作表设置68.69.CellView getColumnView(int col)//此列的表格视图70.71.CellView getRowView(int row)//此行的表格视图72.73.以下是与单元格有关的一些操作:74.75.CellFeatures getCellFeatures()//主要是与表格内容有关的一些性质如验证等76.77.CellFormat getCellFormat()//主要是表格外在表现格式有关的一些性质.78.79.int getColumn()//所在列80.81.int getRow()//所在行82.83.String getContents();//内容84.85.boolean isHidden();//可见否86.87.CellType getType();//表格类型如果不确定表格如果转换则可以使用此方法来确定表格类型.88.89.以下我们讲述如何写excel文件.写文件分为两种情况一种是新建一种则是更新.新建excel文件新建excel文件很简单:Java代码1.//文件2.3.WritableWorkbook createWorkbook(File file) //无形式的创建一个excel文件4.5.WritableWorkbook createWorkbook(File file Workbook in)6.7.//以in一样的格式创建一个excel文件,其初始内容与in文件相同(更新文件可以用到此方法)8.9.WriteableWorkbook createWorkbook(File file,WorkSetting ws)//以ws的设定创建文件10.11.WritableWorkbook createWorkbook(File file,Workbookin,WorkSetting ws)12.13.//以ws的设定创建一个与in文件相同的文件14.15.//流16.17.WritableWorkbook createWorkbook(OutputStream os)18.19.WritableWorkbook createWorkbook(OutputStream os Workbook in)20.21.WriteableWorkbook createWorkbook(OutputStream os,WorkSettingws)22.23.WritableWorkbook createWorkbook(OutputStream os,Workbookin,WorkSetting ws)24.25.26.27.代码示例:28.29.WritableWorkbook wrb;30.31.WriteableWorkbook wrbin;32.33.try34.35.{36.37.wrb = Workbook.createWorkbook(targetfile);38.39.wrbin = Workbook.createWorkbook(targetfile,wb);40.41.}42.43.catch (IOexception e)44.45.{46.47.//IO错误48.49.}50.51.当创建好工作簿时,我们就需要新建工作表了52.53.WritableSheet createSheet(String name,int index);54.55.WritableSheet wrs = wrb.createSheet(“demo”,0);56.57.//创建一个名为demo的工作表,其为工作簿的第一个工作表.58.59.接下来我们就可以进行其他操作了60.61.62.63.添加文本类单元格:64.bel label = new Label(0,0,””);66.67.wrb.addCell(label);68.69.//添加数据单元格70.71.Number number = new Number(0,3,1234);72.73.wrb.addCell(number);74.75.//添加时间单元格76.77.DateTime dt = new DateTime(0,4,new Date());78.79.Wrb.addCell(dt);80.81.//添加公式单元格82.83.Fornual formual = new Formual(0,11,”Sum(A1:A9)”);84.85.wrb.addCell(formual);86.87.88.89.添加超链接类单元格90.91.WirtableHyperlink wrlink =92.93.new WritableHyperlink(0,1,0,1,newURL(“/fei”),”emlog”);94.95.wrb.addHyperlink(wrlink);96.97.98.99.//添加图像100.101.WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath));102.103.wrb.addImage(wrimage);104.105.//注意,API中注明只支持png文件,然而我用其他格式的图片,通过将其后缘改为png也能放到excel文件中.果然,在查看其具体源代码时,发现作者只是检测了文件的后缀名,如果不对给出警告,并没有从图像文件的具体格式进行检测.106.107.//当然,表格中的数据算是表格的核心部分,但是同时API也提供了大量的其他方法来丰富表格的显示.在此,大家具体在使用过程中进行运用就行.108.109.//最后,写完表格后,不要忘记进行写操作,也就是常说的保存110.111.wrb.write()112.113.wrb.close();//保存完后关闭相应资源是一个合格的程序员应该做的.114.115.116.117.//接下来,我们就来讲述写文件的另一方面:更新文件.有时候,并不仅仅只是需要新写文件,可能需要对已有文件进行更新.这时候我们可以这么来实现.118.119.Workbook wb= Workbook.getWorkbook(modifyFile);120.121.WritableWorkbook wrb = Workbook.createWorkbook(modifyFile, wb);122.123.//以上就实现了得到一个已存在的文件的可修改副本.124.125.//得到第一个工作表126.127.WritableSheet wrs = wrb.getSheet(0); 128.129.//得到A0单元格130.131.Cell cell = Wrs.getCell(0,0);132.133.//对单元格格式进行判断134.135.If (cell.getType()==BEL){ 136.137. Label label=(Label) cell;138.bel.setString(“u r modified.”); 140.141.}//modify end142.143.//save excel144.145.wrb.write();146.147.wb.close();148.149.wrb.close();。

如何实现Excel表格自动导入到数据库

如何实现Excel表格自动导入到数据库

如何实现Excel表格自动导入到数据库如何实现Excel表格自动导入到数据库2010-05-03 23:46目前人们在存储统计数据时大多都会采用Office的Excel,因为Excel做的表格确实很好用,又简单又方便。

而Excel软件本身的功能也很强大,除了本身自带的一些对表格数据的处理功能外还允许我们自己编写脚本程序,实现自定义的功能。

但是随着信息化建设步伐的加快,网络化办公环境对数据处理的新方式势必要取代一个个Excel文件和层层嵌套的文件夹的传统方式。

而在信息化建设的过程中对已有数据的保存和利用是非常重要的,如何将现有的各种数据存储方式中的数据录入到数据库中,从而为信息化平台服务呢?我们不可能让用户一条条地向数据库里录入数据,因为这很不现实,所以我们要通过程序实现批量录入,或者是直接导入。

我是利用了JXL接口实现了Excel文件导入这个功能,它可以自动把Excel文件中的数据导入到数据库中相应的表里。

而且我把它做成了公共接口,通过配置文件的配置就可以"一次编写,多处运用"。

1.首先需要有jxl的jar包,这个可以在网上下到,解压后把jxl.jar、jxl-2.6.jar、classes12.jar放到工程里。

2.编写类文件,因为Excel表格数据的导入是分三步,首先将Excel文件上传到服务器中,然后将数据读取导入至数据库,最后再将Excel文件删掉。

所以要写两个类,一个实现上传,一个实现读取数据。

上传部分请看我的另一篇关于上传的日志,此处我只介绍读取数据的类,名字为ExcelInAction.java。

内容如下:package com.xdsc.util;import java.io.*;import java.sql.Connection;importjava.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;importcom.xdsc.util.UploadAction;import jxl.*;public class ExcelInAction extends ActionSupport{//static String createTableSql="";//创建数据库的sql static String colType="varchar";//字段类型static String key="id";//主键static String charSet="utf8";//表格字符类型static String ENGINE="InnoDB";//表格类型static String tableName;//表名称static String tableValue;//表属性static String colName="col";//默认字段名static Connection conn=null;/*Excel表格导入数据库需要先将Excel文件上传*/private File file;//封装上传文件private String fileContentType;//封装上传文件类型private String fileFileName;//封装上传文件名private String savePath;//封装上传文件保存路径private String path;//自定义上传文件路径值public String execute()throws Exception{try{UploadAction ua=new UploadAction();//创建上传Action的对象/*配置UploadAction的各项参数*/ua.setPath(path);ua.setFile(file);ua.setFileContentType(fileContentType);ua.setFileFileName(fileFileName);ua.setSavePath(getSavePath());ua.execute();//构建Workbook对象,只读Workbook对象//直接从本地文件创建Workbook//从输入流创建Workbook System.out.println("start loadfile---");InputStream is=newFileInputStream(ua.getSavePath()+"\"+ua.getFileFileName());//创建输入流Workbook rwb=Workbook.getWorkbook(is);Sheet rs=rwb.getSheet(0);//读取第一个sheet int colNum=rs.getColumns();//列数introwNum=rs.getRows();//行数System.out.println("colNum rowNum--"+rowNum+"行,"+colNum+"列+");System.out.println("start create base---");getConntion();//建立数据库连接String sql=getColName(rowNum,colNum);PreparedStatement ps=null;String strValue="";ps=conn.prepareStatement(sql);System.out.println(sql);for(int i=1;i rowNum;i++){strValue="";for(int j=0;j colNum;j++){Cell c=rs.getCell(j,i);strValue=c.getContents();ps.setString(j+1,strValue);}ps.addBatch();}ps.executeBatch();//mit();if(ps!=null){ps.close();}System.out.println("insert end---");close();}catch(Exception e){e.printStackTrace();}return SUCCESS;}static String getColName(int rowNum,int colNum){//可以做成可配置文件String colSql="";String colValue="";for(int j=0;j colNum;j++){colSql=colSql+"'"+colName+j+"',";colValue=colValue+""+"?,";}return"insertinto"+tableName+"("+tableValue+")"+"values("+colValue.substring(0,col stIndexOf(","))+");";}static void getConntion(){try{String driver_class="com.mysql.jdbc.Driver";String connection_url="jdbc:mysql://localhost:3306/software_infoplatform?useUnicode=true&characterEncoding=utf-8";String user_name="root";String db_password="xdsc";Class.forName(driver_class);conn=DriverManager.getConnection(connection_url,user_name,db_password );}catch(Exception e){e.printStackTrace();}}static void close(){if(conn!=null){try{conn.close();}catch(SQLException e){//TODO Auto-generated catch block e.printStackTrace();}}}/*各变量相应的get,set方法*/public File getFile(){return file;}public void setFile(File file){this.file=file;}public String getFileContentType(){return fileContentType;}public void setFileContentType(StringfileContentType){this.fileContentType=fileContentType;}public String getFileFileName(){return fileFileName;}public void setFileFileName(StringfileFileName){this.fileFileName=fileFileName;}public String getSavePath(){HttpServletRequestrequest=ServletActionContext.getRequest();returnrequest.getRealPath(savePath);}public void setSavePath(String savePath){this.savePath=savePath;}public String getPath(){return path;}public void setPath(String path){this.path=path;}public void setTableName(StringtableName){this.tableName=tableName;}public void setTableValue(StringtableValue){this.tableValue=tableValue;}}3.在struts配置文件中做配置:actionname="excelIn"class="com.xdsc.util.ExcelInAction"!-path指定的是上传文件的地址paramname="path"/WEB-INF/classes/upfile/param paramname="tableName"tab_course/paramparamname="tableValue"f_CourseNumber,f_CourseName,f_CourseScore,f_CourseXueShi/param resultname="success"/ExcelInSuccess.jsp/resultresultname="fail"/registerFail.jsp/result/action 4.编写jsp功能页面:%@page language="java"import="java.util.*"pageEncoding="UTF-8"%%String path=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%html head base href="%=basePath%"title Excel表格内容导入数据库测试页面/title/head body formaction="excelIn.action"enctype="multipart/form-data"method="post"请按如下格式排版excel的列字段(以表1:tab_course课程表为例):br br课程编号|课程名|学分|学时br br导入excel文件:br inputtype="file"name="file"/br input type="submit"value="导入"/br/form/body/html然后就可以用了。

WritableWorkbook详细用例(转)

WritableWorkbook详细用例(转)

WritableWorkbook详细⽤例(转)java 操作 Excel 最常⽤的就是JXL(java excel api)和POI,今先看下JXL吧。

⾸先可以到下载最新的jxl.jar,⾥⾯有它的jar包和API,内有⼀个⼩例⼦,可以参考⼀下。

JXL ⽤起来挺简单的,不过相应的其功能也并不是⼗分强⼤,对于⼀般的简单的excel操作还可以,对于太复杂的还是有些吃⼒,基本的操作也就是以下⼏项内容。

⾸先,要创建⼀个可读写的⼯作簿(WritableWorkbook):1 WritableWorkbook workbook = Workbook.createWorkbook(new File("d:\\test.xls"));如果是想要修改⼀个已存在的excel⼯作簿,则需要先获得它的原始⼯作簿,再创建⼀个可读写的副本:1 Workbook wb = Workbook.getWorkbook(new File("src\\test\\test.xls")); // 获得原始⽂档2 WritableWorkbook workbook = Workbook.createWorkbook(new File("d:\\test_modified.xls"),wb); // 创建⼀个可读写的副本然后,取得我们要操作的sheet,并对其进⾏相应的操作,如改名、合并单元格、设置列宽、⾏⾼等:1 WritableSheet sheet = workbook.getSheet(0);2 sheet.setName("修改后"); // 给sheet页改名3 workbook.removeSheet(2); // 移除多余的标签页4 workbook.removeSheet(3);56 sheet.mergeCells(0, 0, 4, 0); // 合并单元格7 sheet.setRowView(0, 600); // 设置⾏的⾼度8 sheet.setColumnView(0, 30); // 设置列的宽度9 sheet.setColumnView(1, 20); // 设置列的宽度之后,就是对单元格的操作了,可以通过如下⽅法获取⼀个单元格,其中两个参数分别为列、⾏的位置,从0开始计数,如(2,3)就代表单元格C4:1 WritableCell cell = sheet.getWritableCell(2,3);通过WritableFont、WritableCellFormat等对象可以设置单元格的字体、样式等外观:1 WritableFont titleWf = new WritableFont(WritableFont.createFont("仿宋_GB2312"),// 字体2 20,//WritableFont.DEFAULT_POINT_SIZE, // 字号3 WritableFont.NO_BOLD, // 粗体4false, // 斜体5 UnderlineStyle.NO_UNDERLINE, // 下划线6 Colour.BLUE2, // 字体颜⾊7 ScriptStyle.NORMAL_SCRIPT);8 WritableCellFormat wcf = new WritableCellFormat(titleWf);9 wcf.setBackground(Colour.GRAY_25);// 设置单元格的背景颜⾊10 wcf.setAlignment(Alignment.CENTRE); // 设置对齐⽅式11 wcf.setBorder(Border.ALL, BorderLineStyle.THICK); // 添加边框12 cell.setCellFormat(wcf);在jxl中,有⼏种常⽤的数据类型,根据单元格内数据类型的不同,每个WritableCell可以根据其类型被转换为它的⼀个⼦类型,以便对不同类型的数据进⾏专门的处理,通常可以做这样的转换:1 WritableCell fromCell = sheet0.getWritableCell(j, i);23if (fromCell instanceof jxl.write.Number) {4 jxl.write.Number num = (jxl.write.Number) fromCell;5 } else if (fromCell instanceof jxl.write.Boolean) {6 jxl.write.Boolean bool = (jxl.write.Boolean) fromCell;7 } else if (fromCell instanceof jxl.write.DateTime) {8 jxl.write.DateTime dt = (jxl.write.DateTime) fromCell;9 } else if(fromCell instanceof Label){10 Label _label = (Label) fromCell;11 }当然,操作完成之后⼀定不要忘了刷新(或者叫写⼊?)和关掉⼯作簿:1 workbook.write();2 workbook.close();下⾯是参考jxl api⾥那个例⼦写的,把我⾃⼰觉得常⽤的excel操作基本都包含了:1package test;23import java.io.File;4import java.io.IOException;5import .MalformedURLException;6import .URL;7import java.util.ArrayList;8import java.util.Calendar;9import java.util.Date;1011import jxl.CellType;12import jxl.Workbook;13import jxl.format.Alignment;14import jxl.format.Border;15import jxl.format.BorderLineStyle;16import jxl.format.Colour;17import jxl.format.ScriptStyle;18import jxl.format.UnderlineStyle;19import jxl.format.VerticalAlignment;20import jxl.read.biff.BiffException;21import jxl.write.Blank;22import jxl.write.DateFormat;23import jxl.write.DateFormats;24import jxl.write.DateTime;25import jxl.write.Formula;26import bel;27import jxl.write.Number;28import jxl.write.NumberFormat;29import jxl.write.WritableCell;30import jxl.write.WritableCellFeatures;31import jxl.write.WritableCellFormat;32import jxl.write.WritableFont;33import jxl.write.WritableHyperlink;34import jxl.write.WritableImage;35import jxl.write.WritableSheet;36import jxl.write.WritableWorkbook;37import jxl.write.WriteException;3839/**40 *41 * @author why42 *43*/44public class ExcelTest {4546/**47 * @param args48 * @throws IOException49 * @throws BiffException50 * @throws WriteException51*/52public static void main(String[] args) throws IOException, BiffException, WriteException {53 Workbook wb = Workbook.getWorkbook(new File("src\\test\\test.xls")); // 获得原始⽂档54 WritableWorkbook workbook = Workbook.createWorkbook(new File("d:\\test_modified.xls"),wb); // 创建⼀个可读写的副本 555657/**58 * 定义与设置Sheet59*/60 WritableSheet sheet = workbook.getSheet(0);61 sheet.setName("修改后"); // 给sheet页改名62 workbook.removeSheet(2); // 移除多余的标签页63 workbook.removeSheet(3);6465 sheet.mergeCells(0, 0, 4, 0); // 合并单元格66 sheet.setRowView(0, 600); // 设置⾏的⾼度67 sheet.setColumnView(0, 30); // 设置列的宽度68 sheet.setColumnView(1, 20); // 设置列的宽度6970 WritableCell cell = null;71 WritableCellFormat wcf = null;72 Label label = null;73 WritableCellFeatures wcfeatures = null;7475// 更改标题字体76 cell = sheet.getWritableCell(0,0);77 WritableFont titleWf = new WritableFont(WritableFont.createFont("仿宋_GB2312"),// 字体78 20,//WritableFont.DEFAULT_POINT_SIZE, // 字号79 WritableFont.NO_BOLD, // 粗体80false, // 斜体81 UnderlineStyle.NO_UNDERLINE, // 下划线82 Colour.BLUE2, // 字体颜⾊83 ScriptStyle.NORMAL_SCRIPT);84 wcf = new WritableCellFormat(titleWf);85 wcf.setBackground(Colour.GRAY_25);// 设置单元格的背景颜⾊86 wcf.setAlignment(Alignment.CENTRE); // 设置对齐⽅式87 wcf.setBorder(Border.ALL, BorderLineStyle.THICK); // 添加边框88 cell.setCellFormat(wcf);8990// 将B3的字体改为仿宋_GB231291 cell = sheet.getWritableCell(1,2);92 WritableFont fs = new WritableFont(WritableFont.createFont("仿宋_GB2312"),93 11);94 wcf = new WritableCellFormat(fs);95 cell.setCellFormat(wcf);9697// 将B4的字号改为2098 cell = sheet.getWritableCell(1,3);99 WritableFont size20 = new WritableFont(WritableFont.createFont("宋体"), 100 20);101 wcf = new WritableCellFormat(size20);102 cell.setCellFormat(wcf);103104// 将B5的字体改为加粗105 cell = sheet.getWritableCell(1,4);106 WritableFont bold = new WritableFont(WritableFont.createFont("宋体"),107 11,108 WritableFont.BOLD);109 wcf = new WritableCellFormat(bold);110 cell.setCellFormat(wcf);111112// 将B6的字体改为倾斜113 cell = sheet.getWritableCell(1,5);114 WritableFont italic = new WritableFont(WritableFont.createFont("宋体"), 115 11,116 WritableFont.NO_BOLD,117true);118 wcf = new WritableCellFormat(italic);119 cell.setCellFormat(wcf);120121// 将B7字体加下划线122 cell = sheet.getWritableCell(1,6);123 WritableFont underline = new WritableFont(WritableFont.createFont("宋体"), 124 11,125 WritableFont.NO_BOLD,126false,127 UnderlineStyle.SINGLE);128 wcf = new WritableCellFormat(underline);129 cell.setCellFormat(wcf);130131// 将B8的⽂字改为“待修改⽂字-已修改”132 cell = sheet.getWritableCell(1,7);133if (cell.getType() == BEL)134 {135 Label lc = (Label) cell;136 lc.setString(lc.getString() + " - 已修改");137 }138139// 将B9⽂字对齐⽅式改为垂直居中、右对齐140 cell = sheet.getWritableCell(1,8);141 WritableFont align = new WritableFont(WritableFont.createFont("宋体"), 142 11);143 wcf = new WritableCellFormat(align);144 wcf.setAlignment(Alignment.RIGHT); // 设置为右对齐145 wcf.setVerticalAlignment(VerticalAlignment.CENTRE); // 设置为垂直居中146 cell.setCellFormat(wcf);147148// 将E3⽂字改为⾃动换⾏149 cell = sheet.getWritableCell(4,2);150 WritableFont justify = new WritableFont(WritableFont.createFont("宋体"), 151 11);152 wcf = new WritableCellFormat(justify);153 wcf.setAlignment(Alignment.JUSTIFY);154 cell.setCellFormat(wcf);155156157// 将B12的数字有效位数从5位改为7位158 cell = sheet.getWritableCell(1,11);159 NumberFormat sevendps = new NumberFormat("#.0000000");160 wcf = new WritableCellFormat(sevendps);161 cell.setCellFormat(wcf);162163// 将B13改为4位科学计数法表⽰164 cell = sheet.getWritableCell(1,12);165 NumberFormat exp4 = new NumberFormat("0.####E0");166 wcf = new WritableCellFormat(exp4);167 cell.setCellFormat(wcf);168169// 将B14改为默认数字表⽰170 cell = sheet.getWritableCell(1,13);171 cell.setCellFormat(WritableWorkbook.NORMAL_STYLE);172173// 将B15数字类型的值17改为22174 cell = sheet.getWritableCell(1,14);175if (cell.getType() == CellType.NUMBER)176 {177 Number n = (Number) cell;178 n.setValue(42);179 }180181// 将B16的值2.71进⾏加法运算2.71 + 0.1182 cell = sheet.getWritableCell(1,15);183if (cell.getType() == CellType.NUMBER)184 {185 Number n = (Number) cell;186 n.setValue(n.getValue() + 0.1);187 }188189// 将B19⽇期格式改为默认190 cell = sheet.getWritableCell(1,18);191 wcf = new WritableCellFormat(DateFormats.FORMAT9);192 cell.setCellFormat(wcf);193194// 将B20⽇期格式改为dd MMM yyyy HH:mm:ss195 cell = sheet.getWritableCell(1,19);196 DateFormat df = new DateFormat("dd MMM yyyy HH:mm:ss");197 wcf = new WritableCellFormat(df);198 cell.setCellFormat(wcf);199200// 将B21的⽇期设置为 2011-6-1 11:18:50201 cell = sheet.getWritableCell(1,20);202if (cell.getType() == CellType.DATE)203 {204 DateTime dt = (DateTime) cell;205 Calendar cal = Calendar.getInstance();206 cal.set(2011, 5, 1, 11, 18, 50);207 Date d = cal.getTime();208 dt.setDate(d);209 }210211212// 将B24⽂字添加链接213 WritableHyperlink link = new WritableHyperlink(1, 23, new URL("")); 214 sheet.addHyperlink(link);215216// 更改URL链接217 WritableHyperlink hyperlinks[] = sheet.getWritableHyperlinks();218for (int i = 0; i < hyperlinks.length; i++) {219 WritableHyperlink wh = hyperlinks[i];220if (wh.getColumn() == 1 && wh.getRow() == 24) {221// 将B25⽂字链接取消222 sheet.removeHyperlink(wh,true);//true:保留⽂字;false:删除⽂字223 }else if(wh.getColumn() == 1 && wh.getRow() == 25){224try {225// 将B26链接更改为226 wh.setURL(new URL(""));227 } catch (MalformedURLException e) {228 e.printStackTrace();229 }230 }231 }232233234// 利⽤公式取得B29、B30的值235 Formula f1 = new Formula(1, 28, "SUM(C29:D29)");236 sheet.addCell(f1);237 Formula f2 = new Formula(1, 29, "AVERAGE(C30:G30)");238 sheet.addCell(f2);239240// 在B32处添加图⽚,图⽚⼤⼩占10⾏3列,只⽀持png格式241 File file = new File("d:\\shu05.png");242 WritableImage image = new WritableImage(1, 31, 3, 10, file);243 sheet.addImage(image);244245// 在A44出添加内容"Added drop down validation",并为其添加注释246 label = new Label(0, 43, "Added drop down validation");247 wcfeatures = new WritableCellFeatures();248 wcfeatures.setComment("右边列是个下拉列表");249 label.setCellFeatures(wcfeatures);250 sheet.addCell(label);251252// 在B44处添加⼀个下拉列表并添加注释253 Blank b = new Blank(1, 43);254 wcfeatures = new WritableCellFeatures();255 ArrayList al = new ArrayList();256 al.add("why");257 al.add("landor");258 al.add("tjm");259 wcfeatures.setDataValidationList(al);260 wcfeatures.setComment("这是⼀个注释");261 b.setCellFeatures(wcfeatures);262 sheet.addCell(b);263264// 为A46添加注释。

linux jar命令参数

linux jar命令参数

linux jar命令参数Linux下的jar命令参数在Linux系统下,jar命令是用来创建和管理Java Archive(JAR)文件的工具。

JAR文件是将多个Java类文件、资源文件和元数据打包到一个文件中的一种压缩文件格式。

通过使用jar命令,我们可以执行多种操作,如创建JAR文件、解压缩JAR文件、列出JAR文件中的内容等。

本文将介绍一些常用的jar命令参数及其用法。

1. 创建JAR文件要创建一个JAR文件,可以使用以下命令:```shelljar cf jarfile.jar inputfiles```其中,`jarfile.jar`是要创建的JAR文件的名称,`inputfiles`是要添加到JAR文件中的文件或目录的列表。

可以同时添加多个文件或目录。

例如,要创建一个名为`myapp.jar`的JAR文件,并将当前目录下所有的.class文件添加到JAR文件中,可以使用以下命令:```shelljar cf myapp.jar *.class```2. 解压缩JAR文件要解压缩一个JAR文件,可以使用以下命令:```shelljar xf jarfile.jar```其中,`jarfile.jar`是要解压缩的JAR文件的名称。

该命令将会将JAR文件中的内容解压缩到当前目录下。

例如,要解压缩一个名为`myapp.jar`的JAR文件,可以使用以下命令:```shelljar xf myapp.jar```3. 列出JAR文件中的内容要列出一个JAR文件中包含的文件和目录,可以使用以下命令:```shelljar tf jarfile.jar```其中,`jarfile.jar`是要列出内容的JAR文件的名称。

该命令将会输出JAR文件中的每个文件和目录的名称。

例如,要列出一个名为`myapp.jar`的JAR文件中的内容,可以使用以下命令:```shelljar tf myapp.jar```4. 更新JAR文件要向一个已存在的JAR文件中添加新的文件或目录,可以使用以下命令:```shelljar uf jarfile.jar inputfiles```其中,`jarfile.jar`是要更新的JAR文件的名称,`inputfiles`是要添加到JAR文件中的文件或目录的列表。

比较详细的JXL格式设置

比较详细的JXL格式设置

⽐较详细的JXL格式设置以下是copy别⼈的,没有测试。

只是为了关注其中的jxl的格式设置import java.io.File;import junit.framework.TestCase;import jxl.Workbook;import jxl.format.Alignment;import jxl.format.Border;import jxl.format.BorderLineStyle;import jxl.format.Colour;import jxl.format.VerticalAlignment;import bel;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class TestExcel extends TestCase {public void testExcel1() {try {WritableWorkbook workbook = Workbook.createWorkbook(new File("d:/留⾔信息.xls"));WritableSheet sheet = workbook.createSheet("留⾔信息", 0);sheet.setColumnView(0, 5); // 第1列sheet.setColumnView(1, 12); // 第2列sheet.setColumnView(2, 10);sheet.setColumnView(3, 22);sheet.setColumnView(4, 15);sheet.setColumnView(5, 23);sheet.setColumnView(6, 40);// 设置⾏⾼sheet.setRowView(0, 1600, false);sheet.setRowView(1, 400, false);sheet.setRowView(7, 400, false);// 设置页边距sheet.getSettings().setRightMargin(0.5);// 设置页脚sheet.setFooter("", "", "测试页脚");// 字体WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD);WritableFont tableFont = new WritableFont(WritableFont.ARIAL, 12,WritableFont.NO_BOLD);WritableFont baodanFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);// ⽤于标题WritableCellFormat wcf_title = new WritableCellFormat(BoldFont);wcf_title.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_title.setAlignment(Alignment.CENTRE); // ⽔平对齐wcf_title.setWrap(true); // 是否换⾏// ⽤于表格标题WritableCellFormat wcf_tabletitle = new WritableCellFormat(tableFont);wcf_tabletitle.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条wcf_tabletitle.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_tabletitle.setAlignment(Alignment.CENTRE); // ⽔平对齐wcf_tabletitle.setWrap(true); // 是否换⾏// ⽤于正⽂左WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_left.setAlignment(Alignment.LEFT);wcf_left.setWrap(true); // 是否换⾏// ⽤于正⽂左WritableCellFormat wcf_center = new WritableCellFormat(NormalFont);wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_center.setAlignment(Alignment.CENTRE);wcf_center.setWrap(true); // 是否换⾏// ⽤于正⽂右WritableCellFormat wcf_right = new WritableCellFormat(NormalFont);wcf_right.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_right.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_right.setAlignment(Alignment.RIGHT);wcf_right.setWrap(false); // 是否换⾏// ⽤于跨⾏WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont);wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); // 垂直对齐wcf_merge.setAlignment(Alignment.LEFT);wcf_merge.setWrap(true); // 是否换⾏WritableCellFormat wcf_table = new WritableCellFormat(NormalFont);wcf_table.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_table.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_table.setAlignment(Alignment.CENTRE);wcf_table.setBackground(Colour.GRAY_25);wcf_table.setWrap(true); // 是否换⾏// 合并单元格,注意mergeCells(col0,row0,col1,row1)// --列从0开始,col1为你要合并到第⼏列,⾏也⼀样sheet.mergeCells(0, 0, 6, 0);sheet.addCell(new Label(0, 0, "怀化君源华天⼤酒店留⾔信息", wcf_title)); // sheet.mergeCells(0, 1, 1, 1);// sheet.mergeCells(2, 1, 5, 1);// sheet.addCell(new Label(0, 1, "", wcf_center));// sheet.addCell(new Label(2, 1, "姓名:" + "supercrsky",wcf_center));//// sheet.mergeCells(0, 2, 1, 2);// sheet.mergeCells(2, 2, 3, 2);//// sheet.addCell(new Label(0, 2, "单位:", wcf_center));// sheet.addCell(new Label(2, 2, "ChinaLong", wcf_center));// sheet.addCell(new Label(4, 2, "薪⽔", wcf_center));// sheet.addCell(new Label(5, 2, "5000", wcf_center));//// sheet.mergeCells(0, 3, 1, 3);// sheet.mergeCells(2, 3, 3, 3);//// sheet.addCell(new Label(0, 3, "性别:", wcf_center));// sheet.addCell(new Label(2, 3, "男", wcf_center));// sheet.addCell(new Label(4, 3, "婚否:", wcf_center));// sheet.addCell(new Label(5, 3, "否", wcf_center));//// sheet.mergeCells(0, 4, 1, 4);// sheet.mergeCells(2, 4, 3, 4);//// sheet.addCell(new Label(0, 4, "是否在职:", wcf_center)); // sheet.addCell(new Label(2, 4,"是",// wcf_center));// sheet.addCell(new Label(4, 4,"⼯作经验:", wcf_center)); // sheet.addCell(new Label(5, 4, "4",wcf_center));//// sheet.mergeCells(0, 5, 1, 5);// sheet.mergeCells(2, 5, 3, 5);//// sheet.addCell(new Label(0, 5, "保险费:", wcf_center));// sheet.addCell(new Label(2, 5,"50",// wcf_center));// sheet.addCell(new Label(4, 5, "保险⾦额:", wcf_center)); // sheet.addCell(new Label(5, 5, "50000",// wcf_center));//// sheet.mergeCells(0, 6, 1, 6);// sheet.mergeCells(2, 6, 3, 6);//// sheet.addCell(new Label(0, 6, "⼯作地点:", wcf_center)); // sheet.addCell(new Label(2, 6, "北京", wcf_center));// sheet.addCell(new Label(4, 6, "开⼼度:", wcf_center)); // sheet.addCell(new Label(5, 6, "⼀般", wcf_center));// 另起⼀table// sheet.mergeCells(0, 1, 8, 1);// sheet.addCell(new Label(0, 1, "详细数据", wcf_tabletitle)); // table标题sheet.addCell(new Label(0, 1, "序号", wcf_table));sheet.addCell(new Label(1, 1, "姓名", wcf_table));sheet.addCell(new Label(2, 1, "性别", wcf_table));sheet.addCell(new Label(3, 1, "留⾔时间", wcf_table));sheet.addCell(new Label(4, 1, "QQ号码", wcf_table));sheet.addCell(new Label(5, 1, "E-mail", wcf_table));sheet.addCell(new Label(6, 1, "留⾔信息", wcf_table));// table内容// 这⾥⽤你的dao// HibernateDAO dao = new HibernateDAO();// List list = dao.show_message();// System.out.println("数据⾏数:" + list.size());// for (int i = 0; i < list.size(); i++) {// // 对应你的vo类// TbMessage data = (TbMessage) list.get(i);//// sheet.addCell(new Label(0, 2 + i, String.valueOf(i + 1),// wcf_center));// sheet.addCell(new Label(1, 2 + i, data.getNickname(),// wcf_center));// sheet// .addCell(new Label(2, 2 + i, data.getGender(),// wcf_center));// sheet.addCell(new Label(3, 2 + i, String.valueOf(data// .getDatetime()), wcf_center));// sheet.addCell(new Label(4, 2 + i, data.getQq(), wcf_center));// sheet.addCell(new Label(5, 2 + i, data.getEmail(), wcf_center));// sheet// .addCell(new Label(6, 2 + i, data.getMessage(),// wcf_center));// }workbook.write();workbook.close();System.out.println("导出成功");// 存放url地址} catch (Exception e) {System.out.println("在输出到EXCEL的过程中出现错误,错误原因:" + e.toString()); }}public void testExcel2() {try {WritableWorkbook workbook = Workbook.createWorkbook(new File("d:/预定信息.xls"));WritableSheet sheet = workbook.createSheet("留⾔信息", 0);sheet.setColumnView(0, 5); // 第1列sheet.setColumnView(1, 12); // 第2列sheet.setColumnView(2, 10);sheet.setColumnView(3, 20);sheet.setColumnView(4, 10);sheet.setColumnView(5, 18);sheet.setColumnView(6, 18);sheet.setColumnView(7, 18);sheet.setColumnView(8, 22);sheet.setColumnView(9, 10);// 设置⾏⾼sheet.setRowView(0, 1600, false);sheet.setRowView(1, 400, false);sheet.setRowView(7, 400, false);// 设置页边距sheet.getSettings().setRightMargin(0.5);// 设置页脚sheet.setFooter("", "", "测试页脚");// 字体WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD);WritableFont tableFont = new WritableFont(WritableFont.ARIAL, 12,WritableFont.NO_BOLD);WritableFont baodanFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);// ⽤于标题WritableCellFormat wcf_title = new WritableCellFormat(BoldFont);wcf_title.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_title.setAlignment(Alignment.CENTRE); // ⽔平对齐wcf_title.setWrap(true); // 是否换⾏// ⽤于表格标题WritableCellFormat wcf_tabletitle = new WritableCellFormat(tableFont);wcf_tabletitle.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条wcf_tabletitle.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_tabletitle.setAlignment(Alignment.CENTRE); // ⽔平对齐wcf_tabletitle.setWrap(true); // 是否换⾏// ⽤于正⽂左WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_left.setAlignment(Alignment.LEFT);wcf_left.setWrap(true); // 是否换⾏// ⽤于正⽂左WritableCellFormat wcf_center = new WritableCellFormat(NormalFont);wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_center.setAlignment(Alignment.CENTRE);wcf_center.setWrap(true); // 是否换⾏// ⽤于正⽂右WritableCellFormat wcf_right = new WritableCellFormat(NormalFont);wcf_right.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_right.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_right.setAlignment(Alignment.RIGHT);wcf_right.setWrap(false); // 是否换⾏// ⽤于跨⾏WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont);wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); // 垂直对齐wcf_merge.setAlignment(Alignment.LEFT);wcf_merge.setWrap(true); // 是否换⾏WritableCellFormat wcf_table = new WritableCellFormat(NormalFont);wcf_table.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_table.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_table.setAlignment(Alignment.CENTRE);wcf_table.setBackground(Colour.GRAY_25);wcf_table.setWrap(true); // 是否换⾏// 合并单元格,注意mergeCells(col0,row0,col1,row1)// --列从0开始,col1为你要合并到第⼏列,⾏也⼀样sheet.mergeCells(0, 0, 9, 0);sheet.addCell(new Label(0, 0, "怀化君源华天⼤酒店预定信息", wcf_title)); // sheet.mergeCells(0, 1, 1, 1);// sheet.mergeCells(2, 1, 5, 1);//// sheet.addCell(new Label(0, 1, "", wcf_center));// sheet.addCell(new Label(2, 1, "姓名:" + "supercrsky",// wcf_center));//// sheet.mergeCells(0, 2, 1, 2);// sheet.mergeCells(2, 2, 3, 2);//// sheet.addCell(new Label(0, 2, "单位:", wcf_center));// sheet.addCell(new Label(2, 2, "ChinaLong", wcf_center)); // sheet.addCell(new Label(4, 2, "薪⽔", wcf_center));// sheet.addCell(new Label(5, 2, "5000", wcf_center));//// sheet.mergeCells(0, 3, 1, 3);// sheet.mergeCells(2, 3, 3, 3);//// sheet.addCell(new Label(0, 3, "性别:", wcf_center));// sheet.addCell(new Label(2, 3, "男", wcf_center));// sheet.addCell(new Label(4, 3, "婚否:", wcf_center));// sheet.addCell(new Label(5, 3, "否", wcf_center));//// sheet.mergeCells(0, 4, 1, 4);// sheet.mergeCells(2, 4, 3, 4);//// sheet.addCell(new Label(0, 4, "是否在职:", wcf_center)); // sheet.addCell(new Label(2, 4,"是",// wcf_center));// sheet.addCell(new Label(4, 4,"⼯作经验:", wcf_center)); // sheet.addCell(new Label(5, 4, "4",wcf_center));//// sheet.mergeCells(0, 5, 1, 5);// sheet.mergeCells(2, 5, 3, 5);//// sheet.addCell(new Label(0, 5, "保险费:", wcf_center));// sheet.addCell(new Label(2, 5,"50",// wcf_center));// sheet.addCell(new Label(4, 5, "保险⾦额:", wcf_center)); // sheet.addCell(new Label(5, 5, "50000",// wcf_center));//// sheet.mergeCells(0, 6, 1, 6);// sheet.mergeCells(2, 6, 3, 6);//// sheet.addCell(new Label(0, 6, "⼯作地点:", wcf_center)); // sheet.addCell(new Label(2, 6, "北京", wcf_center));// sheet.addCell(new Label(4, 6, "开⼼度:", wcf_center)); // sheet.addCell(new Label(5, 6, "⼀般", wcf_center));// 另起⼀table// sheet.mergeCells(0, 1, 8, 1);// sheet.addCell(new Label(0, 1, "详细数据", wcf_tabletitle)); // table标题sheet.addCell(new Label(0, 1, "序号", wcf_table));sheet.addCell(new Label(1, 1, "顾客姓名", wcf_table));sheet.addCell(new Label(2, 1, "性别", wcf_table));sheet.addCell(new Label(3, 1, "房间类型", wcf_table));sheet.addCell(new Label(4, 1, "房间号", wcf_table));sheet.addCell(new Label(5, 1, "⼊住时间", wcf_table));sheet.addCell(new Label(6, 1, "离店时间", wcf_table));sheet.addCell(new Label(7, 1, "顾客电话", wcf_table));sheet.addCell(new Label(8, 1, "顾客邮箱", wcf_table));sheet.addCell(new Label(9, 1, "⼊住情况", wcf_table));// // table内容// // 这⾥⽤你的dao// ManagerBookInfoDAO dao=new ManagerBookInfoDAO();// List list = dao.showBookInfo();// System.out.println("数据⾏数:" + list.size());// for (int i = 0; i < list.size(); i++) {// // 对应你的vo类// BookRoomInfo data = (BookRoomInfo) list.get(i);//// sheet.addCell(new Label(0, 2 + i, String.valueOf(i + 1),// wcf_center));// sheet.addCell(new Label(1, 2 + i, data.getName(),// wcf_center));// sheet// .addCell(new Label(2, 2 + i, data.getGender(),// wcf_center));// sheet// .addCell(new Label(3, 2 + i, data.getRoomType(),// wcf_center));// sheet// .addCell(new Label(4, 2 + i, data.getRoomId(),// wcf_center));// sheet.addCell(new Label(5, 2 + i, String.valueOf(data.getBegDate()).substring(0, 11)// , wcf_center));// sheet.addCell(new Label(6, 2 + i, String.valueOf(data.getEndDate()).substring(0, 11), wcf_center)); // sheet.addCell(new Label(7, 2 + i, data.getTelephone(), wcf_center));// sheet// .addCell(new Label(8, 2 + i, data.getEmail(),// wcf_center));//// sheet// .addCell(new Label(9, 2 + i, data.getState(),// wcf_center));// }workbook.write();workbook.close();System.out.println("导出成功");// 存放url地址} catch (Exception e) {System.out.println("在输出到EXCEL的过程中出现错误,错误原因:" + e.toString());}}public void testExcel3() throws Exception {try {WritableWorkbook workbook = Workbook.createWorkbook(new File("d:/资产信息.xls"));WritableSheet sheet = workbook.createSheet("资产信息", 0);sheet.setColumnView(0, 5); // 第1列sheet.setColumnView(1, 12); // 第2列sheet.setColumnView(2, 10);sheet.setColumnView(3, 22);sheet.setColumnView(4, 15);sheet.setColumnView(5, 22);sheet.setColumnView(6, 18);sheet.setColumnView(7, 30);sheet.setColumnView(8, 15);sheet.setColumnView(9, 15);sheet.setColumnView(10, 20);// 设置⾏⾼sheet.setRowView(0, 1600, false);sheet.setRowView(1, 400, false);sheet.setRowView(7, 400, false);// 设置页边距sheet.getSettings().setRightMargin(0.5);// 设置页脚sheet.setFooter("", "", "测试页脚");// 字体WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD);WritableFont tableFont = new WritableFont(WritableFont.ARIAL, 12,WritableFont.NO_BOLD);WritableFont baodanFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);// ⽤于标题WritableCellFormat wcf_title = new WritableCellFormat(BoldFont);wcf_title.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条wcf_title.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_title.setAlignment(Alignment.CENTRE); // ⽔平对齐wcf_title.setWrap(true); // 是否换⾏// ⽤于表格标题WritableCellFormat wcf_tabletitle = new WritableCellFormat(tableFont);wcf_tabletitle.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条wcf_tabletitle.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_tabletitle.setAlignment(Alignment.CENTRE); // ⽔平对齐wcf_tabletitle.setWrap(true); // 是否换⾏// ⽤于正⽂左WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐wcf_left.setAlignment(Alignment.LEFT);wcf_left.setWrap(true); // 是否换⾏// ⽤于正⽂左WritableCellFormat wcf_center = new WritableCellFormat(NormalFont);wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_center.setAlignment(Alignment.CENTRE);wcf_center.setWrap(true); // 是否换⾏// ⽤于正⽂右WritableCellFormat wcf_right = new WritableCellFormat(NormalFont);wcf_right.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_right.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_right.setAlignment(Alignment.RIGHT);wcf_right.setWrap(false); // 是否换⾏// ⽤于跨⾏WritableCellFormat wcf_merge = new WritableCellFormat(NormalFont); wcf_merge.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_merge.setVerticalAlignment(VerticalAlignment.TOP); // 垂直对齐wcf_merge.setAlignment(Alignment.LEFT);wcf_merge.setWrap(true); // 是否换⾏WritableCellFormat wcf_table = new WritableCellFormat(NormalFont); wcf_table.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条wcf_table.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直对齐 wcf_table.setAlignment(Alignment.CENTRE);wcf_table.setBackground(Colour.GRAY_25);wcf_table.setWrap(true); // 是否换⾏// 合并单元格,注意mergeCells(col0,row0,col1,row1)// --列从0开始,col1为你要合并到第⼏列,⾏也⼀样sheet.mergeCells(0, 0, 10, 0);//总标题sheet.addCell(new Label(0, 0, "it资产详细信息", wcf_title));// table标题sheet.addCell(new Label(0, 1, "序号", wcf_table));sheet.addCell(new Label(1, 1, "受理⼈", wcf_table));sheet.addCell(new Label(2, 1, "采购单号", wcf_table));sheet.addCell(new Label(3, 1, "机器类型", wcf_table));sheet.addCell(new Label(4, 1, "服务编号", wcf_table));sheet.addCell(new Label(5, 1, "资产编号", wcf_table));sheet.addCell(new Label(6, 1, "机器型号", wcf_table));sheet.addCell(new Label(7, 1, "机器mac", wcf_table));sheet.addCell(new Label(8, 1, "状态", wcf_table));sheet.addCell(new Label(9, 1, "领⽤⼈", wcf_table));sheet.addCell(new Label(10, 1, "领⽤时间", wcf_table));// table内容// 这⾥⽤你的dao// HibernateDAO dao = new HibernateDAO();// List list = dao.show_message();// System.out.println("数据⾏数:" + list.size());// for (int i = 0; i < list.size(); i++) {// // 对应你的vo类// TbMessage data = (TbMessage) list.get(i);//// sheet.addCell(new Label(0, 2 + i, String.valueOf(i + 1),// wcf_center));// sheet.addCell(new Label(1, 2 + i, data.getNickname(),// wcf_center));// sheet// .addCell(new Label(2, 2 + i, data.getGender(),// wcf_center));// sheet.addCell(new Label(3, 2 + i, String.valueOf(data// .getDatetime()), wcf_center));// sheet.addCell(new Label(4, 2 + i, data.getQq(), wcf_center));// sheet.addCell(new Label(5, 2 + i, data.getEmail(), wcf_center));// sheet// .addCell(new Label(6, 2 + i, data.getMessage(),// wcf_center));// }workbook.write();workbook.close();System.out.println("导出成功");// 存放url地址} catch (Exception e) {System.out.println("在输出到EXCEL的过程中出现错误,错误原因:" + e.toString()); }}}。

数据库课程设计报告(汽车租赁管理系统)

数据库课程设计报告(汽车租赁管理系统)

一.系统简介本系统为汽车租赁系统,采用B/S实现。

可以实现不同权限的浏览和管理。

管理员可以用于汽车租赁公司对汽车租赁事务的管理,包括新增、删除车辆记录,新增、删除用户记录,新增、删除租赁信息记录,新增、删除管理人员记录以及会员设置,客户则可以浏览车辆信息和个人的租车信息.主要技术:jsp运行环境:winows os+apache tomcat5.5+sqlserver2005+jdk 1.6开发软件:myeclipse6。

0.1开源软件:jxl.jar,sqljdbc4。

jar二.数据库设计1.需求分析因为客户只能亲自到汽车租赁公司去注册或租赁车辆,因而,两者权限分配如下:汽车公司方面:能够对车辆,租赁信息和用户信息进行管理。

超级管理员还可以对公司内部人员的信息进行管理客户方面:只能浏览车辆信息和个人用户信息及个人租赁信息.数据流图如下:2.概念设计ER图如下所示:3.逻辑设计建表语句如下:用户表://后为各字段意义声明create table userinfo(pid varchar(8) primarykey, //用户证件号username varchar(8), //用户名isvip int, //用户类型,是否为会员xingyu int,//信誉度,满分100.password varchar(8)//用户登录密码);管理员表:createtablemanager(widvarchar(8)primary key, //管理员工号typeint, //类型,超级管理员(部门经理等)和普通管理员username varchar(8), //管理员用户名password varchar(8)//管理员密码);车辆表:create table taxi(tid varchar(8)primary key,//车辆编号typevarchar(8), //车辆类型state varchar(8),//车辆状态,是否可租wid varchar(8), //year int,//起租年月日month int,dayint,timeint,detailinfotext, //车辆详细信息pay int //租用单价);租车信息表createtable rentinfo(rid int identity(1,1)primary key, //交易编号widvarchar(8), //经手人员pid varchar(8),//客户证件号tidvarchar(8),// 车辆号码yajin int, //押金backmoneyint,//返还金额pay int,//单价brokenvarchar(8),//破坏情况outyear int,//结束交易时间outmonth int,outday int,time int,//实际使用时间statevarchar(8)//交易状态);——设置外键BEGIN TRANSACTIONaltertable dbo。

获取表格里面的数据

获取表格里面的数据
}
System.out.println();
}
book.close();
遍历方法一 : 根据行 和 列 进行遍历
for ( int i = 0 ; i < rownum; i ++ ) // 循环进行读写
{
//遍历列
for ( int j = 0 ; j < columnum; j ++ ) {
Cell cell1 = sheet.getCell(j, i);
遍历方法二: 只根据行 就可以遍历 数据
for (int i = 0; i < rownum; i++) {
Байду номын сангаас //获取每一列
Cell[] cs = sheet.getRow(i);
for (Cell cell : cs) {
System.out.print(cell.getContents()+"\t");
如何把表格里面的数据获取出来
只需要导入 这一个jar包 就可以了
1. 创建项目, 创建包 还有lib包 导入一个jar包(jxl.jar) 选中jar包 添加引用
2. 操作文件
//获取文件的路径
Workbook book = Workbook.getWorkbook( new File( "d://student.xls" ));
//获取 第一行的数据
Sheet sheet = book.getSheet(0); // 得到第一列第一行的单元格
int columnum = sheet.getColumns(); // 得到列数

jar包的使用方法

jar包的使用方法

jar包的使用方法一、什么是jar包在Java开发中,jar包(Java Archive)是一种用于存放Java类、资源文件和元数据的文件格式。

它是一种压缩文件,通常以.jar作为文件扩展名。

jar包可以将多个Java文件打包成一个文件,方便程序的分发和部署。

二、安装jar包安装jar包非常简单,只需要将jar包文件复制到Java项目的classpath路径下即可。

classpath是Java程序搜索类和资源文件的路径。

一般情况下,可以将jar包放置在项目的lib目录下,然后在项目的构建配置中添加jar包的依赖项。

三、使用jar包使用jar包可以通过两种方式:命令行方式和集成开发环境(IDE)方式。

1. 命令行方式在命令行中使用jar包,可以通过Java命令来执行jar包中的主类。

假设我们有一个名为example.jar的jar包,其中包含一个名为com.example.Main的主类。

可以使用以下命令执行该jar包:```java -jar example.jar```2. 集成开发环境(IDE)方式在集成开发环境中,可以通过添加jar包的依赖项来使用它。

不同的IDE有不同的配置方法,以Eclipse为例,可以按照以下步骤添加jar包的依赖项:- 右击项目,选择"Properties";- 在弹出的对话框中,选择"Java Build Path";- 在"Libraries"选项卡中,点击"Add JARS..."按钮;- 选择jar包文件并点击"OK"按钮。

四、使用示例下面以一个简单的示例来演示如何使用jar包。

假设我们有一个Java项目,其中包含两个类:Main.java和Util.java。

Util.java提供了一个用于计算两个整数之和的方法add()。

现在我们希望将这两个类打包成一个jar包,并在另一个项目中使用它。

Jmeter_获取结果写到excel

Jmeter_获取结果写到excel

Jmeter_获取结果写到excel 如何将jmeter运⾏的结果写回⾄excel呢?
1.配置环境
1)下载jxl.jar这个jar包
2)下载后,放在jmeter安装路径的lib⽬录下
3)jxl.jar的作⽤:完成对excel的读写以及修改操作
Excel三要素:workbook,sheet,cell,三个元素依次定位
1,先获取excel ⽂件-》获取表格名称-》获取单元格坐标
2.获取结果,写⼊到对应的单元格⾥⾯去
3.需要利⽤beanshell写Java代码,获取对应的数据写⼊到excel⾥⾯去
2.⾃动化测试数据的准备
1)测试⽤例和数据参数化
3.把Java编写好的Jar包 CWResultFile.jar 放在apache-jmeter-3.3/lib/ext⽬录下
4.
4.实战:设计5个测试⽤例⾃动化运⾏后⽣成excel到指定路径
线程组
HTTP请求默认值把通过的url写进去,后⾯都可以使⽤
添加CSV config,上传test data的数值
添加CSV ,上传test case
登录-Http请求
添加正则表达式,获取实际结果fresult
⽤代码beanshell实现创建excel,只需要创建⼀次测试报告就够了,所以添加仅⼀次控制器利⽤代码实现把运⾏结果写进去
查看结果树
运⾏完,指定⽬录就会⽣成测试报告⽂件。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

jxl.jar通过java操作excel表格的工具类库支持Excel 95-2000的所有版本生成Excel 2000标准格式支持字体、数字、日期操作能够修饰单元格属性支持图像和图表应该说以上功能已经能够大致满足我们的需要。

最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。

另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

搭建环境将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。

基本操作一、创建文件拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:代码(CreateXLS.java)://生成Excel的类import java.io.*;import jxl.*;import bel;import jxl.write.Number;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class CreateXLS {public static void main(String args[]) {try {// 打开文件WritableWorkbook book = Workbook.createWorkbook(new File("测试.xls"));// 生成名为“第一页”的工作表,参数0表示这是第一页WritableSheet sheet = book.createSheet("第一页", 0);// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)// 以及单元格内容为testLabel label = new Label(0, 0, "test");// 将定义好的单元格添加到工作表中sheet.addCell(label);/** 生成一个保存数字的单元格必须使用Number的完整包路径,否则有语法歧义单元格位置是第二列,第一行,值为789.123*/Number number = new Number(1, 0, 789.123);sheet.addCell(number);// 写入数据并关闭文件book.write();book.close();} catch (Exception e) {System.out.println(e);}}}编译执行后,会在当前位置产生一个Excel文件。

二、读取文件以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:import java.io.*;import jxl.*;public class ReadXLS {public static void main(String args[]) {try {Workbook book = Workbook.getWorkbook(new File("测试.xls"));// 获得第一个工作表对象Sheet sheet = book.getSheet(0);// 得到第一列第一行的单元格Cell cell1 = sheet.getCell(0, 0);String result = cell1.getContents();System.out.println(result);book.close();} catch (Exception e) {System.out.println(e);}}}程序执行结果:test三、修改文件利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。

下面的例子是在我们已经生成的Excel文件中添加一个工作表://修改Excel的类,添加一个工作表import java.io.*;import jxl.*;import jxl.write.*;public class UpdateXLS {public static void main(String args[]) {try {// Excel获得文件Workbook wb = Workbook.getWorkbook(new File("测试.xls"));// 打开一个文件的副本,并且指定数据写回到原文件WritableWorkbook book = Workbook.createWorkbook(new File("测试.xls"),wb);// 添加一个工作表WritableSheet sheet = book.createSheet("第二页", 1);sheet.addCell(new Label(0, 0, "第二页的测试数据"));book.write();book.close();} catch (Exception e) {System.out.println(e);}}}执行结果如图:高级操作一、数据格式化在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。

1、字串格式化字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。

假设我们在生成一个含有字串的单元格时,使用如下语句,为方便叙述,我们为每一行命令加了编号:WritableFont font1= newWritableFont(WritableFont.TIMES,16,WritableFont.BOLD);或//设置字体格式为excel支持的格式WritableFont font3=new WritableFont(WritableFont.createFont("楷u20307 _GB2312"),12,WritableFont.NO_BOLD );① WritableCellFormat format1=new WritableCellFormat(font1);② Label label=new Label(0,0,"data 4 test",format1);③其中①指定了字串格式:字体为TIMES,字号16,加粗显示。

WritableFont有非常丰富的构造子,供不同情况下使用,jExcelAPI的java-doc中有详细列表,这里不再列出。

②处代码使用了WritableCellFormat类,这个类非常重要,通过它可以指定单元格的各种属性,后面的单元格格式化中会有更多描述。

③处使用了Label类的构造子,指定了字串被赋予那种格式。

在WritableCellFormat类中,还有一个很重要的方法是指定数据的对齐方式,比如针对我们上面的实例,可以指定://把水平对齐方式指定为居中format1.setAlignment(jxl.format.Alignment.CENTRE);//把垂直对齐方式指定为居中format1.setVerticalAlignment(jxl.format.VerticalAlignment.C ENTRE);//设置自动换行format1.setWrap(true);二、单元格操作Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI提供了这些支持。

这些操作相对比较简单,下面只介绍一下相关的API。

1、合并单元格WritableSheet.mergeCells(int m,int n,int p,int q);//作用是从(m,n)到(p,q)的单元格全部合并,比如:WritableSheet sheet=book.createSheet("第一页",0);//合并第一列第一行到第六列第一行的所有单元格sheet.mergeCells(0,0,5,0);合并既可以是横向的,也可以是纵向的。

合并后的单元格不能再次进行合并,否则会触发异常。

2、行高和列宽WritableSheet.setRowView(int i,int height);/**作用是指定第i+1行的高度,比如:*///将第一行的高度设为200sheet.setRowView(0,200);WritableSheet.setColumnView(int i,int width);/**作用是指定第i+1列的宽度,比如:*///将第一列的宽度设为30sheet.setColumnView(0,30);三、操作图片public static void write()throws Exception{WritableWorkbook wwb=Workbook.createWorkbook(newFile("c:/1.xls"));WritableSheet ws=wwb.createSheet("Test Sheet 1",0);File file=newFile("C:\\jbproject\\PVS\\WebRoot\\weekhit\\1109496996281.p ng");WritableImage image=new WritableImage(1, 4, 6, 18,file);ws.addImage(image);wwb.write();wwb.close();}很简单和插入单元格的方式一样,不过就是参数多了些,WritableImage这个类继承了Draw,上面只是他构造方法的一种,最后一个参数不用了说了,前面四个参数的类型都是double,依次是x, y, width, height,注意,这里的宽和高可不是图片的宽和高,而是图片所要占的单位格的个数,因为继承的Draw所以他的类型必须是double,具体里面怎么实现的我还没细看:)因为着急赶活,先完成功能,其他的以后有时间慢慢研究。

以后会继续写出在使用中的心得给大家。

读:读的时候是这样的一个思路,先用一个输入流(InputStream)得到Excel文件,然后用jxl中的Workbook得到工作薄,用Sheet从工作薄中得到工作表,用Cell得到工作表中得某个单元格.InputStream->Workbook->Sheet->Cell,就得到了excel文件中的单元格代码:String path="c:\\excel.xls";//Excel文件URLInputStream is = new FileInputStream(path);//写入到FileInputStreamjxl.Workbook wb = Workbook.getWorkbook(is); //得到工作薄jxl.Sheet st = wb.getSheet(0);//得到工作薄中的第一个工作表Cell cell=st.getCell(0,0);//得到工作表的第一个单元格,即A1String c = cell.getContents();//getContents()将Cell中的字符转为字符串wb.close();//关闭工作薄is.close();//关闭输入流我们可以通过Sheet的getCell(x,y)方法得到任意一个单元格,x,y和excel中的坐标对应.例如A1对应(0,0),A2对应(0,1),D3对应(3,2).Excel中坐标从A,1开始,jxl 中全部是从0开始.还可以通过Sheet的getRows(),getColumns()方法得到行数列数,并用于循环控制,输出一个sheet中的所有内容.写:往Excel中写入内容主要是用jxl.write包中的类.思路是这样的:OutputStream<-WritableWorkbook<-WritableSheet<-Label这里面Label代表的是写入Sheet的Cell位置及内容.代码:OutputStream os=new FileOutputStream("c:\\test.xls");//输出的Excel文件URLWritableWorkbook wwb = Workbook.createWorkbook(os);//创建可写工作薄WritableSheet ws = wwb.createSheet("sheet1", 0);//创建可写工作表Label labelCF=new Label(0, 0, "hello");//创建写入位置和内容ws.addCell(labelCF);//将Label写入sheet中/**Label的构造函数Label(int x,int y,String aString)xy意同读的时候的xy,aString是写入的内容.*/WritableFont wf = new WritableFont(WritableFont.TIMES, 12, WritableFont.BOLD, false);//设置写入字体WritableCellFormat wcfF = new WritableCellFormat(wf);//设置CellFormatlabelCF=new Label(0, 0, "hello");//创建写入位置,内容和格式/**Label的另一构造函数Label(int c,int r,String cont,CellFormat st)可以对写入内容进行格式化,设置字体及其它的属性.*///现在可以写了wwb.write();//写完后关闭wwb.close();//输出流也关闭吧os.close;OK,只要把读和写结合起来,就可以在N个Excel中读取数据写入你希望的Excel 新表中,还是比较方便的.下面是程序一例:程序代码:try{DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver());String[] arr = new String[2];Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@10.110.0.204:1521:crmdb4 ","dbresadm","qwe123");StringBuffer sb = new StringBuffer();String sql = "select * from tablename";PreparedStatement stmt=conn.prepareStatement(sql);ResultSet rs = stmt.executeQuery(sql);// 新建Excel文件String filePath=request.getRealPath("aaa.xls");File myFilePath=new File(filePath);if(!myFilePath.exists()) {myFilePath.createNewFile();}FileWriter resultFile=new FileWriter(myFilePath);PrintWriter myFile=new PrintWriter(resultFile);resultFile.close();// 用JXL向新建的文件中添加内容OutputStream outf = new FileOutputStream(filePath);jxl.write.WritableWorkbook wwb =Workbook.createWorkbook(outf);jxl.write.WritableSheet ws =wwb.createSheet("sheettest", 0);int i=0;int j=0;for(int k = 0; k < rs.getMetaData().getColumnCount(); k++) {ws.addCell(newLabel(k,0,rs.getMetaData().getColumnName(k+1)));}while(rs.next()){System.out.println(rs.getMetaData().getColumnCount());for(int k = 0; k < rs.getMetaData().getColumnCount(); k++) {ws.addCell(newLabel(k,j+i+1,rs.getString(k+1)));}i++;}wwb.write();wwb.close();}catch(Exception e){e.printStackTrace();}finally{rs.close();conn.close();}response.sendRedirect("aaa.xls"); }。

相关文档
最新文档