Java实现Excel数据导入和导出的研究与应用

Java实现Excel数据导入和导出的研究与应用
Java实现Excel数据导入和导出的研究与应用

Java实现Excel数据导入导出的研究与应用

王晶晶

北京邮电大学网络教育学院(100088)

E-mail:bolalisi_double@https://www.360docs.net/doc/033077338.html,

摘要:Excel能够通过功能强大的工具将杂乱的数据组织成有用的信息,然后分析、交流和共享所得到的结果。很多系统由于存在着大量需要处理的数据,Excel本身强大的功能使得它成为处理分析这些数据首选的工具。随着Java语言成为越来越多系统的开发语言,利用Java进行Excel的数据导入导出在很多系统中都发挥着重要的作用,本文主要介绍了Jxl API的主要功能,并结合实例探讨了利用Jxl API操作Excel数据的导入和导出。

关键字:Java;Excel; Jxl API;数据导入导出

中图分类号:TP312文献标识码:A

1. 引言

MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。在远程网络教学系统中,利用Excel表格统计学生的作业考试情况信息,便于老师了解学生的学习情况,分析教学效果,制定教学计划。所以,用Java操作Excel表格,导出相关的信息对于远程网络教育系统有着的很重要的意义。

在开源世界中,有两套比较有影响的API提供Excel数据导入导出的功能,一个是POI,一个是jExcelAPI。本文结合基于J2EE开发的多媒体教学系统中提供的将学生作业信息导出到Excel表格中的实例,详细阐述了利用JAVA开发的jExcelAPI操作excel的方法。

2. Jxl 简介

2.1 Java语言简介

Java语言具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中极为强大的编程语言[1]。它具有以下一些特点[2]:简单,面向对象,分布式,解释执行,鲁棒,安全,体系结构中立,可移植,高性能,多线程以及动态性。

2.2什么是Jxl

Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该 API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。

Jxl发布的稳定版本是V2.0,提供以下功能:

从Excel 95、97、2000等格式的文件中读取数据[3];

读取Excel公式(可以读取Excel 97以后的公式)[3];

生成Excel数据表(格式为Excel 97)[3];

支持字体、数字、日期的格式化[3];

支持单元格的阴影操作,以及颜色操作[3];

修改已经存在的数据表。

2.3代码举例

2.3.1从Excel文件读取数据表

Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel 数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),相关文献中给出了部分事例介绍[4],下面的代码片段举例说明了应该如何操作:

import java.io.*;

import jxl.*;

… … … …

try

{

//构建Workbook对象, 只读Workbook对象

//直接从本地文件创建Workbook

//从输入流创建Workbook

InputStream is = new FileInputStream(sourcefile);

jxl.Workbook rwb = Workbook.getWorkbook(is);

}

catch (Exception e)

{e.printStackTrace();}

一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。代码如下:

//获取第一张Sheet表

Sheet rs = rwb.getSheet(0);

我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。

一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。代码如下://获取第一行,第一列的值

Cell c00 = rs.getCell(0, 0);

String strc00 = c00.getContents();

//获取第一行,第二列的值

Cell c10 = rs.getCell(1, 0);

String strc10 = c10.getContents();

//获取第二行,第二列的值

Cell c11 = rs.getCell(1, 1);

String strc11 = c11.getContents();

如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell值都作为一个字符串返回。示例代码中 Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。

当完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。

//操作完成时,关闭对象,释放占用的内存空间

rwb.close();

2.3.2 生成新的Excel工作薄

与读取Excel工作表相似,首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象,相关文献中给出了事例介绍[4],具体代码如下:

try

{

//构建Workbook对象, 只读Workbook对象

//Method 1:创建可写入的Excel工作薄

jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(targetfile));

//Method 2:将WritableWorkbook直接写入到输出流

/*

OutputStream os = new FileOutputStream(targetfile);

jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os);

*/}

catch (Exception e)

{e.printStackTrace();}

//创建Excel工作表

jxl.write.WritableSheet ws = wwb.createSheet("Test Sheet 1", 0);

//1.添加Label对象

https://www.360docs.net/doc/033077338.html,bel labelC = new https://www.360docs.net/doc/033077338.html,bel(0, 0, "This is a Label cell");

ws.addCell(labelC);

//添加带有字型Formatting的对象

jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES,18, WritableFont.BOLD, true);

jxl.write.WritableCellFormat wcfF = new jxl.write.WritableCellFormat(wf);

https://www.360docs.net/doc/033077338.html,bel labelCF = new https://www.360docs.net/doc/033077338.html,bel(1, 0, "This is a Label Cell", wcfF);

ws.addCell(labelCF);

2.3.3单元格操作

1)合并单元格

WritableSheet.mergeCells(int m,int n,int p,int q);

作用是从(m,n)到(p,q)的单元格全部合并,比如:

WritableSheet sheet=book.createSheet(“第一页”,0) [5];

//合并第一列第一行到第六列第一行的所有单元格

sheet.mergeCells(0,0,5,0);

合并既可以是横向的,也可以是纵向的。合并后的单元格不能再次进行合并,否则会触发异常。

2)行高和列宽

WritableSheet.setRowView(int i,int height);

作用是指定第i+1行的高度,比如:

//将第一行的高度设为200[5]

sheet.setRowView(0,200);

WritableSheet.setColumnView(int i,int width);

作用是指定第i+1列的宽度,比如:

//将第一列的宽度设为30[5]

sheet.setColumnView(0,30);

3. 应用实例

本文所举的实例为网上多媒体教学系统中对于学生作业导出信息的实现。

3.1 系统界面及导出表实例

下图1为导出功能的入口:点击导出此次作业的成绩按钮,就会触发相应的动作,进行数据表的导出

图1 导出功能入口

下图2为系统导出的表格的结构

图2 系统导出Excel表格结构

3.2 实现代码

导出之前首先要定义一个SingleTaskScoreExportInfo对象,用来存放从数据库中查询出

来的导出表需要的相关字段的信息。它是作业接收者对象的一个子集,只包含了作业接收者

对象中学号,姓名,班级,作业标题,完成时间,分数,查看次数等信息。

为数据导出按钮连接消息处理函数:函数主要包括生成工作表,调用方法从数据库中将

对应某次作业的作业接收者的信息查找出来,并用相关的属性初始化SingleTaskScoreExportInfo对象,放在结果集中,构造循环将查询到的结果集中的对象写入

到Excel表格中。以下是实现的主要代码:

//定义表格名称为作业成绩,创建工作薄

String filename="作业成绩";

response.setHeader("Content-Disposition" ,"attachment;filename="+new String(filename.getBytes(),"iso8859-1")+".xls");

OutputStream os=response.getOutputStream();

WritableWorkbook wwb=Workbook.createWorkbook(os);

//创建工作表,并写入相应的表头字段

WritableSheet sheet=wwb.createSheet("所有成绩", 0);

String []title={"学号","班级","姓名","作业标题","完成时间","分数","次数"};

for (int j = 0; j < title.length; j++) {// 在sheet中写标题栏

sheet.addCell(new Label(j, 0, title[j], arial12format));}

//查询需要的数据,放在List结果集中

List scores = studyManager.getSingleTaskScoresByCourse(courseId,taskId);

//将相关的信息写入到工作表

SingleTaskScoreExportInfo item;

int row=1;

for (it = scores.iterator(); it.hasNext();) {

item = (SingleTaskScoreExportInfo) it.next();

if(!"".equals(item.getStudentNum())&&null!=item.getStudentNum()){

//添加学号

Label label = new Label(0, row, item.getStudentNum());

20);

sheet.setColumnView(0,

sheet.addCell(label);

//添加班级

label = new Label(1, row, item.getClassGroupName());

50);

sheet.setColumnView(1,

sheet.addCell(label);

//添加姓名

label = new Label(2,row,item.getStudentName());

10);

sheet.setColumnView(2,

sheet.addCell(label);

//添加作业标题

label = new Label(3,row,item.getTaskTitle());

30);

sheet.setColumnView(3,

sheet.addCell(label);

// 添加完成时间

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

WritableCellFormat wc = new WritableCellFormat();

wc.setAlignment(Alignment.CENTRE);

sheet.setColumnView(4,30);

if(item.getFinishTime()!=null){

String newdate = sdf.format(item.getFinishTime());

label = new Label(4,row,newdate,wc);

sheet.addCell(label); }

else{label=new Label(4,row,"未查看此次作业",wc);sheet.addCell(label);}

//添加分数

Number score = new Number(5, row, item.getScore(), wcf);

double score_temp=score.getValue();

if(0

{ sheet.addCell(new Number(5, row, score_temp*100, redFormat)); } else if (item.getFinishTime()==null){sheet.addCell(new Number(5, row, -1, redFormat));} else if(item.getFinishTime()!=null&&(score_temp==0||"".equals(item.getScore())))

{sheet.addCell(new Number(5, row, (double)0, redFormat));}

else sheet.addCell(new Number(5, row, score_temp*100, wcf));

//添加查看次数

Number homeWorkTimes = new Number(6, row, item.getHomeWorkTimes());

sheet.addCell(homeWorkTimes);}

row++;// 指针下移}

//导出后关闭对象,释放内存

wwb.write();

wwb.close();

os.close();

4. 小结

Jxl提供了有关Java操纵Excel的大多数类,可以方便地进行数据读写,单元格格式定义。在使用的时候需要注意的几个问题包括:

在头文件中要把相关的Jar包包含进来;

import java.io.*;

import jxl.*;

import jxl.write.*

如果循环语句中使用到了一定的导出格式,建议把格式定义写在循环体外,特别是在数

据量很大的时候。否则超出一定数量的数据可能不能按照定义的格式输出;

本文仅是对Jxl包提供的一些接口进行了实例调用,对于不同的需求,Jxl还提供了更多的接口方法,可以在今后的实践中继续探索研究。

参考文献

[1] (美)Bruce Eckel. Thinking in Java[M]. 北京::机械工业出版社,2005年

[2]耿祥义张跃平 Java基础教程(第二版)[M]. 北京:清华大学出版社,2007

[3] https://www.360docs.net/doc/033077338.html,/view/1327707.htm

[4] https://www.360docs.net/doc/033077338.html,/lolinzhang/archive/2008/05/13/2441497.aspx

[5] 李少军夏红霞詹琴. 《基于JA V A技术的Web环境下Excel的应用》[J].微机发展,2005年,第15卷:114

页-116页.

[6]Java Excel API Document.

The Realization of Using Excel File as Input or Output Data

in Java

Wang Jingjing

Department of Network Education, Beijing University Of Posts and Telecommunications, Beijing,

PRC, (100088)

Abstract

Microsoft Excel can organize littery data into useful information through its powerful instrument, then analysis the result , communicate with these results and share the data . In many systems, there are a lot of data need to process, the powerful instrument of Microsoft Excel makes it be the first choice to do it. Because more and more systems are developed by Java , it is important to use java to realize using Excel file as input or output data. This document introduces the main functions of Jxl API, then gives an example to discuss how to use Jxl API to realize it.

Keywords: Java;Excel ;Jxl API;data input or output

java导入导出excel操作

java导入导出excel操作(jxl) Java解释Excel数据(包的使用) 关键字: java excel 包 下载地址: 真实下载地址: 网站上对它的特征有如下描述: ● 支持Excel 95-2000的所有版本 ● 生成Excel 2000标准格式 ● 支持字体、数字、日期操作 ● 能够修饰单元格属性 ● 支持图像和图表 应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java 的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel 文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。 搭建环境 将下载后的文件解包,得到,放入classpath,安装就完成了。 基本操作 一、创建文件 拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下: Java代码 /* * Created on Dec 30, 2007 * * To change the template for this generated file go to * Window>Preferences>Java>Code Generation>Code and Comments */ package ; import .*; import jxl.*; import .*;

/** * @author Ken * * To change the template for this generated type comment go to * Window>Preferences>Java>Code Generation>Code and Comments */ public class CreateXLS { public static void main(String[] args) { try { WritableWorkbook book = (new File("d:/")); 0 means this is 1st page. WritableSheet sheet = ("Sheet_1", 0); value is "test". Label label = new Label(0, 0, "test"); (label); WARN:necessarily use integrated package-path, otherwise will be throws path -error. value is . number = new0, ; (number); (); (); } catch (Exception e) { (); } } } 编译执行后,会在当前位置产生一个Excel文件。 二、读取文件 以刚才我们创建的Excel文件为例,做一个简单的读取操作,程序代码如下:

JSP中导入导出Excel文件

JSP中导入导出Excel文件 一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象。它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97-2002)对象。它不象我们仅仅是用csv生成的没有格式的可以由Excel转换的东西,而是真正的Excel 对象,你可以控制一些属性如sheet,cell等等。 二.HSSF概况 HSSF 是sHorrible SpreadSheet Format的缩写,也即“讨厌的电子表格格式”。也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规的API。通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。 HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。前者很好理解,后者比较抽象,但操作效率要高得多。 三.开始编码 1 .准备工作 要求:JDK 1.4+POI开发包 可以到 https://www.360docs.net/doc/033077338.html,/dyn/closer.cgi/jakarta/poi/ 最新的POI工具包 2 . EXCEL 结构 HSSFWorkbook excel 文档对象介绍 HSSFSheet excel的表单 HSSFRow excel的行 HSSFCell excel的格子单元 HSSFFont excel字体 HSSFName 名称 HSSFDataFormat 日期格式 HSSFHeader sheet头 HSSFFooter sheet尾 和这个样式 HSSFCellStyle cell样式

Java实现Excel数据导入和导出的研究与应用

Java实现Excel数据导入导出的研究与应用 王晶晶 北京邮电大学网络教育学院(100088) E-mail:bolalisi_double@https://www.360docs.net/doc/033077338.html, 摘要:Excel能够通过功能强大的工具将杂乱的数据组织成有用的信息,然后分析、交流和共享所得到的结果。很多系统由于存在着大量需要处理的数据,Excel本身强大的功能使得它成为处理分析这些数据首选的工具。随着Java语言成为越来越多系统的开发语言,利用Java进行Excel的数据导入导出在很多系统中都发挥着重要的作用,本文主要介绍了Jxl API的主要功能,并结合实例探讨了利用Jxl API操作Excel数据的导入和导出。 关键字:Java;Excel; Jxl API;数据导入导出 中图分类号:TP312文献标识码:A 1. 引言 MS的电子表格(Excel)是Office的重要成员,是保存统计数据的一种常用格式。在一个Java应用中,将一部分数据生成Excel格式,是与其他系统无缝连接的重要手段。在远程网络教学系统中,利用Excel表格统计学生的作业考试情况信息,便于老师了解学生的学习情况,分析教学效果,制定教学计划。所以,用Java操作Excel表格,导出相关的信息对于远程网络教育系统有着的很重要的意义。 在开源世界中,有两套比较有影响的API提供Excel数据导入导出的功能,一个是POI,一个是jExcelAPI。本文结合基于J2EE开发的多媒体教学系统中提供的将学生作业信息导出到Excel表格中的实例,详细阐述了利用JAVA开发的jExcelAPI操作excel的方法。 2. Jxl 简介 2.1 Java语言简介 Java语言具有面向对象、与平台无关、安全、稳定和多线程等优良特性,是目前软件设计中极为强大的编程语言[1]。它具有以下一些特点[2]:简单,面向对象,分布式,解释执行,鲁棒,安全,体系结构中立,可移植,高性能,多线程以及动态性。 2.2什么是Jxl Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该 API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、 Servlet来调用API实现对Excel数据表的访问。 Jxl发布的稳定版本是V2.0,提供以下功能: 从Excel 95、97、2000等格式的文件中读取数据[3]; 读取Excel公式(可以读取Excel 97以后的公式)[3];

JAVA导出EXCEL类(TSV格式)

package com.bear.util; import java.io.*; import javax.swing.*; import javax.swing.table.*; public class ExcelUtil { public void exportTable(JTable table,String title) throws IOException { TableModel model = table.getModel(); JFileChooser fileChooser = new JFileChooser(); fileChooser.setCurrentDirectory(new File("."));//设置当前目录 fileChooser.setAcceptAllFileFilterUsed(false); fileChooser.addChoosableFileFilter(new javax.swing.filechooser.FileFilter() { public boolean accept(File file) { if (file.isDirectory()) return true; return (file.getName().indexOf("xls") != -1); } public String getDescription() { return "Microsoft Excel文件(*.xls)"; } }); //fileChooser.showSaveDialog(null); int returnVal =fileChooser.showSaveDialog(fileChooser); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); if (file.exists()) { int copy = JOptionPane.showConfirmDialog(null,"是否要覆盖当前文件?", "保存", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE); if (copy == JOptionPane.YES_OPTION) fileChooser.approveSelection(); else return; } else fileChooser.approveSelection(); FileWriter out = new FileWriter(file); out.write(title + "\n\n"); for(int i=0; i < model.getColumnCount(); i++) out.write(model.getColumnName(i) + "\t"); out.write("\n"); for(int i=0; i< model.getRowCount(); i++) {

【VIP专享】java 导出excel 增量写入同一sheet

sheetAct=createExcelHead(sheetAct,writer,excelHead,title+num); } list=agentService .queryExportData(map); if (j<5){ findExcelData(j*limit,list,sheetAct); }else { int num=j/5; findExcelData((j-num*5)*limit,list,sheetAct); } } writer.write();}catch (Exception e){ LOGGER .error("Exception:", e.fillInStackTrace()); } finally { if (null != writer) { writer.close(); } } return out.toByteArray(); } findExcelData 方法: private void findExcelData(int start,List list,ExcelWriter.Sheet sheetAct){ StudioSeriesPrice detail=null ;/*拼装excel 内容*/ for (int i=0;i

Java数据导入导出Excel

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Workbook; import jxl.format.UnderlineStyle; import https://www.360docs.net/doc/033077338.html,bel; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFCell; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFCellStyle; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFRow; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFSheet; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class ExcelOpt { /** * 生成一个Excel文件jxl * @param fileName 要生成的Excel文件名 * @jxl.jar 版本:2.6 */ public static void writeExcel(String fileName){ WritableWorkbook wwb = null; try { //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(new File(fileName)); } catch (IOException e) { e.printStackTrace(); } if(wwb!=null){ //创建一个可写入的工作表 //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置

java实现excel导入导出

Java数据导入Excel package com.bossy.base; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import jxl.Workbook; import jxl.format.UnderlineStyle; import https://www.360docs.net/doc/033077338.html,bel; import jxl.write.WritableFont; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; import jxl.write.biff.RowsExceededException; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFCell; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFCellStyle; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFRow; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFSheet; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem;

java导出excel案例

JA V A实现EXCEL的导入和导出(四) JA V A EXCEL API简介 Java Excel是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。 现在发布的稳定版本是V2.0,提供以下功能: * 从Excel 95、97、2000等格式的文件中读取数据; * 读取Excel公式(可以读取Excel 97以后的公式); * 生成Excel数据表(格式为Excel 97); * 支持字体、数字、日期的格式化; * 支持单元格的阴影操作,以及颜色操作; * 修改已经存在的数据表; 现在还不支持以下功能,但不久就会提供了: 1. 不能够读取图表信息; 2. 可以读,但是不能生成公式,任何类型公式最后的计算值都可以读出; 回页首 应用示例 1 从Excel文件读取数据表 Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java) import java.io.*; import jxl.*; … … … … try { //构建Workbook对象, 只读Workbook对象 //直接从本地文件创建Workbook //从输入流创建Workbook InputStream is = new FileInputStream(sourcefile); jxl.Workbook rwb = Workbook.getWorkbook(is); } catch (Exception e) { e.printStackTrace();

JAVA导出WORD与EXCEL

package ais.mytest.web; /** * 功能:主要实现数据导出Excel和Word功能* 日期:2008-2-28 */ import ais.basic.service.BasicUtil; import https://www.360docs.net/doc/033077338.html,mons.file.service.FileService; import ais.framework.web.BaseAction; import ais.mytest.model.Employeer; import ais.mytest.service.IemployeerService; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.text.DecimalFormat; import jxl.write.NumberFormat; import java.util.List; import javax.servlet.ServletOutputStream; import jxl.Cell; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.UnderlineStyle; import jxl.format.VerticalAlignment; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.BoldStyle; import jxl.format.Colour; import jxl.write.Blank; import jxl.write.DateFormat; import jxl.write.DateTime; import https://www.360docs.net/doc/033077338.html,bel; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableImage; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; //import com.ibm.icu.text.SimpleDateFormat; //import com.lowagie.text.Cell; import com.lowagie.text.Document; import com.lowagie.text.Font; import com.lowagie.text.Image;

java批量导出excel格式数据(含每条数据的附件)

,批量导出数据到excel中(包含每条数据对应的附件) 本程序功能功能说明 采用压缩的方法把用户要导出的excel 文件和excle数据中每条数据对应的文件,打包成一个大文件,输出到缓存区,用户通过浏览器来下载这个文件,缺陷是文件过大时,比如几个G大小的附件,ie下载很慢。建议用360等支持断点续传的功能的浏览器来下载。 Excel查看附件采用的是链接方式 详细如下面截图,点击文件链接,可以链接到相对文件位置的文件夹(因为附件可能是多个,采用的都是文件夹的相对链接的方式实现的), 压缩包内存放的文件结构: Excel文件,reportfile(存放附件的文件夹,文件夹结构详细见代码) 每行excel 都对应相对的文件夹(reportfile内的某一个子文件夹和excel的行号相对应),如下截图,红色圈圈链接的就是对应的相应文件夹下的appfile文件夹下的文件: //引入的类 import org.apache.tools.zip.ZipEntry; //把文件写入到压缩对象out import org.apache.tools.zip.ZipOutputStream; import java.io.*; import java.io.OutputStream; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFCell; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFCellStyle; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFFont; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFRichTextString;

java实现导出excel

java实现导出excel 最近有个项目涉及到从java数据库access提取数据到excel中,我搜索了大概有两种办法一种是poi一种是jxl。下面介绍下这两种方法。POI为apache公司的一个子项目,主要是提供一组操作windows文档的Java API.Java Excel俗称jxl是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows 操作系统也可以通过纯Java应用来处理Excel数据表。因为是使用Java编写的,所以我们在Web 应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。 就这两者的区别,主要谈下JVM虚拟机内存消耗的情况. 数据量3000条数据,每条60列.JVM虚拟机内存大小64M. 使用POI:运行到2800条左右就报内存溢出. 使用JXL:3000条全部出来,并且内存还有21M的空间. 可想而知,在对内存的消耗方面差距还是挺大的. 也许是由于JXL在对资源回收利用方面做的还挺不错的. 关于两者效率方面,没有研究过,我想这个也是基于大数据量而言的,数据量小的话基本上差别不大,也不难被发觉.但是大的数据量,POI消耗的JVM内存远比JXL消耗的多.但相比提供的功能的话,JXL 又相对弱了点.所以如果要实现的功能比较复杂的情况下可以考虑使用POI,但如果只想生成一些大数据量可以考虑使用JXL,或者CSV也是一个不错的选择,不过CSV并不是真正的excel. jxl.jar概述 通过java操作excel表格的工具类库 支持Excel95-2000的所有版本 生成Excel2000标准格式 支持字体、数字、日期操作 能够修饰单元格属性 支持图像和图表 应该说以上功能已经能够大致满足我们的需要。最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。

poi导出excel文件并提示下载

一、导入jar包: poi-3.0.1-FINAL-20070705.jar; poi-3.0-alpha1-20050704.jar; 二、获取List类型数据 三、利用poi生成excel文件 /** * 生成excel文件 * @param tjxxs 写入excel的List数据 * @param xlsName 文件名称 * @param sheetName 内容标题 * @return int */ @SuppressWarnings("deprecation") public int resultSetToExcel(List tjxxs,String xlsName,String sheetName) throws Exception{ if(tjxxs == null || "".equals(tjxxs)){ return 0; } HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.createSheet(); workbook.setSheetName(0,sheetName,HSSFWorkbook.ENCODIN G_UTF_16); HSSFRow row= sheet.createRow((short)0);; HSSFCell cell; //写入各个字段的名称 // for(int i=1;i<=4;i++){ cell = row.createCell((short)(0)); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("序号"); cell = row.createCell((short)(1)); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue("工作控制号");

JAVA的poi实现模版导出excel(带图片)

下面是本人使用java的poi实现使用模板到处excel,内容包含图片,使用两种不同的方式实现其到处excel。但是使用jxl实现到处excel只能到处png格式。 package com.rxc.servlet; import java.awt.image.BufferedImage; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import javax.imageio.ImageIO; import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFCell; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFClientAnchor; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFPatriarch; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFRow; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFSheet; import https://www.360docs.net/doc/033077338.html,ermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class OutExcelServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

java操作excel(创建excel、生成工作表并添加数据)

package cn.zd; import java.io.File; import jxl.Workbook; import https://www.360docs.net/doc/033077338.html,bel; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; /** * 生成Excel文件 * @author zhangdi * */ public class CreateExcel { public static void main(String args[]) { try { // 创建文件 WritableWorkbook book = Workbook.createWorkbook(new File("C:\\test.xls")); // 生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet = book.createSheet("第一页", 0); // 生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet2 = book.createSheet("第二页", 1); // 在Label对象的构造子中指名单元格位置是第一列第一行(0,0),以及单元格内容为test /** * 参数一:0 第1列--------------------列 * 参数二:0 第1行--------------------行 * 参数三:"test" 内容 */ Label label = new Label(0, 0, "test"); // 将定义好的单元格添加到工作表中 sheet.addCell(label); Label labe2 = new Label(1, 0, "张迪"); sheet.addCell(labe2); //生成一个保存数字的单元格必须使用Number的完整包路径,否则有语法歧义单元格位置是第二列,第一行,值为789.123 jxl.write.Number number = new jxl.write.Number(2, 0, 610);

java 三种excel导出方式

本文由我司收集整编,推荐下载,如有疑问,请与我司联系 java 三种excel 导出方式 2013/06/26 0 基于模板的EXCEL 报表组件ExcelUtils ExcelUtils 是一个在WEB 应用开发中的EXCEL 导出工具,它基于POI 和beanutil 工程。类于velocity,它拥有自己标签。但是ExcelUtils 的标签是写在EXCEL 中的。通过EXCEL 的自定义标签我们可以自由编辑EXCEL 的式。不用编辑你的应用程序代 码。ExcelUtils 会解析你的EXCEL 模板中的标签并向模板中填充数据来生成自已的 报表。 1,EXCELUTILS 所需的JAR 包:excelutils.jar poi-2.5.1.jar commons-logging.jar commons-digester.jar commons-beanutils.jar,加外可能还需加添加osh.jar 包。将上述jar 包加入自己的web 工程的classpath 中。 2,定义自己的excel 模板: 在excel 中添加excelutils 的自定义标签,常用标签如下: #foreach detail in ${list}${https://www.360docs.net/doc/033077338.html,} ${detail.qty} ...#end 迭代输出list 中数据 另外一些标签: ${printDate}${https://www.360docs.net/doc/033077338.html,}#formula SUM(C${detailStartRowNo}:C${detailEndRowNo})#each ${model}#each ${model} on ${keys}#each ${model} ${width1},${width2}... on ${keys}#sum qty on ${list} where name=test#sum qty on ${list} where name like test#sum qty on ${list} where name like ${value}#call service.getStr( str ,${aaa})#call service.getModel( str ,${aaa}).name#formula SUM(C${currentRowNo}:F${currentRowNo}) 3,编写JAVA 代码: List list= new ArrayList(); Model model = new Model(); .list.add(model) ExcelUtils.addValue( list , list);ExcelUtils.addSerivce( service , service);String config =

Java导出excel表格

【Java】导出excel表格 修改浏览权限| 删除1 package jxlTest; 2 3 import java.io.FileOutputStream; 4 import java.io.OutputStream; 5 import java.text.SimpleDateFormat; 6 import java.util.ArrayList; 7 import java.util.Date; 8 import java.util.List; 9 10 import jxl.*; 11 import jxl.format.Alignment; 12 import jxl.format.Border; 13 import jxl.format.BorderLineStyle; 14 import jxl.format.CellFormat; 15 import jxl.write.Boolean; 16 import https://www.360docs.net/doc/033077338.html,bel; 17 import jxl.write.Number; 18 import jxl.write.WritableCellFormat; 19 import jxl.write.WritableFont; 20 import jxl.write.WritableSheet; 21 import jxl.write.WritableWorkbook; 22 23 public class JXLExample { 24 25 /** 26 * 数据库导出至Excel表格 27 */ 28 public static void main(String[] args) { 29 // 准备设置excel工作表的标题 30 String[] title = {"编号","产品名称","产品价格","产品数量","生产日期","产地","是否出口"}; 31 try { 32 // 获得开始时间 33 long start = System.currentTimeMillis(); 34 // 输出的excel的路径 35 String filePath = "e:\\testJXL.xls"; 36 // 创建Excel工作薄 37 WritableWorkbook wwb; 38 // 新建立一个jxl文件,即在e盘下生成testJXL.xls 39 OutputStream os = new FileOutputStream(filePath);

java程序控制excel导入导出数据库信息

1 从Excel文件读取数据表 Java Excel API既可以从本地文件系统的一个文件(.xls),也可以从输入流中读取Excel数据表。读取Excel数据表的第一步是创建Workbook(术语:工作薄),下面的代码片段举例说明了应该如何操作:(完整代码见ExcelReading.java) 一旦创建了Workbook,我们就可以通过它来访问Excel Sheet(术语:工作表)。参考下面的代码片段: 我们既可能通过Sheet的名称来访问它,也可以通过下标来访问它。如果通过下标来访问的话,要注意的一点是下标从0开始,就像数组一样。 一旦得到了Sheet,我们就可以通过它来访问Excel Cell(术语:单元格)。参考下面的代码片段:

如果仅仅是取得Cell的值,我们可以方便地通过getContents()方法,它可以将任何类型的Cell值都作为一个字符串返回。示例代码中Cell(0, 0)是文本型,Cell(1, 0)是数字型,Cell(1,1)是日期型,通过getContents(),三种类型的返回值都是字符型。 如果有需要知道Cell内容的确切类型,API也提供了一系列的方法。参考下面的代码片段:

在得到Cell对象后,通过getType()方法可以获得该单元格的类型,然后与API 提供的基本类型相匹配,强制转换成相应的类型,最后调用相应的取值方法getXXX(),就可以得到确定类型的值。API提供了以下基本类型,与Excel的数据格式相对应,如下图所示: 每种类型的具体意义,请参见Java Excel API Document。 当你完成对Excel电子表格数据的处理后,一定要使用close()方法来关闭先前创建的对象,以释放读取数据表的过程中所占用的内存空间,在读取大量数据时显得尤为重要。参考如下代码片段: Java Excel API提供了许多访问Excel数据表的方法,在这里我只简要地介绍几个常用的方法,其它的方法请参考附录中的Java Excel API Document。 Workbook类提供的方法

相关文档
最新文档