jxl 处理 Excel 样式 - LZeSen
jxl 能够操作的 excel 样式:
1. Workbook的格式设置(代表一个excel文件)
2. Sheet的格式设置(代表一个表格)
3. Cell的格式设置(代表一个单元格)
PS:此jxl API是基于jxl 2.6而来的
官方API:http://jexcelapi.sourceforge.net/resources/javadocs/current/docs/
具体内容:
1. Workbook的格式,Workbook的格式由WorkbookSettings来设置,比较需要注意的是jxl的格式设置统一使用了有get/set方法的bean来操作,这样做的好处是不仅查看API设置格式变成方便,而且把Workbook的格式分离出来有得于扩展.WorkbookSettings的API我试过几个,在word 2010下没有一个起作用,也不知道为什么.不过jxl有一套默认的WorkbookSettings设置,一般情况下使用默认的就可以了,有什么特殊需要可以看API,不过API并不是特别详细.使用方式:
1 WorkbookSettings bookSettings = new WorkbookSettings(); 2 bookSettings.setEncoding("UTF-8"); 3 WritableWorkbook book = Workbook.createWorkbook(new File("E:/testwrite.xls"), bookSettings);
2.Sheet的格式由SheetSettings来设置,使用方式:
WritableWorkbook book = Workbook.createWorkbook(new File("E:/testwrite.xls"), bookSettings); WritableSheet sheet = book.createSheet("sheet1", 0); SheetSettings settings = sheet.getSettings(); // sheet格式 settings.setDefaultColumnWidth(6);// 默认字体是10,所以刚好适应6个字符 settings.setDefaultRowHeight(400);// 显示是10像素
几个用有的API:
a) setDefaultColumnWidth/setDefaultRowHeight设置单元格默认的宽度与高度,宽度的大小是根据当前的默认字体的大小来设置的,而高度则是适应的,除非 你设置了高度,高度的单位是设置值1/20像素.
PS:所有的格式都是在book.write()才写进excel文件的.因此可以对参数在write之前进行修改.
b) setHorizontalFreeze/setVerticalFreeze设置列,行的固定,这个是从1开始算起的.
c) setHeader/setFooter设置打印时的页头与页尾的输出内容,在SheetSettings里的很多设置都和打印的格式有关.
3. Cell的格式设置由WritableCellFormat去设定,Cell有三种类型的格式:文本格式,数字格式和日期格式,与它们相关的格式都在jxl.write.*中可以找到.
几个有用API:
a) 文本处理,使用WritableFont类来设置格式,能够设置文本的字体,大小(像素),是否加粗,是否斜体,是否有下划线,颜色,上下标的格式:
// 文字处理 WritableFont font = new WritableFont(WritableFont.ARIAL); // 设置字体有arial,Times New Roman,Courier New,Tahoma font.setBoldStyle(WritableFont.BOLD); // 加粗 font.setItalic(true); // 斜体 font.setUnderlineStyle(UnderlineStyle.DOUBLE); // 下划线 font.setColour(Colour.BLUE_GREY); // 字体颜色 font.setPointSize(20); // 字体大小 font.setScriptStyle(ScriptStyle.SUBSCRIPT); // 是否上下标 WritableCellFormat format = new WritableCellFormat(font); Label label = new Label(0, 0, "abcdef", format); sheet.addCell(label);
b) 超文本处理,使用WritableHyperlink设置格式,能够设置一定单元格内点击打开网页或者本地文件.
// 超文本处理 WritableHyperlink link = new WritableHyperlink(0,4,0,5, new URL("http://www.baidu.com"),"百度"); sheet.addHyperlink(link);// 打开网页 WritableHyperlink link1 = new WritableHyperlink(0, 6, new File("E:/test.xls")); sheet.addHyperlink(link1); // 打开本地excel
c) 数字处理,使用NumberFormat设置数字格式,可以使用自定义的格式,通过使用#号来决定保留的数位,不足#号的长度的不会用0补充,还可以用0符号,这个会进行补充0.
// 四舍五入,数字处理 NumberFormat numberFormat = new NumberFormat("0000000.0000"); WritableCellFormat format1 = new WritableCellFormat(numberFormat); Number number = new Number(0, 1, 3234.62, format1); sheet.addCell(number);
d) 日期处理,jxl有自带的格式,不过格式自己也会用啦
// 日期格式处理 Date time = Calendar.getInstance().getTime(); DateFormat dateFormat = new DateFormat("yyyy-MM-dd HH:mm:ss"); WritableCellFormat format2 = new WritableCellFormat(dateFormat); DateTime timeCell = new DateTime(0, 2, time, format2); sheet.addCell(timeCell);
e) 图片处理:
// 图片处理 WritableImage writableImage = new WritableImage(10,10,50,50, new File("E:/blue.png")); sheet.addImage(writableImage);
PS:记得close book流,清理内存.
book.write();
book.close();