Jxl.jar(导入导出Excel)简单运用
jxl.jar使用方法
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文件。
jxl使用说明文档
jxl.jar概述通过java操作excel表格的工具类库支持Excel 95-2000的所有版本生成Excel 2000标准格式支持字体、数字、日期操作能够修饰单元格属性支持图像和图表应该说以上功能已经能够大致满足我们的需要。
最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。
另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
编辑本段搭建环境将下载后的文件解包,得到JXL.JAR,放入classpath,安装就完成了。
如果包不能正常的加载,可以把你下载好的JXL.JAR包放入D:\JAVA\jre\lib\ext 中(我的是JDK1.6)就OK了。
我相信在配置TOMCAT时也需要把相关的三个包放到这里面。
编辑本段基本操作一、创建文件拟生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:代码(CreateXLS.java)://生成Excel的类import java.io.*;import jxl.*;import jxl.write.*;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*/jxl.write.Number number = new jxl.write.Number(1,0,789.123);sheet.addCell(number);//写入数据并关闭文件book.write();book.close();}catch(Exception e){System.out.println(e);}}}编译执行后,会在当前位置产生一个Excel文件。
jxl操作excel的简析和应用
在做一个excel项目的时候看到的,自己认为很有用,就收集了下以下是原文地址:第一部分(介绍)/fei/?post=81 和第二部分(应用)/fei/post-82.html ∙∙最近,完成了一个网上报表系统,刚巧用到了一个JAVA操作excel 表格的API.闲来无事,就将其大概的总结了一下.现阶段JAVA操作Excel 的JAR主要有apache 的POI及jxl.因为现在的eclipse操作excel用的插件为jxl,所以在项目中就使用了jxl.想想两者都差不了太多.此简单系列为两个部分,一是API系列,另一部分则是应用系列.一、API系列Jxl的API主要有三个包,jxl,jxl.format,jxl.write.如果单独的分析API,可能对于更明确的了解此API没有太多的帮助,我们还是从Excel文件的层次来剥离此API吧.一个excel文件由一个工作簿组成,一个工作簿又由n个工作表组成.每个工作表又由多个单元格组成.对应于Jxl中的结构为单元格(此处指文本单元格,图像及链接和单元格做为一个层次)分为好多种,所以在API的设计中将Cell作为一个接口而存在.对应的jxl中的结构为:而有的时候,我们可能将几个单元格作为一个整体来处理,在API中对应的则是:jxl.Range虽然数据是电子表格的核心,但是同时其也需要一些辅助类比如文件格式设置,工作表设置与显示效果.单元格设置与显示效果等.按照其层次,则依次有以下接口或类.最后,关于Jxl.format包.此包主要是一些与具体样式有关的接口和枚举.不进行具体描述.第一部分完.(二)应用在进行实践前,我们需要对excel有一个大致的了解,excel文件由一个工作簿(Workbook)组成,工作簿由工作表(sheet)组成,每个工作表又由很多单元格(cell)组成.工作簿有自己的特征,同样工作表,单元格也一样.从大局上了解了excel文件,对于我们更好的使用jxl是有一定的帮助的.具体请查看(一)API在jxl中其大概的层次是这样的Jxl读excel:得到工作簿的方法主要有四个:getWorkbook(File file)getWorkbook(File file,WorkSettings ws)getWorkbook(InputStream is)getWorkbook(InputStream is,WorkSettings ws)参数有两个:第一个参数是必须的:文件或输入流,第二个参数:工作簿ws是作为读出来的excel的一些约定,如地区,编码等. 如果文件错误或格式错误,将会抛出BiffException或IOException.代码段:Workbook wb=null;try{wb = Workbook.getWorkbook(excelFile);wb.close();}catch(BiffException ex){//转换错误}catch(IOException ex){//IO错误}以上如果一切正常的话,将得到此excel文件的工作簿.接下来我们就可以通过此文件簿得到其他的东西了.以下是得到工作表有关的方法int getNumberOfSheets()//工作表个数Sheet getSheet(String name);//得到此对应名称的工作表Sheet getSheet(int index);//得到此序列号的工作表Sheet[] getSheets();//得到工作表数组String[] getSheetNames();//得到工作表名称数组示例代码如下:Sheet sheet;if(wb.getNumberOfSheets()>0){sheet = wb.getSheet(0);}以下的方法除非特别目的,否则用到的地方不多.Range[] finaName(String name);//得到此名称的表格区Cell findCellByName(String name);//得到此名称的CellCell getCell(String loc)String[] getRangeNames();与文件是否可写有关的boolean isProected();得到了工作簿文件的某个工作表时.对于工作表而言其主要的内容就是单元格了.//根据内容查看Cell findCell(Pattern pattern,int firstCol,int firstRow,int lastCol,int lastRow,Boolean reverse)Cell findCell(String content)Cell findCell(String content,omt forstCol,int firstRow,int lastCol,int lastRow,Boolean reverse)LabelCell findLabelCell(String contents)//根据位置得到Cell getCell(int col,int row)Cell getCell(String loc)//loc的格式为A3/B1/C3其相同于getCell(CellReferenceHelper.getColumn(loc0,CellReferenceHelper.getRow(loc)),所以相对而言其性能没有Cell getCell(int col,int row)快//单元格数组Cell[] getRows(int row)//当前行单元格数组Cell[] getCols(int col)//当前列单元格数组//特殊单元格数组//超链接表格Hyperlink[] getHyperlinks();//超链接数组//区域表格Range[] getMergedCells();//区域单元格数组//图像表格Int getNumberOfImages()//拥有图片数Image getDrawing(int index)//对应序号的图片//工作表或多个表格一些自我属性String getName()//工作表名int getRows()//行数int getCols()//列数SheetSettings getSettings()//工作表设置CellView getColumnView(int col)//此列的表格视图CellView getRowV iew(int row)//此行的表格视图以下是与单元格有关的一些操作:CellFeatures getCellFeatures()//主要是与表格内容有关的一些性质如验证等CellFormat getCellFormat()//主要是表格外在表现格式有关的一些性质.int getColumn()//所在列int getRow()//所在行String getContents();//内容boolean isHidden();//可见否CellType getType();//表格类型如果不确定表格如果转换则可以使用此方法来确定表格类型.以下我们讲述如何写excel文件.写文件分为两种情况一种是新建一种则是更新.新建excel文件新建excel文件很简单://文件WritableWorkbook createWorkbook(File file) //无形式的创建一个excel文件WritableWorkbook createWorkbook(File file Workbook in)//以in一样的格式创建一个excel文件,其初始内容与in文件相同(更新文件可以用到此方法)WriteableWorkbook createWorkbook(File file,WorkSetting ws)//以ws的设定创建文件WritableWorkbook createWorkbook(File file,Workbook in,WorkSetting ws)//以ws的设定创建一个与in文件相同的文件//流WritableWorkbook createWorkbook(OutputStream os)WritableWorkbook createWorkbook(OutputStream os Workbook in) WriteableWorkbook createWorkbook(OutputStream os,WorkSetting ws) WritableWorkbook createWorkbook(OutputStream os,Workbook in,WorkSetting ws)代码示例:WritableWorkbook wrb;WriteableWorkbook wrbin;try{wrb = Workbook.createWorkbook(targetfile);wrbin = Workbook.createWorkbook(targetfile,wb);}catch (IOexception e){//IO错误}当创建好工作簿时,我们就需要新建工作表了WritableSheet createSheet(String name,int index);WritableSheet wrs = wrb.createSheet(“demo”,0);//创建一个名为demo的工作表,其为工作簿的第一个工作表.接下来我们就可以进行其他操作了添加文本类单元格:Label label = new Label(0,0,””);wrb.addCell(label);//添加数据单元格Number number = new Number(0,3,1234);wrb.addCell(number);//添加时间单元格DateTime dt = new DateTime(0,4,new Date());Wrb.addCell(dt);//添加公式单元格Fornual formual = new F ormual(0,11,”Sum(A1:A9)”);wrb.addCell(formual);添加超链接类单元格WirtableHyperlink wrlink =new WritableHyperlink(0,1,0,1,new URL(“/fei”),”emlog”); wrb.addHyperlink(wrlink);//添加图像WritableImage wrimage=new WritableImage(1,5,10,10,new File(imageFilepath)); wrb.addImage(wrimage);//注意,API中注明只支持png文件,然而我用其他格式的图片,通过将其后缘改为png也能放到excel文件中.果然,在查看其具体源代码时,发现作者只是检测了文件的后缀名,如果不对给出警告,并没有从图像文件的具体格式进行检测.当然,表格中的数据算是表格的核心部分,但是同时API也提供了大量的其他方法来丰富表格的显示.在此,大家具体在使用过程中进行运用就行.//最后,写完表格后,不要忘记进行写操作,也就是常说的保存wrb.write()wrb.close();保存完后关闭相应资源是一个合格的程序员应该做的.接下来,我们就来讲述写文件的另一方面:更新文件.有时候,并不仅仅只是需要新写文件,可能需要对已有文件进行更新.这时候我们可以这么来实现.Workbook wb= Workbook.getWorkbook(modifyFile);WritableWorkbook wrb = Workbook.createWorkbook(modifyFile, wb);以上就实现了得到一个已存在的文件的可修改副本.//得到第一个工作表WritableSheet wrs = wrb.getSheet(0);//得到A0单元格Cell cell = Wrs.getCell(0,0);//对单元格格式进行判断If (cell.getType()==BEL){Label label=(Label) cell;label.setString(“u r modified.”);}//modify end//save excelwrb.write();wb.close();wrb.close();以上就简单的完成了一次excel文件的修改.API中还提供了复制工作表,复制单元格等操作,大家可以通过查询API来了解其具体的用法.我们可以从作者提供的包中得到很多关于如何使用API的示例.此处不献丑了.jxl官文网站:/jexcelapi/index.html。
jxl-jsp页面表格导出excel
Springmvc框架下使用jxl方法把表格导出成excel简单方法步骤:1、导入jxl包D:\dev\repository\net\sourceforge\jexcelapi\jxl\2.6.12\jxl-2.6.12.jar添加依赖:<dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency>2、新建类ExcelOutServiceimport java.io.File;import java.io.IOException;import java.io.OutputStream;import java.text.SimpleDateFormat;import java.util.List;import bel;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableImage;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.mvr.storeManagement.model.StockOut;import jxl.Workbook;import jxl.format.Alignment;import jxl.format.VerticalAlignment;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class ExcelOutService {public void downloadExcel(HttpServletResponse response,List<StockOut>list,HttpServletRequest request) {SimpleDateFormatsdf =new SimpleDateFormat("yyyy/MM/dd");SimpleDateFormatsd =new SimpleDateFormat("yyyy-MM-dd");WritableWorkbook book = null;response.reset();response.setCharacterEncoding("UTF-8");OutputStreamos = null;try {response.setContentType("application/DOWLOAD"); response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment; filename=out.xls");// 设置生成的文件名字os = response.getOutputStream();book = Workbook.createWorkbook(os);} catch (Exception e) {e.printStackTrace();}try {WritableSheet sheet = book.createSheet("出库单", 0);//wcff代表设置字体加粗字体大小局中WritableFontwfs = newWritableFont(WritableFont.TIMES,15,WritableFont.BOLD,false);//设置字体WritableCellFormatwcff=new WritableCellFormat(wfs);wcff.setAlignment(Alignment.CENTRE);//居中对齐//wcff1代表设置字体大小加粗剧中不加边框WritableFont wfs2 = newWritableFont(WritableFont.TIMES,10,WritableFont.BOLD,false);//设置字体WritableCellFormat wcff1=new WritableCellFormat(wfs2);wcff1.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直剧中//wcff3代表字体加粗加边框WritableFont wfs4 = newWritableFont(WritableFont.TIMES,10,WritableFont.BOLD,false);//设置字体WritableCellFormat wcff3=new WritableCellFormat(wfs4);wcff3.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.TH IN);//设置边框//wcff2代表设置字体不加粗剧中加边框WritableFont wfs3 = newWritableFont(WritableFont.TIMES,10,WritableFont.NO_BOLD,false); //设置字体WritableCellFormat wcff2=new WritableCellFormat(wfs3);wcff2.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直剧中wcff2.setBorder(jxl.format.Border.ALL,jxl.format.BorderLineStyle.TH IN);//设置边框Stringpicpath=request.getSession().getServletContext().getRealPath("dark \\image")+"\\mvr.png";File file = new File(picpath);// File file = new File("D:\\test\\mvr.png");WritableImage image = new WritableImage(0, 0, 2, 2, file); sheet.addImage(image);sheet.setColumnView(1, 20);//设置第二列sheet.setColumnView(3, 20);sheet.setRowView(0, 600);sheet.setRowView(1, 400);sheet.mergeCells(1, 0, 6, 0);// 合并第三列列第一行到第六列第一行的所有单元格sheet.mergeCells(1, 1, 6, 1);//合并第3列第二行到第六列第二行sheet.mergeCells(1, 2, 3, 2);//合并第二列第三行到第4列第三行sheet.mergeCells(1, 3, 2, 3);//合并第二列第四行到第三列第四行sheet.mergeCells(4, 3, 6, 3);sheet.mergeCells(0, 0, 1, 1);Label lable= new Label(1,0,"天津科技有限公司",wcff);Label lable1= new Label(1,1,"领用出库单",wcff);Label lable2= new Label(0,2,"单号",wcff1);Label lable7= newLabel(1,2,"MVRCGRK-"+sd.format(list.get(0).getStock_out_time())+" -00",wcff1);Label lable3= new Label(4,2,"库房一",wcff1);Label lable4= new Label(5,2,"制单日期",wcff1);Label lable10= newLabel(6,2,sdf.format(list.get(0).getStock_out_time()),wcff1); Label lable5= new Label(0,3,"出库类型",wcff1);Label lable8= new Label(1,3,"生产出库",wcff1);Label lable6= new Label(3,3,"项目单号",wcff1);// Label lable9= new Label(4,3,"北京兴业",wcff1);Label lable13= new Label(0,4,"设备代码:",wcff3);sheet.mergeCells(0, 4, 2,4);Label lable14= new Label(3,4,"产品编号:",wcff3);sheet.mergeCells(3, 4, 6,4);Label lable15= new Label(0,5,"组装人:",wcff3);sheet.mergeCells(0, 5, 2,5);Label lable16= new Label(3,5,"质检人:",wcff3);sheet.mergeCells(3, 5, 6,5);sheet.addCell(lable);sheet.addCell(lable1);sheet.addCell(lable2);sheet.addCell(lable3);sheet.addCell(lable4);sheet.addCell(lable5);sheet.addCell(lable6);sheet.addCell(lable7);sheet.addCell(lable8);// sheet.addCell(lable9);sheet.addCell(lable10);sheet.addCell(new bel(0, 6, "序号",wcff2));//第一列sheet.addCell(new bel(1, 6, "物料编码",wcff2)); sheet.addCell(new bel(2,6, "货品名称",wcff2));sheet.addCell(new bel(3, 6, "规格型号",wcff2));sheet.addCell(new bel(4, 6, "单位",wcff2));sheet.addCell(new bel(5, 6, "数量",wcff2));sheet.addCell(new bel(6, 6, "备注",wcff2));for (inti = 7; i<list.size() + 7; i++) {sheet.addCell(new bel(0, i, String.valueOf(i-6),wcff2));// 序号从1开始sheet.addCell(new bel(1, i, list.get(i - 7).getMaterial_code(),wcff2)); sheet.addCell(new bel(2, i, list.get(i - 7).getProduct_nm(),wcff2)); sheet.addCell(new bel(3, i, list.get(i - 7).getNorms(),wcff2)); sheet.addCell(new bel(4, i, list.get(i - 7).getUnit(),wcff2));sheet.addCell(new bel(5, i, list.get(i -7).getStock_out_count().toString(),wcff2));sheet.addCell(new bel(6, i, list.get(i - 7).getDetails(),wcff2));}Label lable12= new Label(3,list.size()+7,"库管员:");Label lable17= new Label(5,list.size()+7,"审批人:");sheet.addCell(lable17);sheet.addCell(lable11);sheet.addCell(lable12);sheet.addCell(lable13);sheet.addCell(lable14);sheet.addCell(lable15);sheet.addCell(lable16);book.write();book.close();} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {os.flush();os.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}3、控制层request.getSession().setAttribute("soList", soList);stockOutDao.insertStockOut(soList);List<StockOut>rtList = (List<StockOut>)request.getSession().getAttribute("soList");ExcelOutService service=new ExcelOutService();service.downloadExcel(response, rtList,request);。
通过代码实例跟我学如何应用Java操作Excel电子表格——应用JXL系统库操作Excel电子表格的应用实例
1.1通过代码实例跟我学如何应用Java操作Excel电子表格——应用JXL 系统库操作Excel电子表格的应用实例1.1.1JXL系统库相关的应用技术jxl是一个韩国人写的java操作excel的工具, 在开源世界中,有两套比较有影响的API 可供使用,一个是POI,一个是jExcelAPI。
其中功能相对POI比较弱一点。
但jExcelAPI 对中文支持非常好,API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。
另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
在项目中使用jxl需要加载jxl的系统库jxl.jar文件,并将它放入项目的classpath 路径中。
1、新建一个Java应用程序项目2、在项目中导入jxl的系统库jar包文件3、创建CreateExcel程序类文件在本项目jxldemo中的test包中创建一个生成Excel的类,类名为CreateExcel。
该类拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为“第一页”。
4、CreateExcelDemo程序代码package com.px1987.jexcelapi;import java.io.*;import jxl.Workbook;import jxl.write.*;public class CreateExcelDemo {public CreateExcelDemo() throws IOException,WriteException {//在项目所在的根目录下创建一个名称为excelData.xls的Excel 文件WritableWorkbook oneExcelBook = Workbook.createWorkbook(new File("excelData.xls"));//生成名为“2009年销售指标”的工作表,参数0表示这是第一页WritableSheet oneSheetInBook = oneExcelBook.createSheet( "2009年销售指标", 0); //通过Label对象的构造方法中指明单元格位置是第一列第一行以及单元格的数据内容为“销售量”Label oneCell = new Label(0, 0, "销售量" );oneSheetInBook.addCell(oneCell); //将定义好的单元格添加到工作表中//再生成一个单元格,位置为第二列第一行以及单元格的数据内容为“我们所添加的内容”Label twoCell = new Label(1, 0, "我们所添加的内容" );oneSheetInBook.addCell(twoCell); //将定义好的单元格添加到工作表中oneExcelBook.write(); //将所创建出的Excel文件保存到磁盘文件中oneExcelBook.close(); //关闭文件输出流以真正地完成数据输出操作}public static void main(String[] args) throws IOException,WriteException{new CreateExcelDemo();}}5、读取Excel文件中数据的程序代码示例package com.px1987.jexcelapi;import java.io.*;import jxl.*;import jxl.read.biff.BiffException;public class ReadExcelDemo {public ReadExcelDemo() throws BiffException,IOException{Workbook oneExcelBook = Workbook.getWorkbook(new File("excelData.xls"));Sheet firstSheet = oneExcelBook.getSheet(0); //获得第一个工作表对象Cell oneCell1 = firstSheet.getCell(0 , 0); //获得工作表中的第一列第一行的单元格String cellContent = oneCell1.getContents(); //获得该单元格中的内容System.out.println(cellContent);oneExcelBook.close();}public static void main(String[] args) throws BiffException,IOException{new ReadExcelDemo();}}6、修改Excel文件中数据的程序代码示例利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。
导入导出excel例子
import jxl.write.biff.RowsExceededException;
public class Excel {
/**
* 导出数据为XLS格式
* @param fileName 文件的名称,可以设为绝对路径,也可以设为相对路径
String fileName = "test.xls";
String fileNameNew = "testNew.xls";
Person p0 = new Person("姓名","字","武力","智力","政治","魅力","英雄事迹");
continue;
Person p = new Person();
p.setName(sheet.getCell(1, i).getContents());
ws.addCell(new Label(3, i + 1, p[i].getPower(), wcf));
ws.addCell(new Label(4, i + 1, p[i].getWit(), wcf));
ws.addCell(new Label(5, i + 1, p[i].getPolity()at();
}
wwb.write();
wwb.close();
} catch (IOException e){
* @return Vector对象,里面包含从Excel文件里获取到的数据
Java数据导出功能之导出Excel文件实例
Java数据导出功能之导出Excel⽂件实例在编程中经常需要使⽤到表格(报表)的处理主要以Excel表格为主。
下⾯给出⽤java写⼊数据到excel表格⽅法: 1.添加jar⽂件 2.jxl对Excel表格的认识 如下图是准备要建⽴的Excel⽂件t.xls。
坐标(列,⾏):⾓⾊(0,0),助教(0,3),功能描述(3,0),UC22(1,4)。
3.java代码根据程序中的数据⽣成上述图⽚所⽰的t.xls⽂件import java.io.File;import jxl.*;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class Writer_excel{public static void main(String[] args) {//标题⾏String title[]={"⾓⾊","编号","功能名称","功能描述"};//内容String context[][]={{"UC11","设置课程","创建课程"},{"UC12","设置学⽣名单","给出与课程关联的学⽣名单"},{"UC21","查看学⽣名单",""},{"UC22","查看⼩组信息","显⽰助教所负责的⼩组列表信息"}};//操作执⾏try {//t.xls为要新建的⽂件名WritableWorkbook book= Workbook.createWorkbook(new File("t.xls"));//⽣成名为“第⼀页”的⼯作表,参数0表⽰这是第⼀页WritableSheet sheet=book.createSheet("第⼀页",0);//写⼊内容for(int i=0;i<4;i++) //titlesheet.addCell(new Label(i,0,title[i]));for(int i=0;i<4;i++) //context{for(int j=0;j<3;j++){sheet.addCell(new Label(j+1,i+1,context[i][j]));}}sheet.addCell(new Label(0,1,"教师"));sheet.addCell(new Label(0,3,"助教"));/*合并单元格.合并既可以是横向的,也可以是纵向的*WritableSheet.mergeCells(int m,int n,int p,int q); 表⽰由(m,n)到(p,q)的单元格组成的矩形区域合并* */sheet.mergeCells(0,1,0,2);sheet.mergeCells(0,3,0,4);//写⼊数据book.write();//关闭⽂件book.close();}catch(Exception e) { }}}。
Java数据导入(读)Excel文件解析
Java数据导⼊(读)Excel⽂件解析 在编程中经常需要使⽤到表格(报表)的处理主要以Excel表格为主。
下⾯给出⽤java读取excel表格⽅法: 1.添加jar⽂件 java导⼊导出Excel⽂件要引⼊jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运⾏在Linux下,它同样能够正确的处理Excel⽂件。
下载地址: 2.jxl对Excel表格的认识 (1)每个单元格的位置认为是由⼀个⼆维坐标(i,j)给定,其中i表⽰列,j表⽰⾏,并且从上到下递增,从左到右递增。
(2)对于合并单元格的以最左,最上的单元格的坐标为准。
如下图中t.xls,⼀班名单(0,0),陈茵(1,2),陈开先(1,6)。
3.java代码对t.xls的读取import java.io.File;import jxl.*;public class Read_excel{public static void main(String[] args) {int i;Sheet sheet;Workbook book;Cell cell1,cell2,cell3;try {//t.xls为要读取的excel⽂件名book= Workbook.getWorkbook(new File("t.xls"));//获得第⼀个⼯作表对象(ecxel中sheet的编号从0开始,0,1,2,3,....)sheet=book.getSheet(0);//获取左上⾓的单元格cell1=sheet.getCell(0,0);System.out.println("标题:"+cell1.getContents());i=1;while(true){//获取每⼀⾏的单元格cell1=sheet.getCell(0,i);//(列,⾏)cell2=sheet.getCell(1,i);cell3=sheet.getCell(2,i);if("".equals(cell1.getContents())==true) //如果读取的数据为空break;System.out.println(cell1.getContents()+"\t"+cell2.getContents()+"\t"+cell3.getContents());i++;}book.close();}catch(Exception e) { }}} 因此,只要我们事先知道要读取的Excel⽂件内数据的排列⽅式就可以⽤Java代码轻松读取啦。
转:jxl导出excel(合并单元格)
转 : jxl导 出 excel( 合 并 单 元 格 )
Demo
代码如下:
1 import java.io.*; 2 import jxl.*; 3 import jxl.format.UnderlineStyle; 4 import jxl.write.*; 5 public class CreateXLS { 6 public static void main(String args[]) { 7 try { 8 //打开文件 9 WritableWorkbook book= Workbook.createWorkbook(new File("测试.xls")); 10 //生成名为“第一页”的工作表,参数0表示这是第一页 11 WritableSheet sheetOne=book.createSheet("第一页",0); 12 13 /** 14 * 定义单元格样式 15 */ 16 WritableFont wf_title = new WritableFont(WritableFont.ARIAL, 11, 17 WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, 18 jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色 19 WritableFont wf_head = new WritableFont(WritableFont.ARIAL, 11, 20 WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, 21 jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色 22 WritableFont wf_table = new WritableFont(WritableFont.ARIAL, 11, 23 WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, 24 jxl.format.Colour.BLACK); // 定义格式 字体 下划线 斜体 粗体 颜色 25 26 WritableCellFormat wcf_title = new WritableCellFormat(wf_title); // 单元格定义 27 wcf_title.setBackground(jxl.format.Colour.WHITE); // 设置单元格的背景颜色 28 wcf_title.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式 29 wcf_title.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); //设置边框 30 31 WritableCellFormat wcf_title1 = new WritableCellFormat(wf_title); // 单元格定义 32 wcf_title1.setBackground(jxl.format.Colour.LIGHT_GREEN); // 设置单元格的背景颜色 33 wcf_title1.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式 34 wcf_title1.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); //设置边框 35 36 WritableCellFormat wcf_title2 = new WritableCellFormat(wf_title); // 单元格定义 37 wcf_title2.setBackground(jxl.format.Colour.YELLOW2); // 设置单元格的背景颜色 38 wcf_title2.setAlignment(jxl.format.Alignment.CENTRE); // 设置对齐方式 39 wcf_title2.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); //设置边框 40 41 WritableCellFormat wcf_head1 = new WritableCellFormat(wf_head); 42 wcf_head1.setBackground(jxl.format.Colour.LIGHT_GREEN); 43 wcf_head1.setAlignment(jxl.format.Alignment.CENTRE); 44 wcf_head1.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); 45 46 WritableCellFormat wcf_head2 = new WritableCellFormat(wf_head); 47 wcf_head2.setBackground(jxl.format.Colour.YELLOW2); 48 wcf_head2.setAlignment(jxl.format.Alignment.CENTRE); 49 wcf_head2.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); 50 51 52 WritableCellFormat wcf_table1 = new WritableCellFormat(wf_table); 53 wcf_table1.setBackground(jxl.format.Colour.LIGHT_GREEN); 54 wcf_table1.setAlignment(jxl.format.Alignment.CENTRE); 55 wcf_table1.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); 56 57 WritableCellFormat wcf_table2 = new WritableCellFormat(wf_table); 58 wcf_table2.setBackground(jxl.format.Colour.YELLOW2); 59 wcf_table2.setAlignment(jxl.format.Alignment.CENTRE); 60 wcf_table2.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN,jxl.format.Colour.BLACK); 61
java生成Excel两种方式及导入
本文由我司收集整编,推荐下载,如有疑问,请与我司联系java 生成Excel 两种方式及导入方法一,利用第三方jar 包:jxl.jar无论方法一方法二最后最好用转换成流传给前端。
1 public void createExcel(){2 try{3 //打开文件4 WritableWorkbook workbook= Workbook.createWorkbook(new File(“test.xls”)); 5 //生成名为“第一页”的工作表,参数0 表示这是第一页 6 WritableSheet sheet = workbook.createSheet(“第一页”,0);7 //在Label 对象的构造子中指名单元格位置是第一列第一行(0,0) 8 //以及单元格内容为test 9 Label label = new Label(0,0,”test”); 10 //将定义好的单元格添加到工作表中11 sheet.addCell(label); 12 /*生成一个保存数字的单元格13 * 必须使用Number的完整包路径,否则有语法歧义14 * 单元格位置是第二列,第一行,值为789.123*/ 15 jxl.write.Number number = new jxl.write.Number(1,0,756); 16 17 sheet.addCell(number); 18 19 sheet.insertColumn(1); 20 21 workbook.copySheet(0, “第二页”,1); 22 23 WritableSheet sheet2 = workbook.getSheet(1); 24 Range range = sheet2.mergeCells(0, 0, 0, 8); 25 sheet2.unmergeCells(range); 26 27sheet2.addImage(newWritableImage(5, 5, 10, 20, new File(“F:\\09.png”)));28 29 30 CellView cv = new CellView(); 31 32 WritableCellFormat cf = new WritableCellFormat(); 33 cf.setBackground(Colour.BLUE); 34 35 cv.setFormat(cf); 36 cv.setSize(6000); 37 cv.setDimension(10); 38 39 sheet2.setColumnView(2, cv); 40 41 workbook.write(); 42 workbook.close(); 43 44 }catch(Exception e){} 45 } 同时,读取Excel 中的内容为:1 public void displayExcel(){2 try {3 Workbook wb = Workbook.getWorkbook(new File(“test.xls”));45 Sheet s = wb.getSheet(0);6 System.out.println(s.getCell(0, 0).getContents());7 } catch (BiffException e) {8 // TODO Auto-generated catch block9 e.printStackTrace(); 10 } catch (IOException e) { 11 // TODO Auto-generated catch block 12 e.printStackTrace(); 13 } 14 15 } 方法二,利用jar 包:poi-3.2-FINAL-20081019.jar1 public void exportExcel(){23 HSSFWorkbook wb = new HSSFWorkbook();//创。
java与Excel(.xls文件)---使用JXL创建,增添表格文件
java与Excel(.xls⽂件)---使⽤JXL创建,增添表格⽂件由于⼀些原因要搞⼀下excel⽂件,个⼈感觉poi太难,所以⽤了JXL(感觉⽐较简单)。
1.添加外部归档 jxl.jar2./** ⽣成的xls⽂件第⼀次需要⼿动选择EXCEL打开** */import java.io.DataOutputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import java.text.SimpleDateFormat;import java.util.Date;import jxl.Workbook;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class CreateTest {public static void main(String[] args) throws IOException,RowsExceededException, WriteException {String[] title = {"时间", "座位", "菜名", "价格", "数量","总价" };// 获得时间SimpleDateFormat SDF=new SimpleDateFormat("yyyy-MM-dd "); //使⽣成的每天⽇期成为⽂件名(年⽉⽇)String NEWDATA=SDF.format(new Date())+".xml";// 输出的excel路径String path = "d:\\account\\"+NEWDATA;WritableWorkbook wwb;// 建⽴⼀个JXL⽂件,即在d盘⽣成⼀个test.xlsOutputStream os = new FileOutputStream(path);wwb = Workbook.createWorkbook(os);WritableSheet sheet = wwb.createSheet("产品清单", 0);Label label;for (int i = 0; i < title.length; i++) {label = new Label(i, 0, title[i]);sheet.addCell(label);}//填充时间座位菜名价格数量总价/*定义显⽰⽇期的公共模式*如 YYYY-MM-DD HH:MM*/SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm");String newData=sdf.format(new Date());label=new Label(0,1,newData);sheet.addCell(label);//座位 Stringlabel=new Label(1,1, "1号桌");sheet.addCell(label);//菜名 Stringlabel=new Label(2,1, "咖啡");sheet.addCell(label);//价格 numberjxl.write.Number number_1=new jxl.write.Number(3,1,20);sheet.addCell(number_1);//数量 numberjxl.write.Number number_2=new jxl.write.Number(4,1,2);sheet.addCell(number_2);//总价 numberjxl.write.Number number=new jxl.write.Number(5,1,40);sheet.addCell(number);wwb.write();wwb.close();}}感觉⼩⽩都可以看懂,就不详细讲了,欢迎前辈指点⽂章中可能存在的错误,O(∩_∩)O谢谢!。
Java中使用Jxl导出Excel
很多人都说是客户端造成的,没有办法控制,而且后台会记录这个异常,日志也会疯狂爆满,时间长了,肯定会DOWN掉的.
本人觉得大多数可能是第二条问题的原因引起的,即大多数浏览器阻止了窗口的弹出,相当于客户关掉了浏览器,可等效于浏览器端按了Stop ,而这时服务器端还在给客户端发送数据,所以产生了上异常,经过本人的测试,发现只需将网站地址(或本机地址)加入"受信任的站点"即可解决问题,因为这样设置了以后,浏览器就不会阻止窗口的弹出了,这样浏览器就会等到服务器端发送完数据后再进行下面的动作.因而异常就不会发生了.
大概设置方式如下:"工具->internet(选项..)->安全->受信任的站点->站点",将地址加入即可.
} catch (Exceptio来自 e) { e.printStackTrace();
}
}
1.今天做Web Excel导出,报ClientAbortException: socke不用管他,反正不影响导出,有人建议修改TOMCAT源代码,其实这个问题的确不好想。很巧合的是我另一个项目用JMESA做的导出却不会出现这种异常,感觉有的奇怪,源代码源样COPY过来,一样报错。一不小心发现,JMESA是用<a href="javascript:export">提交导出请求,而我用的是<img onclick="export">方法,难道有不同?try.结果果然如此,全部改成<a href="javascript:export">方式,问题解决。
public void ExcelDemo(String filePath, List<AdminBeans> ve) {
java读取excel例子(带jxl.jar包)
java读取excel例子(带jxl.jar包)java本来读取excel的形式很多,很早就熟悉了,但是每次用的时候都要到网上查。
很不方便故此做记(包见附件)/***后续考虑问题,比如Excel里面的图片以及其他数据类型的读取**/Workbook rwb;try{InputStream is=new FileInputStream("E:/test.xls");//声名一个工作薄rwb= Workbook.getWorkbook(is);//获得工作薄的个数rwb.getNumberOfSheets();//在Excel文档中,第一张工作表的缺省索引是0Sheet st = rwb.getSheet("Table1");//通用的获取cell值的方式,getCell(int column, int row) 行和列int rows=st.getRows();int cols=st.getColumns();System.out.println("当前工作表的名字:"+st.getName());System.out.println("总行数:"+rows);System.out.println("总列数:"+cols);for(int i=1;i<rows;i++){Cell c1=st.getCell(0,i);Cell c2=st.getCell(1,i);Cell c3=st.getCell(2,i);println "卡号:${c1.getContents()}、密码:${c2.getContents()}、日期:${c3.getContents()}"}}catch(Exception e){e.printStackTrace();System.out.println("出错了");}finally{rwb.close();}。
jxl导出数据到excel的实例讲解
jxl导出数据到excel的实例讲解优点:Jxl对中⽂⽀持⾮常好,操作简单,⽅法看名知意。
Jxl是纯javaAPI,在跨平台上表现的⾮常完美,代码可以再windows或者Linux上运⾏⽽⽆需重新编写⽀持Excel 95-2000的所有版本(⽹上说⽬前可以⽀持Excel2007了,还没有尝试过)⽣成Excel 2000标准格式⽀持字体、数字、⽇期操作能够修饰单元格属性⽀持图像和图表,但是这套API对图形和图表的⽀持很有限,⽽且仅仅识别PNG格式。
缺点:效率低,图⽚⽀持不完善,对格式的⽀持不如POI强⼤案例:String times = (new SimpleDateFormat("yyyyMMddHHmmss")).format(new Date());String fname = "系统⽇志" + times; // ⽂件名List<Logs> list=logsService.selectForList(hql.toString());String path = request.getSession().getServletContext().getRealPath("/")+ "xls/"+ (new SimpleDateFormat("yyyyMMdd")).format(new Date());File file = new File(path);// 如果⽂件夹不存在则创建if (!file.exists() && !file.isDirectory()) {file.mkdir();}response.setContentType("application/vnd.ms-excel;charset=utf-8");// // 指定⽂件的保存类型。
java实现Excel的导入、导出
java实现Excel的导⼊、导出⼀、Excel的导⼊导⼊可采⽤两种⽅式,⼀种是JXL,另⼀种是POI,但前者不能读取⾼版本的Excel(07以上),后者更具兼容性。
由于对两种⽅式都进⾏了尝试,就都贴出来分享(若有错误,请给予指正)⽅式⼀、JXL导⼊所需jar包 JXL.jarpublicstaticList<PutStorageInfo> readExcelByJXL(String filePath){List<PutStorageInfo> infoList =newArrayList<PutStorageInfo>();Map<String,List<String>> map =newHashMap<String,List<String>>();infoList.clear();try{InputStream is =newFileInputStream(filePath);Workbook workbook =Workbook.getWorkbook(is);//获取第1张表Sheet sheet = workbook.getSheet(0);//获取总的列数int columns = sheet.getColumns();//获取总的⾏数int rows = sheet.getRows();//先列后⾏(j,i)for(int i =1; i < rows; i++){List<String> contentList =newArrayList<String>();contentList.clear();for(int j =1; j < columns; j++){contentList.add(sheet.getCell(j,i).getContents());}map.put("StorageInfo"+i, contentList);}//遍历map集合,封装成beanfor(Map.Entry<String,List<String>> entry : map.entrySet()){List<String> list = entry.getValue();PutStorageInfo storageInfo =newPutStorageInfo();storageInfo.setProductcode(list.get(0));storageInfo.setProductsort(list.get(1));storageInfo.setProductbrand(list.get(2));storageInfo.setProductname(list.get(3));storageInfo.setProductquantity(list.get(4));storageInfo.setProductcontent(list.get(5));storageInfo.setProductnetweight(list.get(6));storageInfo.setProductcountry(list.get(7));storageInfo.setProductpdate(list.get(8));storageInfo.setProductprice(list.get(9));storageInfo.setProductmark(list.get(10));infoList.add(storageInfo);}is.close();}catch(Exception e){e.printStackTrace();}return infoList;}⽅式⼆、POI导⼊所需jar包poi-3.6-20091214.jarpoi-ooxml-3.6-20091214.jarpoi-ooxml-schemas-3.6-20091214.jarxmlbeans-2.3.0.jardom4j-1.6.1.jarjdom-2.0.6.jarpublicstaticList<PutStorageInfo> readExcelByPOI(String filePath){List<PutStorageInfo> infoList =newArrayList<PutStorageInfo>();Map<String,List<String>> map =newHashMap<String,List<String>>();infoList.clear();try{InputStream is =newFileInputStream(filePath);int index = stIndexOf(".");String postfix = filePath.substring(index+1);Workbook workbook =null;if("xls".equals(postfix)){workbook =newHSSFWorkbook(is);}elseif("xlsx".equals(postfix)){workbook =newXSSFWorkbook(is);}//获取第1张表Sheet sheet = workbook.getSheetAt(0);//总的⾏数int rows = sheet.getLastRowNum();//总的列数--->最后⼀列为null则有问题,读取不完整,将表头的数⽬作为总的列数,没有的则补为null int columns = sheet.getRow(0).getLastCellNum();//先列后⾏for(int i =1; i <= rows; i++){ Row row = sheet.getRow(i);if(null!= row && row.getFirstCellNum()==-1){//这⼀⾏是空⾏,不读取continue;}//这⼀⾏的总列数// columns = row.getLastCellNum();List<String> contentList =newArrayList<String>();contentList.clear();for(int j =1; j < columns; j++){if(row.getCell(j)!=null){row.getCell(j).setCellType(Cell.CELL_TYPE_STRING);contentList.add(row.getCell(j).getStringCellValue());}else{contentList.add("");}}map.put("StorageInfo"+i, contentList);}//遍历map集合,封装成beanfor(Map.Entry<String,List<String>> entry : map.entrySet()){List<String> list = entry.getValue();PutStorageInfo storageInfo =newPutStorageInfo();storageInfo.setProductcode(list.get(0));storageInfo.setProductsort(list.get(1));storageInfo.setProductbrand(list.get(2));storageInfo.setProductname(list.get(3));storageInfo.setProductquantity(list.get(4));storageInfo.setProductcontent(list.get(5));storageInfo.setProductnetweight(list.get(6));storageInfo.setProductcountry(list.get(7));storageInfo.setProductpdate(list.get(8));storageInfo.setProductprice(list.get(9));storageInfo.setProductmark(list.get(10));infoList.add(storageInfo);}is.close();}catch(Exception e){e.printStackTrace();}return infoList;}⼆、Excel导出采⽤JXL实现publicstaticvoid creatExcel(List<PutStorageInfo> storageInfoList,String fileName){try{OutputStream os =newFileOutputStream(fileName);//创建可写的⼯作薄WritableWorkbook workbook =Workbook.createWorkbook(os);//创建第⼀张表WritableSheet sheet = workbook.createSheet("Sheet1",0);//设置根据内容⾃动宽度CellView cellView =newCellView();cellView.setAutosize(true);//在下边for循环中为每⼀列设置//设置列宽度,此种⽅式参数的意思,i-->对应的⾏或列 j-->要设置的宽度// sheet.setColumnView(0, 100);// sheet.setRowView(0, 300);//设置字体加粗且背景颜⾊为黄⾊WritableFont boldFont =newWritableFont(WritableFont.ARIAL,10,WritableFont.BOLD);//⿊体WritableCellFormat cellrFormate =newWritableCellFormat(boldFont);cellrFormate.setBackground(Colour.YELLOW);//先添加表头List<String> titleList = getTitleList();//循环创建单元格,先列后⾏for(int i =0; i < titleList.size(); i++){//sheet.setColumnView(i, cellView);sheet.setColumnView(i,20);Label label =newLabel(i,0, titleList.get(i), cellrFormate);sheet.addCell(label);}LogUtil.logOut(JXLWriteExcel.class,storageInfoList.size()+"");String[][] content = convertToArr(storageInfoList);//设置content的⾃适应当前列的宽度,⽂本太对会⾃动换⾏ new Label(j, i+1, content[i][j-1],contentFormat); WritableCellFormat contentFormat =newWritableCellFormat();contentFormat.setWrap(true);//然后添加⼊库信息条⽬for(int i =0; i < storageInfoList.size(); i++){Label labelID =newLabel(0,i+1,(i+1)+"");sheet.addCell(labelID);for(int j =1; j < titleList.size(); j++){Label label =newLabel(j, i+1, content[i][j-1]);sheet.addCell(label);}}//把创建的内容写⼊到输出流中,并关闭输出流workbook.write();workbook.close();os.close();//将存储了⼊库bean的list清空storageInfoList.clear();}catch(Exception e){e.printStackTrace();}}privatestaticString[][] convertToArr(List<PutStorageInfo> storageInfoList){String[][] content =newString[storageInfoList.size()][11];for(int i =0; i < storageInfoList.size(); i++){PutStorageInfo info = storageInfoList.get(i);//每个bean中总项有11项content[i][0]= info.getProductcode();content[i][1]= info.getProductsort();content[i][2]= info.getProductbrand();content[i][3]= info.getProductname();content[i][4]= info.getProductquantity();content[i][5]= info.getProductcontent();content[i][6]= info.getProductnetweight();content[i][7]= info.getProductcountry();content[i][8]= info.getProductpdate();content[i][9]= info.getProductprice();content[i][10]= info.getProductmark();}return content;}privatestaticList<String> getTitleList(){List<String> list =newArrayList<String>();list.add("Item No.");list.add("Product code");list.add("Sort");list.add("Brand");list.add("Product Name");list.add("Quantity(Pieces)");list.add("Content");list.add("Net Weight");list.add("Country");list.add("Best before date");list.add("Price(EURO)");list.add("Remarks");return list;}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术
java 使用jxl技术excel文件进行导入和导出实验用到的知识与技术Java是一种流行的编程语言,而JXL技术是一种用于处理Excel文件的Java库。
在本文中,我们将一步一步地介绍如何使用JXL技术导入和导出Excel文件。
我们将从JXL技术的概述开始,然后讨论如何导入Excel文件,接着是如何导出Excel文件。
JXL技术是一个基于Java的开源库,用于读取、写入和操作Microsoft Excel文件。
它提供了一组API,可以方便地处理Excel文件中的单元格、行和列。
不仅可以读取现有的Excel文件,还可以创建新的Excel文件并在其中写入数据。
JXL技术支持Excel的各种版本,包括xls和xlsx格式。
接下来,我们将讨论如何导入Excel文件。
首先,我们需要在项目中引入JXL库的依赖。
在Maven项目中,我们可以将以下依赖添加到pom.xml 文件中:xml<dependency><groupId>net.sourceforge.jexcelapi</groupId><artifactId>jxl</artifactId><version>2.6.12</version></dependency>一旦我们引入了JXL依赖,我们就可以使用它的API来导入Excel文件。
首先,我们需要创建一个Workbook对象,它代表整个Excel文件。
我们可以使用Workbook类的静态方法getWorkbook()来打开一个现有的Excel文件,例如:javaWorkbook workbook = Workbook.getWorkbook(newFile("path/to/excel.xls"));在Workbook对象上,我们可以执行各种操作,例如获取特定的工作表、读取单元格的值等。
用JXL操作Excel
五、单元格操作
1 合并单元格 WritableSheet.mergeCells( int col1, int ro w1, int col2, int row2); 作用:合并(col1,row1)到(col2,row2) 作用:合并(col1,row1)到(col2,row2) 比如: sheet.mergeCells( 0 , 0 , 4 , 0 );
用JXL操作Ex一、JXL概述 二、读操作 三、写操作 四、单元格内容的格式 五、单元格操作 六、其他一些功能
一、JXL概述 JXL概述
1 什么是JXL 什么是JXL jxl 是一个韩国人写的java操作excel的工 是一个韩国人写的java操作excel的工 具, 在开源世界中,有两套比较有影响的API可 在开源世界中,有两套比较有影响的API可 供使用,一个是POI,一个是jExcelAPI。其中功 供使用,一个是POI,一个是jExcelAPI。其中功 能相对POI弱一点。但jExcelAPI对中文支持非常 能相对POI弱一点。但jExcelAPI对中文支持非常 好,API是纯Java的, 并不依赖Windows系统, 好,API是纯Java的, 并不依赖Windows系统, 即使运行在Linux下,它同样能够正确的处理 即使运行在Linux下,它同样能够正确的处理 Excel文件。 另外需要说明的是,这套API对图 Excel文件。 另外需要说明的是,这套API对图 形和图表的支持很有限,而且仅仅识别PNG格 形和图表的支持很有限,而且仅仅识别PNG格 式。
一、 JXL概述 JXL概述
2 JXL的特点 JXL的特点 Reads data from Excel 95, 97, 2000 workbooks Reads and writes formulas (Excel 97 and later only) Generates spreadsheets in Excel 2000 format Supports font, number and date formatting Supports shading and colouring of cells Modifies existing worksheets Supports image creation Preserves macros on copy Customizable logging
JXLS根据模板导出Excel实例教程
JXLS根据模板导出Excel实例教程本⽂实例为⼤家分享了JXLS根据模板导出Excel实例的具体⽅法,供⼤家参考,具体内容如下先做模板,做成想要的格式样⼦保存,然后通过程序根据模板⽣成对应样式的Excel⽂件,代码简单。
什么连接数据库查询然后将结果⽣成Excel⽂件就不讲了,放⼊List⾥⾯,然后套⼀下就⾏了,照⽼虎花猫。
准备:1、相关jar包:2、模板⽂件:开始:1、先实体类:Staff.javapackage myjxls;/*** 2014-3-17* 8dou* 实体*/public class Staff {/*** 名称*/private String name;/*** 薪资*/private Double payment;/*** 年终奖*/private Double bonus;public String getName() {return name;}public void setName(String name) { = name;}public Double getPayment() {return payment;}public void setPayment(Double payment) {this.payment = payment;}public Double getBonus() {return bonus;}public void setBonus(Double bonus) {this.bonus = bonus;}public Staff(String name, Double payment, Double bonus) { super(); = name;this.payment = payment;this.bonus = bonus;}}2、测试类 ChartTest.javapackage myjxls;/*** 2014-3-17* 8dou* 测试JXLS根据模板样式导出Excel*/import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import net.sf.jxls.transformer.XLSTransformer;public class ChartTest {/*** @param args*/public static void main(String[] args) throws Exception {List<Staff> staffs = new ArrayList<Staff>();Staff s1 = new Staff("张三", 6000D, 3000D);staffs.add(s1);Staff s2 = new Staff("李四", 5000D, 2000D);staffs.add(s2);Staff s3 = new Staff("王五", 4000D, 1000D);staffs.add(s3);String srcFilePath = "e:/simple.xlsx";String destFilePath = "e:/template-simple.xlsx";Map<String, List<Staff>> beanParams = new HashMap<String, List<Staff>>(); beanParams.put("staffs", staffs);XLSTransformer former = new XLSTransformer();former.transformXLS(srcFilePath, beanParams, destFilePath);System.out.println("the end ");}}运⾏结束后看⽣成的Excel⽂件,template-simple.xlsx如果是Web,需要下载可以看// 下载public static void doDownLoad(String path, String name,HttpServletResponse response) {try {response.reset();response.setHeader("Content-disposition","attachment;success=true;filename ="+ URLEncoder.encode(name, "utf-8"));BufferedInputStream bis = null;BufferedOutputStream bos = null;OutputStream fos = null;InputStream fis = null;File uploadFile = new File(path);fis = new FileInputStream(uploadFile);bis = new BufferedInputStream(fis);fos = response.getOutputStream();bos = new BufferedOutputStream(fos);// 弹出下载对话框int bytesRead = 0;byte[] buffer = new byte[8192];while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) {bos.write(buffer, 0, bytesRead);}bos.flush();fis.close();bis.close();fos.close();bos.close();} catch (Exception e) {e.printStackTrace();}}最后补充下Excel知识:在单元格⾥⾯将⽇期和时间显⽰在同⼀个单元格⾥⾯,⾃定义单元格式→yyyy-m-d hh:mm:ss以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
jxl笔记
jxl使用笔记准备用jxl来实现如下功能:1:在客户端读取excel文件的数据;2:把系统数据导出到excel模板文件中.第一个问题解决方法一:把excel文件上传到服务器,然后用jxl来解析数据。
那么首先必须写解析excel文件的方法。
然后写上传excel文件的方法。
问题:JBuilder,jxl.jar导入后点不出,无法继续。
解决:在Project properties→Paths→Required Libraries→Add→选Archives→点选要加入的jar包所在的目录,右边选择包。
(外面引入的包最好养成习惯放在项目目录下,新建一个lib 目录来存放包。
)碰到个鸟问题:PersonList.jsp页面编译成功后,只要修改到再运行就异常" Invocation Error ",只要出错一次,就算Ctrl+Z到和原文件相同再运行一样会异常。
鸟解决:复制一个出错前的PersonList.jsp覆盖出错的PersonList.jsp。
并且此页面不能再动,否则还是" Invocation Error "。
最后无奈换台机后立地解决。
新增文件:src\jbproj\lib\jxl.jar引入的第三方包,用来实现对excel的操作。
bll\PersonExcel.java用来生成Excel文件的Bean。
controller\action\DownLoadPersonExcelAction.java处理下载动作。
//::::::::::: PersonExcel.java源码:::::::::::::::::::::::::package addressbook.bll;/*** <p>Title:PersonExcel </p>** <p>Description: 用来生成Excel文件的Bean。
</p>** <p>Copyright: Copyright (c) 2007</p>** <p>Company: </p>** @author JIELS* @version 1.0*/import addressbook.domain.*;//import addressbook.dal.*;//import addressbook.dal.oracledao.OraDB;import java.io.OutputStream;import java.util.List;import jxl.Workbook;import jxl.format.Colour;import jxl.format.UnderlineStyle;import bel;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class PersonExcel {public String expordExcel(OutputStream os, List personList) throws Exception{WritableWorkbook wbook = Workbook.createWorkbook(os); // 建立excel文件String tmptitle = "人员记录"; // 标题WritableSheet wsheet = wbook.createSheet("第一页", 0); // sheet名称// 设置excel标题WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16,WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);WritableCellFormat wcfFC = new WritableCellFormat(wfont);wsheet.addCell(new Label(1, 0, tmptitle, wcfFC));wfont = new jxl.write.WritableFont(WritableFont.ARIAL, 14,WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,Colour.BLACK);wcfFC = new WritableCellFormat(wfont);// 开始生成主体内容wsheet.addCell(new Label(0, 2, "姓名"));wsheet.addCell(new Label(1, 2, "性别"));wsheet.addCell(new Label(2, 2, "生日"));addressbook.domain.Person person = new Person();for (int i=0;i<personList.size();i++) {wsheet.addCell(new Label(0, i, ((Person)personList.get(i)).getName()));wsheet.addCell(new Label(1, i, ((Person)personList.get(i)).getSex()));wsheet.addCell(new Label(2, i, ((Person)personList.get(i)).getBirthDate().toString()));}// 主体内容生成结束wbook.write(); // 写入文件wbook.close();os.close();return "success";}}//:::::::DownLoadPersonExcelAction.java 源码::::::::::::::/*** <p>Title: DownLoadPersonExcelAction</p>** <p>Description: 处理下载动作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Jxl.jar 简单运用1.1jxl.jar 包简介下载地址:/jexcelapi/特征:● 支持Excel 95-2000的所有版本● 生成Excel 2000标准格式● 支持字体、数字、日期操作● 能够修饰单元格属性● 支持图像和图表最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。
另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
1.2搭建环境将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。
2jxlr的基本运用2.1创建文件生成一个名为“测试数据.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:代码(CreateXLS.java):import java.io.*;import jxl.*;import jxl.write.*;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”);//或者WritableCell cell = new jxl.write.Number(column, row, value, wcf)//将定义好的单元格添加到工作表中sheet.addCell(label);/*生成一个保存数字的单元格必须使用Number的完整包路径,否则有语法歧义单元格位置是第二列,第一行,值为789.123*/` jxl.write.Number number = new jxl.write.Number(1,0,789.123);sheet.addCell(number);//写入数据并关闭文件book.write();book.close();}catch(Exception e){System.out.println(e);}}}编译执行后,会在当前位置产生一个Excel文件。
2.2读取文件以刚才我们创建的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);}}}程序执行结果:test2.3修改文件利用jExcelAPI可以修改已有的Excel文件,修改Excel文件的时候,除了打开文件的方式不同之外,其他操作和创建Excel是一样的。
下面的例子是在已经生成的Excel文件中添加一个工作表://修改Excel的类,添加一个工作表import java.io.*;import jxl.*;import jxl.write.*;public class UpdateXLS {public static void m ain(String args[]) {try {//Excel获得文件Workbook wb=Workbook.getWorkbook(new File(“测试.xls”));//打开一个文件的副本,并且指定数据写回到原文件WritableWorkbook book=Workbook.crea teWorkbook(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);}}}执行结果如图:3高级操作3.1数据格式化在Excel中不涉及复杂的数据类型,能够比较好的处理字串、数字和日期已经能够满足一般的应用。
3.2字串格式化字符串的格式化涉及到的是字体、粗细、字号等元素,这些功能主要由WritableFont和WritableCellFormat类来负责。
假设我们在生成一个含有字串的单元格时,使用如下语句,为方便叙述,我们为每一行命令加了编号:WritableFont font1 = new WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);或//设置字体格式为excel支持的格式WritableFont font3 = new WritableFont(WritableFont.createFont("楷体_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.CENTRE);//设置自动换行format1.setWrap(true);3.3单元格操作Excel中很重要的一部分是对单元格的操作,比如行高、列宽、单元格合并等,所幸jExcelAPI 提供了这些支持。
这些操作相对比较简单,下面只介绍一下相关的API。
3.3.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);合并既可以是横向的,也可以是纵向的。
合并后的单元格不能再次进行合并,否则会触发异常。
3.3.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);3.4操作图片public static void write()throws Exception{WritableWorkbook wwb=Workbook.createWorkbook(new File("c:/1.xls"));WritableSheet ws=wwb.createSheet("Test Sheet 1",0);File file=new File("C:\\jbproject\\PVS\\WebRoot\\weekhit\\1109496996281.png");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 content=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);//设置CellFormatLabel labelCF=new Label(0, 0, "hello");//创建写入位置,内容和格式Label的另一构造函数Label(int c, int r, String cont, CellFormat st)可以对写入内容进行格式化,设置字体及其它的属性.//现在可以写了wwb.write();//写完后关闭wwb.close();//输出流也关闭吧os.close;。