最近研究导数据接触到了JXL,就顺带着琢磨了下。在这里记录一下,以后就不用导出找资料了。
代码:
import java.io.File; import java.util.ArrayList; import java.util.Date; import java.util.List; import jxl.Workbook; import jxl.format.Alignment; import jxl.format.Border; import jxl.format.BorderLineStyle; import jxl.format.Colour; import jxl.format.PageOrientation; import jxl.format.PaperSize; import jxl.format.UnderlineStyle; import jxl.format.VerticalAlignment; import jxl.write.DateFormat; import jxl.write.DateTime; import jxl.write.Label; import jxl.write.Number; import jxl.write.NumberFormat; import jxl.write.WritableCellFeatures; import jxl.write.WritableCellFormat; import jxl.write.WritableFont; import jxl.write.WritableImage; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; public class JXLClass { public static String savePath = "D:"+java.io.File.separator+"saveDir";//文档所在目录 /** * 练习使用JXL生成Excel文件 */ public static void main(String[] args) { String fileName = System.currentTimeMillis()+".xls";//以当前时间作为Excel的名称:2003版本的 String filePath = savePath+ java.io.File.separator + fileName; System.out.println("文件路径:"+filePath); File excelFile = new File(filePath);//文件所在具体路径 createExcel(excelFile); } public static void createExcel(File file){ System.out.println("生成Excel文件开始了!"); try { String[] title={"序号","姓名","年龄","工资","出生日期","婚否","头像"};//标题数组 //1、创建可以写入的Excel工作簿 WritableWorkbook workBook = Workbook.createWorkbook(file); //2、创建工作表 //createSheet(param1,param2):param1为当前工作表名称,param2表示是第几张表,从0开始 WritableSheet sheet = workBook.createSheet("工作表1", 0);//0表示第一张表 WritableSheet sheet2 = workBook.createSheet("工作表2", 1); WritableSheet sheet3 = workBook.createSheet("工作表3", 2); //3、设置打印属性 sheet.getSettings().setOrientation(PageOrientation.LANDSCAPE) ;// 设置为横向打印 sheet.getSettings().setPaperSize(PaperSize.A4);//设置纸张A4 sheet.getSettings().setFitHeight(297);//打印区高度 sheet.getSettings().setFitWidth(210) ;//打印区宽度 // 设置边距 sheet.getSettings().setTopMargin(0.5) ; sheet.getSettings().setBottomMargin(0.3) ; sheet.getSettings().setLeftMargin(0.1) ; sheet.getSettings().setRightMargin(0.1) ; //设置页脚 sheet.getSettings().getFooter().getCentre().appendPageNumber() ;// 为页脚添加页数 sheet.getSettings().setFooterMargin(0.07) ;// 设置页脚边距(下) //4、设置保护,并加密码 锁定的Cell才会起作用 //启用保护并设置密码找回,生成的Excel为只读,在”审阅-更改-撤销工作表保护“模块可取消,取消时要求输入下面设置的密码 sheet.getSettings().setProtected(true) ;//启用保护 sheet.getSettings().setPassword("123456") ;//设置保护密码 // 设置打印标题行 sheet.getSettings().setPrintHeaders(true) ;// 启用打印头信息 //5、合并单元格 //mergeCells(int x,int y,int m,int n):合并单元格,表示将 //从第x+1列,y+1行到m+1列,n+1行合并 (四个点定义了两个坐标,左上角和右下角) //结果是合并了m-x+1行,n-y+1列,两者乘积就是合并的单元格数量。 sheet.mergeCells(0,0,title.length-1,0);//工作表1的第一行合并,显示标题 //setRowView(int i,int height); 指定第i行的高度(这个高度好像得是Excel中的20倍,也就是这里设置成200,Excel中高度差不多为10) //有三个参数时,第三个参数表示当前行是否隐藏(当第三个参数为true,高度即便再高也显示不出来。且默认为true)。若是只写两个参数,当前会被隐藏 sheet.setRowView(0,500,false);//第一行为合并性的标题行,第二行开始显示title中的内容,第三行为文本内容 //6、设置标题的样式 //WritableFont()参数依次为:字体(宋体、楷体等),大小,字形(常规、加粗等), //是否倾斜(true表示倾斜,false表示不倾斜),下划线样式(这里设置的双下划线),字体颜色(这里为红色) WritableFont titleFont = new WritableFont(WritableFont.ARIAL,14,WritableFont.BOLD, true,UnderlineStyle.DOUBLE,Colour.RED);//字体样式定义 WritableCellFormat cellFormatForTitle = new WritableCellFormat(titleFont);//单元格样式定义 cellFormatForTitle.setAlignment(jxl.format.Alignment.CENTRE); //设置水平方向对齐方式 cellFormatForTitle.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直方向对齐方式 cellFormatForTitle.setWrap(true);//是否自动换行 cellFormatForTitle.setBorder(Border.ALL, BorderLineStyle.THIN);//设置边框样式 cellFormatForTitle.setBackground(Colour.LIGHT_GREEN);//设置背景色 //cellFormat.setIndentation(2);//设置缩进字符个数 //7、为第一行合并的单元格设置标题 Label lab = new Label(0,0,"JXL练习",cellFormatForTitle); //Label(int x,int y,String content,WritableCellFormat wcf):指明单元格的位置和内容,四个参数依次为;第几列、第几行、内容、样式 sheet.addCell(lab);//将单元格添加到sheet中 //8、将title写到Excel中 for(int i=0;i
说明:
1、启用了密码保护功能,所以生成的Excel不能编辑,Excel2007可以在”审阅-更改-撤销工作表保护“模块取消保护,取消时要求输入下面设置的密码123456
sheet.getSettings().setProtected(true) ;//启用保护 sheet.getSettings().setPassword("123456") ;//设置保护密码