jxl 导出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操作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。
jxls 单元格样式

jxls 单元格样式一、概述jxls 是一款基于 Java 的 Excel 文件生成工具,它可以读取数据库数据并生成 Excel 文件。
在 jxls 中,单元格样式是非常重要的一部分,它决定了单元格的外观和格式。
本篇文章将介绍 jxls 单元格样式的设置方法。
二、创建单元格样式在 jxls 中,单元格样式是通过创建一个 CellStyle 对象来创建的。
可以通过继承 DefaultCellStyle 类或使用 CellStyle 类提供的静态方法来创建单元格样式。
下面是一个创建单元格样式的示例代码:```javaCellStyle style = workbook.createCellStyle();style.setAlignment(HorizontalAlignment.LEFT);style.setVerticalAlignment(VerticalAlignment.CENTER);style.setWrapText(true);```在上面的代码中,我们创建了一个名为 style 的单元格样式,并设置了单元格的水平对齐方式、垂直对齐方式和文本换行方式。
可以根据需要设置更多的样式属性,如字体、颜色、边框等。
三、应用单元格样式创建好单元格样式后,需要将其应用到单元格上。
可以使用createCellWriteable 方法创建一个 Cell 对象,并使用setCellStyle 方法将单元格样式应用到该对象上。
下面是一个应用单元格样式的示例代码:```javaRow row = worksheet.createRow(0);Cell cell = row.createCell(0);cell.setCellStyle(style);```在上面的代码中,我们创建了一个行和单元格,并将之前创建的单元格样式应用到该单元格上。
四、常见单元格样式设置以下是 jxls 中一些常见的单元格样式设置:1. 字体和颜色:可以使用 setFont 方法设置字体,使用setFillForegroundColor 方法设置字体颜色。
Java操作Excel之JXL(填充EXCEL模板)转载

Java操作Excel之JXL(填充EXCEL模板)转载Java操作Excel之理解JXL--读取Excel 说到如何⽤JXL读取Excel⽂件,现在来看看如何读取Excel模板然后把动态数据写⼊到模板以⽣成特定格式的Excel。
同样的思路,先来考虑下会涉及到那些对象,和上篇⽂章读取相⽐这⾥涉及到⼀个写⼊的步骤,所以JXL必然会提供⼀个对象来⽀持写⼊,这就是WritableWorkbook。
那么如何得到到这个类的实例,查看APIDoc发现Workbook类提供了⼏个静态的createWorkbook⽅法返回WritableWorkbook实例,可以看到众多createWorkbook⽅法主要分为两类:⼀个参数和两个参数。
简单分析可以得知前者仅仅是⽤来直接⽣成Excel⽂件,后者先读取模板再向模板写⼊数据然后⽣成Excel。
(还有⼀个三参数⽅法加上⼀个⽤来设置workbook的参数)现在按照上篇⽂章中所讲述的流程来看看读取模板并写⼊需要那些步骤。
第⼀步:选择模板⽂件:Workbook wb = Workbook.getWorkbook(new File(realpath));第⼆步:通过模板得到⼀个可写的Workbook:WritableWorkbook wwb = Workbook.createWorkbook(targetFile, wb);第⼀个参数是⼀个输出流对象,⽐如可以ByteArrayOutputStream targetFile = new ByteArrayOutputStream();这样定义这个输出流对象。
第⼆个参数代表了要读取的模板。
第三步:选择模板中名称为StateResult的Sheet:WritableSheet wws = wwb.getSheet("StateResult");如果需要也可以创建SheetWritableSheet wws = wwb.createSheet("Sheet名称",i);第四步:选择单元格,写⼊动态值,根据单元格的不同类型转换成相应类型的单元格:Label A1 = (Label)wws.getWritableCell(0,0);A1.setString("单元格内容")或Number A2 = (Number)wws.getWritableCell(0,1);//Number是jxl.write.NumberA2.setValue(3.3);也可以创建新的单元格并且加⼊到Sheet中Label C1 = new Label(2,0,"单元格内容");wws.addCell(C1);或Number C1 = new Number(2,0,3.3);wws.addCell(C1);在⽣成Excel报表的时候还会遇到⼀种需求就是数据的格式问题,我们可能希望数值型单元格以某种格式显⽰,⽽字符串型单元格以另⼀种格式显⽰。
JXL操作EXCEL的常用类方法参数解析

1. JXL操作EXCEL的常用类方法参数解析Excel的生成方式其实很简单,主要包括几个大的类首先最重要的几个类就是WritableWorkbook,这个类代表的就是一个Excel文档,使用过Excel文档的都应该知道Excel文档的组成,都是由一个一个的sheet组成的,那么这个sheet对应的java类就是WritableSheet。
实际上就是这两个大类的组成,其他的一些小的类都是为了修饰WritableSheet里的内容的。
这些修饰类中用的最多的就是WritableFont ,WritableCellFormat,以及Label类,这三个类构成了修WritableSheet的核心。
<一>抽象类Workbook该类相当于是一个工具类用于生成Excel方法:(1)createWorkbook(File file)createWorkbook(File file,Workbook in)createWorkbook(java.io.OutputStream os)提供了各种形式的产生Excel的方式(2)findByName(String name)该方法的作用是获得名称为name的Range的数组(3)findCellByName(String name)该方法的作用是根据name来获取对应的cell对象(4)getCell(String location)该方法的作用是根据location来获得对应的cell对象(5)getNumberOfSheets()该方法的作用是是获得sheet的总个数(6)getRangeNames()该方法的作用是获得所有Range对象名称的数组(7)getSheet(int index)该方法的作用是根据下标来获取对应的sheet对象(8)getSheet(String name)该方法的作用是根据sheet的名称来获得对应的sheet对象(9)getSheetNames()该方法的作用是获得所有sheet的名称所在的数组(10)getSheets()该方法的作用是获得所有sheet对象所在的数组(11)getVersion()该方法的作用是获得版本号(12)getWorkbook(File file)该方法的作用就是获得一个Excel对象(13)getWorkbook(File file,WorkbookSettings wss)该方法的作用是获取一个Excel对象(14)isProtected()该方法的作用是Excel是否是受保护的<二>WritableWorkbook该类是一个实际的可写的Workbook(1)createSheet(ng.String name,int index)该方法的作用是创建一个WorkSheet放在指定的位置(2)copy (Workbook book)该方法的作用是复制WritableWorkbook(3)copySheet(int s,String name,int index)该方法的作用是复制同一个workbook里处于s位置的sheet放到新的位置index处(4)findByName(String name)该方法的作用是获得名称为name的Range对象的数组(5)findCellByName(String name)该方法的作用是获取名称为name的WritableCell对象(6)getNumberOfSheets()该方法的作用是获得workbook里sheet的个数(7)getRangeNames()该方法的作用是获得所有Range对象的名称所在的数组(8)getSheet(int index)该方法的作用根据位置获取WritableSheet(9)getSheet(String name)该方法的作用是根据名称来获去WritableSheet(10)getSheetNames()该方法的作用是获得workbook里的所有sheet的名称所在的数组(11)getSheets()该方法的作用是获得workbook里的所有的sheet所在的数组(12)importSheet(String name,int index, Sheet sheet)该方法的作用是从另外一个workbook里倒入一个sheetname为新生成的sheet的名称,index为新的sheet在当前workbook里所处的位置(13)moveSheet(int from,int to)该方法的作用是移动一个sheet从from位置到to位置(14)removeRangeName(String name)该方法的作用是移除名称为name的Range对象(15)removeSheet(int index)该方法的作用是移除在index位置的sheet对象(16)setColorRGB(Colour c,int r,int g,int b)该方法的作用是个workbook设置一定的颜色(17)setOutputFile(File file)该方法的作用不太明确(18)setProtected(Boolean protected)该方法的作用是设置workbook是否为被保护(19)write()该方法非常重要,也就是生成一个Excel文档(20)close()该方法非常重要,在最后需要调用这个方法,才能使生成的Excel有效生成,否则,不写此句的话将会导致生成的Excel文件在打开时提示“文件的格式与扩展名指定的格式不一致”<三>接口WritableSheet(1)addCell(WritableCell cell)该方法的作用是添加单元格需要注意的是一个Cell/Label只能使用一次(2)addColumnPageBreak(int break)该方法的作用不详(3)addHyperlink(WritableHyperlink link)该方法的作用是设置超链接(4)addImage(WritableImage image)该方法的作用是向Excel中添加图片对于JExcelAPI来说只支持对PNG图片的操作,而POI的功能则会更加强大一些(5)addRowPageBreak(int break)该方法的作用不详同addColumnPageBreak(int break)一样(6)getImage(int i)该方法的作用是获得sheet中的图片(7)getNumberOfImages()该方法的作用是获得sheet中的图片总数(8)getWritableCell(int column,int row)该方法的作用是获得具体的某个单元格(9)getWritableHyperlinks()该方法的作用是获得sheet里的所有超链接(10)insertColumn(int col)该方法的作用是添加一列(11)insertRow(int row)该方法的作用是添加一行(12)mergeCells(int col1,int row1,int col2,int row2)该方法的作用是合并单元格其中参数指的是需要合并的两个单元格所处的位置,也就是合并这两个单元格之间的所有单元格(13)removeColumn(int col)该方法的作用是删除某一列(14)removeHyperlink(Hyperlink link)该方法的作用是删除某一个超链接(15)removeImage(WritableImage image)该方法的作用是删除图片(16)removeRow(int row)该方法的作用是删除一行(17)setColumnGroup(int col1, int col2, boolean collapsed)该方法的作用是设置一个column组(18)setName(String sheetname)该方法的作用是设置sheet的名称(19)setRowGroup(int row1,int row2,Boolean collapsed) 该方法的作用是设置一个row组(20)unmergeCells(Range r)该方法的作用是合并单元格(21)unsetColumnGroup(int col1,int col2)该方法的作用是解除column组,该方法是相对于setColumnGroup方法(22)unsetRowGroup(int row1,int row2)该方法的作用是解除row组,该方法是相对于setRowGroup方法的(23)setColumnView(int column,int width)该方法的作用是设置一个某一列的宽度(24)setRowView(int row,int height)该方法的作用是设置某一行的高度<四>接口WritableCell(1) copyTo(int col,int row)该方法的作用是深克隆某一行的某一列(2)getWritableCellFeatures()该方法的作用是获得WritableCellFeatures(3)setCellFeatures(WritableCellFeatures wfs) 该方法的作用是设置WritableCellFeatures (4)setCellFormat(CellFormat cf)该方法的作用是对列表进行格式排版<五>WritableCellFeatures<六>WritableFont该类用于设定Excel的字体(1)构造函数a. WritableFont(Font f)b. WritableFont(WritableFont.fontName fn)根据WritableFont的常量来创建WritableFontc. WritableFont(WritableFont.fontName fn, int size)根据WritableFont的常量以及字体的大小来创建WritableFontd. WritableFont(WritableFont.fontName fn, int size, WritableFont.BoldStyle fb)根据WritableFont的常量、字体的大小以及字体的粗细来创建WritableFonte. WritableFont(WritableFont.fontName fn, int size, WritableFont.BoldStyle fb, boolean italic)根据WritableFont的常量、字体的大小、字体的粗细以及是否斜体来创建WritableFontf.WritableFont(WritableFont.FontName fn,int ps,jxl.write.WritableFont.BoldStyle bs,boolean it, UnderlineStyle us)根据WritableFont的常量,字体的大小,字体的粗细,是否斜体,下划线样式来创建WritableFontg. WritableFont(WritableFont.FontName fn,int ps,jxl.write.WritableFont.BoldStyle bs,boolean it, UnderlineStyle us, Colour c)根据WritableFont的常量,字体的大小,字体的粗细,是否斜体,下划线样式以及颜色来创建WritableFonth. WritableFont(WritableFont.FontName fn,int ps,jxl.write.WritableFont.BoldStyle bs,boolean it, UnderlineStyle us, Colour c, ScriptStyle ss) 根据WritableFont的常量,字体的大小,字体的粗细,是否斜体,下划线样式,颜色以及脚本来创建WritableFont(2)createFont(ng.String fontName)该方法的作用是根据名称来设置Excel的title的字体(3)setBoldStyle(BoldStyle boldStyle)该方法的作用是设置Excel的title字体的粗细,但是对应的值只有两个WritableFont.BOLD和WritableFont.NO_BOLD(4)setColor(Color color)该方法的作用是设置Excel的title字体的颜色(5)setItalic(Boolean italic)该方法的作用是设置Excel的title字体是否为斜体(6)setPointSize(int size)该方法的作用是设置Excel的title字体的大小(7)setScriptStyle(ScriptStyle ss)该方法的作用是设置Excel的title的效果,有三个值可供选择ScriptStyle.SUBSCRIPT,ScriptStyle.SUPSCRIPT,ScriptStyle.NOMAL_SCRIPT例如如果设置setScriptStyle(ScriptStyle.SUPSCRIPT)是如下效果如果设置为SUBSCRIPT的话就是如下的样式如果不做设置的话,即默认为NOMAL_SCRIPT则为如下所示(8)setUnderlineStyle(UnderlineStyle us)该方法的作用是设置下划线的样式存在以下值可供选择UnderlineStyle.DOUBLEUnderlineStyle.DOUBLE_ACCOUNTINGUnderlineStyle.NO_UNDERLINEUnderlineStyle.SINGLEUnderlineStyle.SINGLE_ACCOUNTING从上面的结果可以得出SINGLE和DOUBLE只是在字体范围内加下划线,而SINGLE_ACCOUNTING和DOUBLE_ACCOUNTING则是在整个标题的范围内加下划线<六>类Label该类的作用是设置列里的文本信息,此类实现了WritableCell接口(1)构造函数a. Label(int c, int r ,ng.String cont)设置指定的行列的文本信息b. Label(int c,int r,ng.String cont,CellFormat st)设置指定的行列的的文本信息以及列的格式(这个构造是用的比较多的)c. Label(LabelCell lc)根据LabelCell创建Label(2)copyTo(int c, int r)该方法的作用是深克隆指定的某一行的某一列(3)setString(String content)该方法的作用是设置某一列的内容<七>类WritableCellFormat该类的作用是设置列表的格式尤其要注意的是在实际的使用过程中WritableCellFormat是同WritableFont,Label 共同使用的例如:WritableWorkbook book=Workbook.createWorkbook(new File(String path));WritableSheet sheet=book.createSheet(String sheetname,int index);WritableFont font=new WritableFont(WritableFont.fontname ,fontsize,BoldStyle.boldstylename);WritableCellFormat format=new WritableCellFormat(font);Label label=new Label(int column,int row,String content,WritableCellFormat format);sheet.addCell(label);(1)构造函数a. WritableCellFormat()默认的构造函数b. WritableCellFormat(CellFormat format)c. WritableCellFormat(DisplayFormat format)d. WritableCellFormat(WritableFont font)e. WritableCellFormat(WritableFont font,DisplayFormat format)(2)setAlignment(Alignment align)该方法的作用是设置表格的对齐方式可供选择的值有jxl.format.Alignment.CENTREjxl.format.Alignment.FILLjxl.format.Alignment.GENERALjxl.format.Alignment.JUSTIFYjxl.format.Alignment.LEFTjxl.format.Alignment.RIGHT(3)setBackground(Colour c)该方法的作用是设置cell的背景颜色可选的值均为Colour的常量对象(4)setBackground(Colour c,Pattern p) 该方法的作用是设置cell的背景颜色和形式(5)setBorder(Border b,BorderLineStyle bs) 该方法的作用是设置Border(6)setBorder(Border b,BorderLineStyle bs,Colour c) 该方法的作用也是设置Border(7)setIndentation(int identation)该方法的作用是设置单元格的缩进量(8)setLocked(Boolean lock)该方法的作用设置此列的style是否锁定(9)setOrientation(Orientation.orientationname) 该方法的作用是设置列的方向如下图为没有设置时的呈现下图为设置为Orientation.VERTICAL后的效果下图为设置为Orientation.MINUS_45后的效果,所谓MINUS_45表示的也就是整个表格呈现负的45度的效果,如果为Orientation.PLUS_45,则表示的是列表呈现正的45度的效果下图为设置为Orientation.HORIZONTAL后的效果实际上在没有专门给定值的时候,默认值就是HORIZONTAL(10)setShrinkToFit(Boolean flag)该方法的作用是设置自适应大小(11)setVerticalAlignment(VerticalAlignment.alignment) 该方法的作用是设置单元格的垂直对齐方式可供选择的值有VerticalAlignment.TOP/CENTER/BOTTOM/JUSTIFY (12)setWrap(Boolean flag)该方法的作用是设置自动换行<八>类WorkbookSettings(1)setArrayGrowSize(int size)该方法的作用设置Workbook的内存大小,用于保存Workbook里的数据(2)setAutoFilterDisabled(Boolean flag)该方法的作用是设置是否启用自动过滤(3)setCellValidationDisabled(Boolean flag)该方法的作用是设置单元格的验证是否启用(4)setCharacterSet(int cs)该方法的作用是设置Workbook的字符集(5)setDrawingDisabled(Boolean flag)该方法的作用不详(6)setEncoding(String encoding)该方法的作用是设置Workbook的字符编码(7)setExce9file(Boolean excel9file)该方法的作用不详(8)setExcelDisplayLanguage(String language)该方法的作用是设置设置Workbook里的语言(9)setExcelRegionalSettings(String regional)根据字面意思来讲这个方法的作用是设置Workbook的区域信息(10)setFormulaAjust(Boolean flag)该方法的作用是设置是否启用公式调节(11)setGCDisabled(Boolean flag)该方法的作用是设置是否启用垃圾回收机制(12)setIgnoreBlanks(Boolean flag)该方法的作用是设置是否忽略空白(13)setInitialFileSize(int size)该方法的作用是设置文件的初始大小(14)setMergedCellChecking(Boolean flag)该方法的作用是设置是否启用合并列表的检查(15)setRationalization(Boolean flag)该方法的作用是设置在生成Excel前是否合理化设置cellFormat(16)setSuppressWarning(boolean flag) 该方法的作用是设置是否隐藏警告(17)setTemplate(Boolean flag)该方法的作用是设置是否启用模板。
java jxl 单元格宽度样式

java jxl 单元格宽度样式Java jxl库是一款操作excel的Java第三方库,它可以对excel进行读取、写入、修改、合并等各种操作。
在Jxl中,单元格宽度样式是其中的一种常用功能。
本文将详细介绍如何通过jxl库进行单元格宽度样式的操作。
一、单元格宽度样式概述在excel中,单元格的宽度可以通过拖动列的边框来调整大小。
但是,如果我们需要定制某一列的宽度,或者需要一次性对多个单元格进行宽度的调整,手动拖动不仅费时费力,还容易出错。
这时,我们可以通过代码来设置单元格的宽度,实现更加自动化和高效的操作。
在jxl中,单元格的宽度使用的是宽度值,宽度值的单位是1/256个字符宽度。
因此,如果要设置单元格宽度为30个字符,则需要设置单元格宽度为30*256。
二、单元格宽度样式实现在jxl中,要设置单元格宽度样式需要使用WritableCellFormat类,并通过setWidth方法设置单元格的宽度值。
1. 设置单元格宽度以下代码为设置单元格宽度的示例:WritableCellFormat wcf = new WritableCellFormat();wcf.setWidth(20);2. 合并单元格并设置整行或整列的宽度如果要合并多个单元格并设置整行或整列的宽度,需使用setMerge方法设置单元格合并,使用setWidth方法设置整行或整列的宽度。
以下代码为合并单元格并设置整行或整列宽度的示例:WritableSheet sheet = workbook.createSheet("Sheet1", 0); WritableCellFormat wcf = new WritableCellFormat();wcf.setAlignment(Alignment.CENTRE);wcf.setVerticalAlignment(VerticalAlignment.CENTRE);wcf.setBorder(Border.ALL, BorderLineStyle.THIN);wcf.setBackground(Colour.GRAY_25);wcf.setWrap(true);WritableFont wf = new WritableFont(WritableFont.createFont("Arial"), 10, WritableFont.BOLD, false);wcf.setFont(wf);sheet.mergeCells(0, 0, 4, 0);sheet.setRowView(0, 500);sheet.setColumnView(0, 20);Label titleLabel = new Label(0, 0, "Title", wcf);sheet.addCell(titleLabel);在此示例中,我们首先创建了一个WritableSheet对象,并为其设置了样式。
使用JXL读取Excel表格,拷贝、更新Excel工作簿

使用JXL读取Excel表格,拷贝、更新Excel工作簿1./**2.* <p>读取Excel表格,拷贝、更新Excel工作薄 </p>3.* <p>Description: 可以读取Excel文件的内容,更新Excel工作薄4.* </p>5.* <p>Copyright: Copyright (c) Corparation 2005</p>6.* <p>程序开发环境为eclipse</p>7.* @author Walker8.* @version 1.09.*/10.package .yitong.xls;11.12.import java.io.File;13.import java.io.FileInputStream;14.import java.io.InputStream;15.import java.util.Vector;16.17.import .yitong.ChartImg;18.import .yitong.VireObj;19.import .yitong.platform.log.YTLogger;20.21.import jxl.CellType;22.import jxl.Workbook;23.import jxl.format.CellFormat;24.import jxl.format.Colour;25.import jxl.format.UnderlineStyle;26.import jxl.write.Formula;27.import bel;28.import jxl.write.Number;29.import jxl.write.WritableCell;30.import jxl.write.WritableCellFormat;31.import jxl.write.WritableFont;32.import jxl.write.WritableImage;33.import jxl.write.WritableSheet;34.import jxl.write.WritableWorkbook;35.import jxl.write.WriteException;36.import jxl.write.biff.RowsExceededException;37.38.public class XLSDemo39.{40.private static final int TITLE_LENGTH = 7;41.private static final int SHEET_WIDTH = 32;42.private static final int SHEET_HEIGHT = 116;43.44./**45.* 创建Excel46.*/47.private void makeXls()48.{49.Workbook workbook = null;50.try51.{52.// 构建Workbook对象, 只读Workbook对象53.// 直接从本地文件创建Workbook, 从输入流创建Workbook54.InputStream ins = new FileInputStream("D:/Workspace /testproj/source.xls");55.workbook = Workbook.getWorkbook(ins);56.57.// 利用已经创建的Excel工作薄创建新的可写入的Excel工作薄58.File outFile = new File("D:/Workspace/testproj/test.xls" );59.WritableWorkbook wwb = Workbook.createWorkboo k(outFile, workbook);60.// 读取第一张工作表61.WritableSheet dataSheet = wwb.getSheet(0);62.// 设置冻结单元格63.dataSheet.getSettings().setVerticalFreeze(7);64.dataSheet.getSettings().setHorizontalFreeze(2);65.66.// 测试模拟数据67.Vector vecData = new Vector();68.for(int i = 0; i < 50; i ++)69.{70.VireObj obj = new VireObj();71.obj.setOrgNo("00" + i + "0");72.obj.setOrgName("机构" + (i + 1));73.obj.setOpenAcc((int)(100 * Math.random()));74.obj.setDestoryAcc((int)(10 * Math.random()));75.obj.setTotalAcc((int)(500 * Math.random()));76.obj.setMonthInCount((int)(500 * Math.random()));77.obj.setMonthInMoney(500 * Math.random());78.obj.setMonthOutCount((int)(500 * Math.random()));79.obj.setMonthOutMoney(500 * Math.random());80.81.vecData.add(obj);82.}83.// 插入数据84.insertData(wwb, dataSheet, vecData);85.// 插入模拟图像数据86.Vector vecImg = new Vector();87.for(int i = 0; i < 3; i ++)88.{89.ChartImg img = new ChartImg();90.img.setImgTitle("图像" + (i + 1));91.img.setImgName("D:/Workspace/testproj/images/bar chart.png");92.vecImg.add(img);93.}94.// 插入图表95.insertImgsheet(wwb, vecImg);96.//写入Excel对象97.wwb.write();98.wwb.close();99.} catch (Exception e)100.{101.YTLogger.logDebug(e);102.} finally103.{104.// 操作完成时,关闭对象,释放占用的内存空间105.workbook.close();106.}107.}108.109./**110.* 插入数据111.* @param wwb WritableWorkbook : 工作簿112.* @param dataSheet WritableSheet : 工作表113.* @throws RowsExceededException114.* @throws WriteException115.*/116.private void insertData(WritableWorkbook wwb, Writa bleSheet dataSheet, Vector vecData) throws RowsExceededExce ption, WriteException117.{118.// 获得标题单元格对象119.modiStrCell(dataSheet, 2, 0, "工商银行江苏省分行个人网上银行业务种类/开销户明细报表(2005-12)", null);120.// 修改数据单元格数据121.for(int i = 0; i < vecData.size(); i ++)122.{123.VireObj obj = (VireObj)vecData.get(i);124.modiStrCell(dataSheet, 0, TITLE_LENGTH + i, obj.getOr gNo(), null);125.modiStrCell(dataSheet, 1, TITLE_LENGTH + i, obj.getOr gName(), null);126.modiNumCell(dataSheet, 2, TITLE_LENGTH + i, obj.get OpenAcc(), null);127.modiNumCell(dataSheet, 3, TITLE_LENGTH + i, obj.get DestoryAcc(), null);128.modiNumCell(dataSheet, 4, TITLE_LENGTH + i, obj.get TotalAcc(), null);129.modiNumCell(dataSheet, 5, TITLE_LENGTH + i, obj.get MonthInCount(), null);130.modiNumCell(dataSheet, 6, TITLE_LENGTH + i, obj.get TotalInMoney(), null);131.modiNumCell(dataSheet, 7, TITLE_LENGTH + i, obj.getMonthOutCount(), null);132.modiNumCell(dataSheet, 8, TITLE_LENGTH + i, obj.get MonthOutMoney(), null);133.}134.// 删除空行135.for (int j = vecData.size() + TITLE_LENGTH; j < SHEET_ HEIGHT; j++)136.{137.dataSheet.removeRow(vecData.size() + TITLE_LENGTH );138.}139.// 插入公式140.for(int i = 2; i < SHEET_WIDTH; i ++)141.{142.modiFormulaCell(dataSheet, i, vecData.size() + TITLE_L ENGTH, 8, vecData.size() + TITLE_LENGTH, null);143.}144.}145.146./**147.* 修改字符单元格的值148.* @param dataSheet WritableSheet : 工作表149.* @param col int : 列150.* @param row int : 行151.* @param str String : 字符152.* @param format CellFormat : 单元格的样式153.* @throws RowsExceededException154.* @throws WriteException155.*/156.private void modiStrCell(WritableSheet dataSheet, intcol, int row, String str, CellFormat format) throws RowsExceeded Exception, WriteException157.{158.// 获得单元格对象159.WritableCell cell = dataSheet.getWritableCell(col, row) ;160.// 判断单元格的类型, 做出相应的转化161.if (cell.getType() == CellType.EMPTY)162.{bel lbl = new Label(col, row, str);164.if(null != format)165.{166.lbl.setCellFormat(format);167.} else168.{169.lbl.setCellFormat(cell.getCellFormat());170.}171.dataSheet.addCell(lbl);172.} else if (cell.getType() == BEL)173.{bel lbl = (Label)cell;175.lbl.setString(str);176.} else if (cell.getType() == CellType.NUMBER)177.{178.// 数字单元格修改179.Number n1 = (Number)cell;180.n1.setValue(42.05);181.}182.}183.185.* 修改数字单元格的值186.* @param dataSheet WritableSheet : 工作表187.* @param col int : 列188.* @param row int : 行189.* @param num double : 数值190.* @param format CellFormat : 单元格的样式191.* @throws RowsExceededException192.* @throws WriteException193.*/194.private void modiNumCell(WritableSheet dataSheet, i nt col, int row, double num, CellFormat format) throws RowsExc eededException, WriteException195.{196.// 获得单元格对象197.WritableCell cell = dataSheet.getWritableCell(col, row) ;198.// 判断单元格的类型, 做出相应的转化199.if (cell.getType() == CellType.EMPTY)200.{201.Number lbl = new Number(col, row, num);202.if(null != format)203.{204.lbl.setCellFormat(format);205.} else206.{207.lbl.setCellFormat(cell.getCellFormat());208.}209.dataSheet.addCell(lbl);210.} else if (cell.getType() == CellType.NUMBER)212.// 数字单元格修改213.Number lbl = (Number)cell;214.lbl.setValue(num);215.} else if (cell.getType() == BEL)216.{bel lbl = (Label)cell;218.lbl.setString(String.valueOf(num));219.}220.}221.222./**223.* 修改公式单元格的值224.* @param dataSheet WritableSheet : 工作表225.* @param col int : 列226.* @param row int : 行227.* @param startPos int : 开始位置228.* @param endPos int : 结束位置229.* @param format230.* @throws RowsExceededException231.* @throws WriteException232.*/233.private void modiFormulaCell(WritableSheet dataShee t, int col, int row, int startPos, int endPos, CellFormat format) thr ows RowsExceededException, WriteException234.{235.String f = getFormula(col, row, startPos, endPos);236.// 插入公式(只支持插入,不支持修改)237.WritableCell cell = dataSheet.getWritableCell(col, row) ;238.if (cell.getType() == CellType.EMPTY)239.{240.// 公式单元格241.Formula lbl = new Formula(col, row, f);242.if(null != format)243.{244.lbl.setCellFormat(format);245.} else246.{247.lbl.setCellFormat(cell.getCellFormat());248.}249.dataSheet.addCell(lbl);250.} else if (cell.getType() == CellType.STRING_FORMULA )251.{252.YTLogger.logWarn("Formula modify not supported!");253.}254.}255.256./**257.* 得到公式258.* @param col int : 列259.* @param row int : 行260.* @param startPos int : 开始位置261.* @param endPos int : 结束位置262.* @return String263.* @throws RowsExceededException264.* @throws WriteException265.*/266.private String getFormula(int col, int row, int startPos, i nt endPos)267.throws RowsExceededException, WriteException268.{269.char base = 'A';270.char c1 = base;271.StringBuffer formula = new StringBuffer(128);272.// 组装公式273.formula.append("SUM(");274.if (col <= 25)275.{276.c1 = (char) (col % 26 + base);277.formula.append(c1).append(startPos).append(":")278..append(c1).append(endPos).append(")");279.} else if (col > 25)280.{281.char c2 = (char) ((col - 26) / 26 + base);282.c1 = (char) ((col - 26) % 26 + base);283.formula.append(c2).append(c1).append(startPos).appe nd(":")284..append(c2).append(c1).append(endPos).append(")");285.}286.287.return formula.toString();288.}289.290./**291.* 插入图表工作表292.* @param wwb WritableWorkbook : 工作簿293.* @param vecImg Vector : 图像链表294.* @throws RowsExceededException295.* @throws WriteException296.*/297.private void insertImgsheet(WritableWorkbook wwb, Vector vecImg)298.throws RowsExceededException, WriteException299.{300.// 插入图像301.WritableSheet imgSheet;302.if((wwb.getSheets()).length < 2)303.{304.imgSheet = wwb.createSheet("图表", 1);305.} else306.{307.imgSheet = wwb.getSheet(1);308.}309.310.for (int i = 0; i < vecImg.size(); i++)311.{312.ChartImg chart = (ChartImg) vecImg.get(i);313.// 插入图像标题bel lbl = new Label(0, 2 + 20 * i, chart.getImgTitle());315.WritableFont font = new WritableFont(WritableFont.A RIAL,316.WritableFont.DEFAULT_POINT_SIZE, WritableFont.NO_ BOLD, false,317.UnderlineStyle.NO_UNDERLINE, Colour.DARK_BLUE2);318.WritableCellFormat background = new WritableCellFo rmat(font);319.background.setWrap(true);320.background.setBackground(Colour.GRAY_25);321.imgSheet.mergeCells(0, 2 + 20 * i, 9, 2 + 20 * i);322.lbl.setCellFormat(background);323.imgSheet.addCell(lbl);324.// 插入图像单元格325.insertImgCell(imgSheet, 2, 4 + 20 * i, 8, 15, chart.getI mgName());326.}327.}328.329./**330.* 插入图像到单元格(图像格式只支持png)331.* @param dataSheet WritableSheet : 工作表332.* @param col int : 列333.* @param row int : 行334.* @param width int : 宽335.* @param height int : 高336.* @param imgName String : 图像的全路径337.* @throws RowsExceededException338.* @throws WriteException339.*/340.private void insertImgCell(WritableSheet dataSheet, in t col, int row, int width,341.int height, String imgName) throws RowsExceededExc eption, WriteException342.{343.File imgFile = new File(imgName);344.WritableImage img = new WritableImage(col, row, wi dth, height, imgFile);345.dataSheet.addImage(img);346.}347.348./**349.* 测试350.* @param args351.*/352.public static void main(String[] args)353.{354.XLSDemo demo = new XLSDemo();355.demo.makeXls();356.}357.}。
jxl 单元格格式 长数字处理

JXL是一款Java语言的Excel文件操作工具,可以方便地读取和写入Excel文件。
在使用JXL时,经常会遇到一些长数字的处理问题,比如会出现科学计数法显示,或者精度丢失等情况。
本文将结合实际问题进行讨论,介绍JXL中处理长数字的方法。
1. 长数字的表示在Excel中,长数字通常是指位数较多的数字,比如唯一识别信息、唯一识别号号等。
这些数字在Excel中显示时,可能会出现科学计数法的显示,比如1.23E+12,或者出现精度丢失的情况。
这给数据的准确性和可读性带来了困扰。
2. JXL读取长数字在使用JXL读取Excel文件时,如果单元格中的数据是长数字,可能会出现科学计数法的显示。
这是因为JXL默认采用科学计数法来表示较大的数字。
为了解决这个问题,可以通过设置单元格的格式来改变其显示方式。
3. 设置单元格的格式通过JXL可以设置单元格的格式,包括数据格式、对齐方式、字体颜色等。
要想显示长数字,可以将单元格的格式设置为文本格式,这样就能够正常显示所有位数的数字了。
4. 示例代码下面是一个使用JXL读取Excel文件,并设置单元格格式的示例代码:```File file = new File("test.xls");WorkbookSettings settings = new WorkbookSettings(); settings.setEncoding("ISO-8859-1");Workbook workbook = Workbook.getWorkbook(file, settings); Sheet sheet = workbook.getSheet(0);Cell cell = sheet.getCell(0, 0);WritableCellFormat format = newWritableCellFormat(NumberFormats.TEXT);WritableCell cell = sheet.getWritableCell(0, 0);cell.setCellFormat(format);String value = cell.getContents();System.out.println(value);```5. 长数字的写入除了读取长数字,有时候也需要向Excel文件中写入长数字。
转: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
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));。
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) {
js实现table导出Excel,保留table样式

js实现table导出Excel,保留table样式js table 保存成excel⽂件浏览器环境:⾕歌浏览器1.在导出Excel的时候,保存table的样式,有2种⽅法,①是在table的⾏内写style样式,②是在模板⾥⾯添加样式2.第⼀种⽅式:⾏内添加样式<td style="font-size: 18px">公司⼀</td>效果:完整代码:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><style>table td {font-size: 12px;width: 200px;height: 30px;text-align: center;background-color: #4f891e;color: #ffffff;}</style></head><body><a download="table导出Excel" id="excelOut" href="#">table导出Excel</a><table cellspacing="0" cellpadding="0" border="1" id="tableToExcel"><thead><tr><td style="font-size: 18px">公司⼀</td><td>公司⼆⼀</td><td>公司三</td></tr></thead><tbody><tr><td>A公司</td><td>B公司</td><td>C公司</td></tr><tr><td>A公司</td><td>B公司</td><td>C公司</td></tr><tr><td>A公司</td><td>B公司</td><td>C公司</td></tr><tr><td colspan="3">共计</td></tr></tbody></table><script>window.onload = function () {tableToExcel('tableToExcel', '下载模板')};//base64转码var base64 = function (s) {return window.btoa(unescape(encodeURIComponent(s)));};//替换table数据和worksheet名字var format = function (s, c) {return s.replace(/{(\w+)}/g,function (m, p) {return c[p];});}function tableToExcel(tableid, sheetName) {var uri = 'data:application/vnd.ms-excel;base64,';var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' +'xmlns="/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'+ '<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets>' + '</x:ExcelWorkbook></xml><![endif]-->' +' <style type="text/css">' +'table td {' +'border: 1px solid #000000;' +'width: 200px;' +'height: 30px;' +' text-align: center;' +'background-color: #4f891e;' +'color: #ffffff;' +' }' +'</style>' +'</head><body ><table class="excelTable">{table}</table></body></html>';if (!tableid.nodeType) tableid = document.getElementById(tableid);var ctx = {worksheet: sheetName || 'Worksheet', table: tableid.innerHTML};document.getElementById("excelOut").href = uri + base64(format(template, ctx));}</script></body></html>3.第⼆种⽅式:在模板⾥⾯⾥⾯添加样式在这⾥⾯添加的样式excel就能找到和识别了var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' +'xmlns="/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'+ '<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets>' + '</x:ExcelWorkbook></xml><![endif]-->' +' <style type="text/css">' +'table td {' +'border: 1px solid #000000;' +'width: 200px;' +'height: 30px;' +' text-align: center;' +'background-color: #4f891e;' +'color: #ffffff;' +' }' +'</style>' +'</head><body ><table class="excelTable">{table}</table></body></html>';完整代码:<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title><style>table td {font-size: 12px;width: 200px;height: 30px;text-align: center;background-color: #4f891e;color: #ffffff;}</style></head><body><a download="table导出Excel" id="excelOut" href="#">table导出Excel</a><table cellspacing="0" cellpadding="0" border="1" id="tableToExcel"><thead><tr><td >公司⼀</td><td>公司⼆⼀</td><td>公司三</td></tr></thead><tbody><tr><td>A公司</td><td>B公司</td><td>C公司</td></tr><tr><td>A公司</td><td>B公司</td><td>C公司</td></tr><tr><td>A公司</td><td>B公司</td><td>C公司</td></tr><tr><td colspan="3">共计</td></tr></tbody></table><script>window.onload = function () {tableToExcel('tableToExcel', '下载模板')};//base64转码var base64 = function (s) {return window.btoa(unescape(encodeURIComponent(s)));};//替换table数据和worksheet名字var format = function (s, c) {return s.replace(/{(\w+)}/g,function (m, p) {return c[p];});}function tableToExcel(tableid, sheetName) {var uri = 'data:application/vnd.ms-excel;base64,';var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"' +'xmlns="/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>'+ '<x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets>' + '</x:ExcelWorkbook></xml><![endif]-->' +' <style type="text/css">' +'table td {' +'border: 1px solid #000000;' +'width: 200px;' +'height: 30px;' +' text-align: center;' +'background-color: #4f891e;' +'color: #ffffff;' +' }' +'</style>' +'</head><body ><table class="excelTable">{table}</table></body></html>';if (!tableid.nodeType) tableid = document.getElementById(tableid);var ctx = {worksheet: sheetName || 'Worksheet', table: tableid.innerHTML};document.getElementById("excelOut").href = uri + base64(format(template, ctx));}</script></body></html>注意:如果同时添加了⾏内样式和模板样式,⾏内的样式会覆盖模板的样式。
java jxl 单元格边框样式

一、介绍Java jxl是一个流行的Java语言excel操作工具,可以用于读取、写入和操作excel文件。
在使用jxl进行excel文件操作的过程中,我们常常需要对单元格的边框样式进行定制化设置,以满足我们的具体需求。
本文将介绍如何使用Java jxl来设置单元格的边框样式。
二、导入相关类库在使用Java jxl进行excel操作之前,我们首先需要导入相关的类库。
我们需要导入jxl包以及相关的IO流包。
import jxl.Workbook;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;import java.io.File;import java.io.IOException;三、创建excel文件和工作表在使用Java jxl设置单元格边框样式之前,我们需要先创建一个excel文件和工作表。
// 创建excel文件WritableWorkbook workbook =Workbook.createWorkbook(new File("test.xls"));// 创建工作表WritableSheet sheet = workbook.createSheet("Sheet1", 0);四、设置单元格的边框样式1. 设置线条的粗细在Java jxl中,我们可以通过WritableSheet类的setRowView和setColumnView两个方法来设置单元格的行高和列宽,从而间接地控制单元格的边框线条的粗细。
// 设置行高sheet.setRowView(0, 500);// 设置列宽sheet.setColumnView(0, 20);2. 设置边框的颜色在Java jxl中,我们可以通过WritableSheet类的setCellFormat 方法来设置单元格的格式,从而间接地控制单元格的边框颜色。
JXLS2.4.0系列教程(一)——最简单的模板导出

JXLS2.4.0系列教程(⼀)——最简单的模板导出 Java中实现excel根据模板导出数据的⽅法有很多,⼀般简单的可以通过操作POI进⾏。
还可以使⽤⼀些⼯具很轻松的实现模板导出。
这些⼯具现在还在维护,⽽且做得⽐较好的国内的有easyPOI,国外的就是这个JXLS了。
笔者使⽤jxls 2也有半年的时间了,半年前因项⽬原因需要导出⼤量的excel⽂件,所以找到了jxls2,这是⽬前我⽤过最好的excel导出⼯具,基本可以完全满⾜所有的项⽬需要。
不使⽤easypoi的原因是那时候测试时候效果不是很好,项⽬中有很多复杂的报表(⼤量单元格合并和单元格样式),easyPOI处理合并单元格时候容易出现残损的情况。
今天我们着重介绍⼀下JXLS 2.4.0 ,写⽂章前我搜索了下JXLS的教程,发现半年前我看到的是什么⽂章,现在的还是什么⽂章,⼤量的⽂章停留在JXLS1.0时代(作者2.0后重写了代码,使⽤⽅法完全不同)。
唯⼀最新的⼀篇中⽂⽂章是klguang 写的《jxls2.3-简明教程》。
剩下的就是官⽅⽂档了。
其实官⽅⽂档也很不错,就是系统化不够,值此国庆之际,正好把我的⼯作中使⽤JXLS的经验写⼀下,让更多⼈接触这款优秀的⼯具。
⾸先,我推荐各位有能⼒的先上官⽹下载最新版本和了解下基础功能。
(有没有被墙看缘分,公司的电信⽹络可以直接上,家⾥联通的要挂VPN) 其次,推荐各位完整的看完klguang ⼤神写的《jxls2.3-简明教程》这篇⽂章。
⾥⾯提供了klguang ⼤神的⼯具类,本⽂也基于他的⼯具类进⾏介绍(部分代码进⾏修改)。
好,现在我们开始。
我这⾥使⽤jxls 2.4.0进⾏教程(不使⽤最新的2.4.2是因为我懒,教程⽤的jar包是我直接从公司项⽬拷的,懒得去测试新版本会不会有什么⼳蛾⼦,不过我看了下更新说明,只是修复了⼀个bug,应该问题不⼤)。
2.4和2.3在操作上没什么变化,但是在jar包的依赖上发⽣了变化,所以在使⽤2.4时候主要看我提供需要依赖的jar包⽂件。
JXL设置字体、颜色、背景等

使用JXL JExcelApi 生成Excel文档,并且设置字体、颜色、背景等2009-05-20 11:38package com.test.excel;import java.io.File;import java.io.IOException;import jxl.Workbook;import jxl.format.Border;import jxl.format.Colour;import jxl.format.UnderlineStyle;import jxl.format.BorderLineStyle;import jxl.write.Formula;import bel;import jxl.write.Number;import jxl.write.WritableCell;import jxl.write.WritableCellFormat;import jxl.write.WritableFont;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;public class TestExcel {public static void writeExcel(File file){try {//创建一个Excel文档WritableWorkbook workbook = Workbook.createWorkbook(file);//创建一个SheetWritableSheet sheet = workbook.createSheet("Report-1", 0);//是否显示网格sheet.getSettings().setShowGridLines(true);//设置列宽sheet.getSettings().setDefaultColumnWidth(9);//设置行高sheet.getSettings().setDefaultRowHeight(500);Label label = new Label(1,1,"This is a Lable");sheet.addCell(label);//设置字体WritableFont font = newWritableFont(WritableFont.ARIAL,20,WritableFont.BOLD,false,UnderlineS tyle.NO_UNDERLINE,Colour.RED);WritableCellFormat cFormat = new WritableCellFormat(font);//设置背景色cFormat.setBackground(Colour.LIGHT_BLUE);Label label2 = new Label(5,13,"hello new Label",cFormat); sheet.addCell(label2);WritableSheet sheet2 = workbook.createSheet("report-2", 1);WritableCellFormat newFormat = new WritableCellFormat();newFormat.setBorder(Border.ALL, BorderLineStyle.DOUBLE);Label label3 = new Label(3,6,"border",newFormat);sheet.addCell(label3);Formula l3 = new Formula(10,10,"=SUM(C4:C5)");//公式暂未成功,本来准备计算l1与l2的和,并显示到l3,未成功 //WritableCell cell = l3.copyTo(2, 5);Number l1 = new Number(2,3,3);Number l2 = new Number(2,4,4);sheet.addCell(l1);sheet.addCell(l2);//sheet.addCell(cell);workbook.write();workbook.close();} catch (IOException e) {e.printStackTrace();} catch (WriteException e) {e.printStackTrace();}}public static void main(String args[]){File file = new File("d:/test.xls");writeExcel(file);}}////////////////////////////////////////////////////////////////////////////////////////////////////////////////////jxl写入excel时格式处理右对齐粗体颜色等等//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////File tempFile=new File("d:/temp/output.xls");WritableWorkbook workbook = Workbook.createWorkbook(tempFile);WritableSheet sheet = workbook.createSheet("TestCreateExcel", 0);//一些临时变量,用于写到excel中Label l=null;jxl.write.Number n=null;jxl.write.DateTime d=null;//预定义的一些字体和格式,同一个Excel中最好不要有太多格式WritableFont headerFont = new WritableFont(WritableFont.ARIAL, 12, WritableFont.BOLD,false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLUE);WritableCellFormat headerFormat = new WritableCellFormat (headerFo nt);WritableFont titleFont = new WritableFont(WritableFont.ARIAL, 10, WritableFont.NO_BOLD,false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.RED);WritableCellFormat titleFormat = new WritableCellFormat (titleFont );WritableFont detFont = new WritableFont(WritableFont.ARIAL, 10, Wr itableFont.NO_BOLD,false, Underlinestyle.NO_UNDERLINE, jxl.format.Colour.BLACK);WritableCellFormat detFormat = new WritableCellFormat (detFont);NumberFormat nf=new NumberFormat("0.00000"); //用于Number的格式WritableCellFormat priceFormat = new WritableCellFormat (detFont,nf);DateFormat df=new DateFormat("yyyy-MM-dd");//用于日期的WritableCellFormat dateFormat = new WritableCellFormat (detFont, d f);//剩下的事情,就是用上面的内容和格式创建一些单元格,再加到sheet中l=new Label(0, 0, "用于测试的Excel文件", headerFormat);sheet.addCell(l);//add Titleint column=0;l=new Label(column++, 2, "标题", titleFormat);sheet.addCell(l);l=new Label(column++, 2, "日期", titleFormat);sheet.addCell(l);l=new Label(column++, 2, "货币", titleFormat);sheet.addCell(l);l=new Label(column++, 2, "价格", titleFormat);sheet.addCell(l);//add detailint i=0;column=0;l=new Label(column++, i+3, "标题 "+i, detFormat);sheet.addCell(l);d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);sheet.addCell(d);l=new Label(column++, i+3, "CNY", detFormat);sheet.addCell(l);n=new jxl.write.Number(column++, i+3, 5.678, priceFormat);sheet.addCell(n);i++;column=0;l=new Label(column++, i+3, "标题 "+i, detFormat);sheet.addCell(l);d=new DateTime(column++, i+3, new java.util.Date(), dateFormat);sheet.addCell(d);l=new Label(column++, i+3, "SGD", detFormat);sheet.addCell(l);n=new jxl.write.Number(column++, i+3, 98832, priceFormat);sheet.addCell(n);//设置列的宽度column=0;sheet.setColumnView(column++, 20);sheet.setColumnView(column++, 20);sheet.setColumnView(column++, 10);sheet.setColumnView(column++, 20);workbook.write();workbook.close();我正在做的项目里定义了很多样式,好像速度也不算慢,还有一些其他方面的定义,补充到下面://构造格式:ARIAL字体、10号、粗体、非斜体、无下划线、黑色WritableFont fmtx2TotalCaption = new WritableFont(WritableFont. ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.BLACK);WritableCellFormat totalx2Format = new WritableCellFormat(fmtx2 TotalCaption);//文字垂直居中对齐totalx2Format.setVerticalAlignment(jxl.format.VerticalAlignment .CENTRE);//文字水平居中对齐totalx2Format.setAlignment(jxl.format.Alignment.CENTRE);//边框深蓝色totalx2Format.setBorder(jxl.format.Border.ALL,jxl.format.Border LineStyle.THIN,jxl.format.Colour.DARK_BLUE);//设置底色为冰蓝totalx2Format.setBackground(jxl.format.Colour.ICE_BLUE);sheet.mergeCells(0, row, 8, row); //合并单元格,row 到 row 行,0 到 8 列sheet.setRowView(row, 600);// 第 row 行的高度另外就是要在 Action(servlet) 中这么写,IE就会直接弹出保存文件的对话框(注意要占用当前窗口):String title = "XXXX统计";OutputStream out = response.getOutputStream();WritableWorkbook wb = Workbook.createWorkbook(out);response.setContentType("aplication/vnd.ms-excel")s;response.addHeader("Content-Disposition","inline; filename=" + new String(title.getBytes("GB2312"),"ISO8859_1") + ".xls"); //有中文必须转码。
比较详细的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()); }}}。
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对象上,我们可以执行各种操作,例如获取特定的工作表、读取单元格的值等。
excelexportentity 单元格样式

excelexportentity 单元格样式1. 介绍在Excel中,单元格样式是指单元格的外观,包括字体、边框、填充颜色等,通过设置单元格样式可以让Excel表格更加美观和易读。
在使用Java编程时,我们经常需要将数据导出到Excel表格中,并且需要设置单元格样式来美化表格。
本文将介绍如何使用excelexportentity来设置Excel单元格样式。
2. excelexportentity 简介excelexportentity是一个用于导出Excel的Java库,它提供了丰富的API来设置Excel的各种属性,包括单元格样式、字体样式、边框样式等。
通过excelexportentity,我们可以方便地将数据导出到Excel,并且可以灵活地设置Excel的外观。
3. 设置单元格样式使用excelexportentity设置单元格样式非常简单,我们只需要创建一个样式对象,并将其应用到指定的单元格即可。
以下是一个示例代码:```java// 创建工作簿Workbook wb = new XSSFWorkbook();// 创建工作表Sheet sheet = wb.createSheet("样式示例");// 创建单元格Cell cell = sheet.createRow(0).createCell(0);// 创建样式CellStyle style = wb.createCellStyle();// 设置字体样式Font font = wb.createFont();font.setFontName("宋体");font.setFontHeightInPoints((short) 12);font.setBold(true);style.setFont(font);// 设置边框样式style.setBorderTop(BorderStyle.THIN);style.setTopBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderRight(BorderStyle.THIN);style.setRightBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderBottom(BorderStyle.THIN);style.setBottomBorderColor(IndexedColors.BLACK.getIndex()); style.setBorderLeft(BorderStyle.THIN);style.setLeftBorderColor(IndexedColors.BLACK.getIndex());// 设置填充颜色style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); style.setFillPattern(FillPatternType.SOLID_FOREGROUND);// 应用样式到单元格cell.setCellStyle(style);// 写入数据cell.setCellValue("这是一个样式示例");// 输出Excel文件FileOutputStream fileOut = new FileOutputStream("样式示例.xlsx");wb.write(fileOut);fileOut.close();```4. 单元格样式说明上面的示例代码中,我们首先创建了一个工作簿和工作表,然后创建了一个单元格,并创建了一个样式对象。
jxl操作excel

jxl操作exceljxl是一个韩国人写的java操作excel的工具,在开源世界中,有两套比较有影响的API可供使用,一个是POI,一个是jExcelAPI。
其中功能相对POI比较弱一点。
但jExcelAPI对中文支持非常好,API是纯Java的,并不依赖Windows 系统,即使运行在Linux下,它同样能够正确的处理Excel文件。
另外需要说明的是,这套API对图形和图表的支持很有限,而且仅仅识别PNG格式。
使用如下:搭建环境将下载后的文件解包,得到jxl.jar,放入classpath,安装就完成了。
基本操作一、创建文件拟生成一个名为“test.xls”的Excel文件,其中第一个工作表被命名为“第一页”,大致效果如下:package test;//生成Excel的类import java.io.File;import jxl.Workbook;import bel;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;public class CreateExcel {public static void main(String args[]) {try{//打开文件WritableWorkbook book = Workbook.createWorkbook( new File( "test.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 ,555.12541 );sheet.addCell(number);//写入数据并关闭文件book.write();book.close();} catch(Exception e) {System.out.println(e);}}}编译执行后,会产生一个Excel文件。
jxl 设置样式

jxl 设置样式2009-10-23 20:201.//filePathNew为一个File对象的实例2.WritableWorkbook wwb = Workbook.createWorkbook(filePathNew);3.4.//strSheetname为Excel中Sheet表的名称5.WritableSheet ws = wwb.createSheet(strSheetname, 0);6.7.//创建格式化对象实例8.WritableCellFormat totalx2Format = new WritableCellFormat();9.10.//垂直居中11.totalx2Format.setVerticalAlignment(VerticalAlignment.CENTRE);12.13.//水平居中14.totalx2Format.setAlignment(Alignment.CENTRE);15.16.//第一列的宽度17.ws.setColumnView(0, 15);18.19.//第二列的宽度20.ws.setColumnView(1, 40);21.22.//合并单元格:第一行第一列,第一行第二列,第二行第一列,第二行第二列23.//(0, 0, 1, 1)称为坐标更合适,实际上是将(0,0)单元格扩大了24.ws.mergeCells(0, 0, 1, 1);25.26.//设置Sheet表的标题,使用刚才合并的单元格,并将格式绑定bel sheetTitle = new Label(0, 0, "统计表", totalx2Format);28.ws.addCell(sheetTitle);29.30.//设置列标题bel colums1 = new Label(0, 2, "编号");32.ws.addCell(colums1);bel colums2 = new Label(1, 2, "名称");34.ws.addCell(colums2);35.36.//开始添加数据37.for(int k = 3; k <= 13; k++)38.{bel content1 = new Label(0, k, 编号:k);bel content2 = new Label(1, k, 名称:k);41.ws.addCell(content1);42.ws.addCell(content2);43.}44.wwb.write();45.46.//别忘了关闭哦47.wwb.close();。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
•
}
•
wwb.write();
//别忘了关闭哦
• wwb.close();
(1)添加的字体样式
• • • jxl.write.WritableFont wf = new jxl.write.WritableFont(WritableFont.TIMES, 18, WritableFont.BOLD, true); WritableFont()方法里参数说明: 这个方法算是一个容器,可以放进去好多属性
//创建格式化对象实例
• WritableCellFormat totalx2Format = new WritableCellFormat();
//垂直居中
• totalx2Format.setVerticalAlignment(Vertica lAlignment.CENTRE);
//水平居中
//开始添加数据
• for(int k = 3; k <= 13; k++) • {
•
Label content1 = new Label(0, k, 编号:k);
•
Label content2 = new Label(1, k, 名称:k);
•
ws.addCell(content1);
•
ws.addCell(content2);
• ws.addCellolums1 = new Label(0, 2, "编号";
• ws.addCell(colums1);
• Label colums2 = new Label(1, 2, "名称";
• ws.addCell(colums2);
• totalx2Format.setAlignment(Alignment.CE NTRE);
• //第一列的宽度 • ws.setColumnView(0, 15);
• //第二列的宽度 • ws.setColumnView(1, 40);
//合并单元格:第一行第一列,第一 行第二列,第二行第一列,第二行 第二列
• //(0, 0, 1, 1)称为坐标更合适,实际上是将 (0,0)单元格扩大了
• ws.mergeCells(0, 0, 1, 1);
• //设置Sheet表的标题,使用刚才合并的单 元格,并将格式绑定 Label sheetTitle = new Label(0, 0, "统计表", totalx2Format);
jxl 导出excel 设置样式
• WritableWorkbook wwb = Workbook.createWorkbook(filePathNew);
//filePathNew为一个File对象的实 例
• //strSheetname为Excel中Sheet表的名称
• WritableSheet ws = wwb.createSheet(strSheetname, 0);
•
• • • • •
第一个:字体 ,WritableFont.TIMES
第二个:大小,18 第三个: 是否为粗体,WritableFont.BOLD 或WritableFont.NO_BOLD 第四个: 判断是否为斜体,选择true时为斜体 第五个: 样式,UnderlineStyle.NO_UNDERLINE 下划线 第六个: 颜色,jxl.format.Colour.RED 字体颜色是红色的