最近研究导数据接触到了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<title.length;i++){ //setColumnView(int i,int width):指定第i列的宽度 sheet.setColumnView(i, 20);//设置单元格的宽度:这个宽度与Excel里面的宽度差不多 Label label = new Label(i,1,title[i],cellFormatForTitle);//在第二行中添加文本类单元格 sheet.addCell(label);//将标题添加到sheet中 } sheet.setRowView(1,500,false);//标题行行高25 //9、设置正文的样式 //Arial是一套随同多套微软应用软件所分发的无衬线体TrueType字型 WritableFont bodyFont = new WritableFont(WritableFont.ARIAL,12,WritableFont.NO_BOLD, false,UnderlineStyle.NO_UNDERLINE,Colour.BLACK);//字体样式定义:ARIAL,12号,不加粗,不倾斜,没有下划线,黑色 WritableCellFormat cellFormatForBody = new WritableCellFormat(bodyFont);//单元格样式定义 cellFormatForBody.setAlignment(jxl.format.Alignment.CENTRE); //设置水平方向对齐方式 cellFormatForBody.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直方向对齐方式 cellFormatForBody.setWrap(true);//是否自动换行 cellFormatForBody.setBorder(Border.ALL, BorderLineStyle.THIN);//设置边框样式 cellFormatForBody.setBackground(Colour.LIGHT_GREEN);//设置背景色 //10、给正文添加内容 //第一列,序号,数字类型,Number():参数依次为:第几列,第几行,显示内容,样式 Number number = new Number(0,2,1,cellFormatForBody); sheet.addCell(number); //第二列,姓名,基本文字类型 Label name = new Label(1,2,"张三",cellFormatForBody); sheet.addCell(name); //第三列,年龄,数字类型 Number age = new Number(2,2,10,cellFormatForBody); sheet.addCell(age); //第四列,工资,带有格式的数字类型 NumberFormat nf = new NumberFormat("#.##");//格式 WritableCellFormat wcfN = new WritableCellFormat(nf); //设置样式 wcfN.setAlignment(Alignment.CENTRE); //设置水平方向对齐方式 wcfN.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直方向对齐方式 wcfN.setWrap(true);//是否自动换行 wcfN.setBorder(Border.ALL, BorderLineStyle.THIN);//设置边框样式 wcfN.setBackground(Colour.LIGHT_GREEN);//设置背景色 Number salary = new Number(3,2,3000.1415926,wcfN); sheet.addCell(salary); //第五列,出生日期,时间类型 DateFormat df = new DateFormat("yyyy-MM-dd hh:mm:ss");//定义时间格式 WritableCellFormat wcfDF = new WritableCellFormat(df); //设置样式 wcfDF.setAlignment(Alignment.CENTRE); //设置水平方向对齐方式 wcfDF.setVerticalAlignment(VerticalAlignment.CENTRE);//设置垂直方向对齐方式 wcfDF.setWrap(true);//是否自动换行 wcfDF.setBorder(Border.ALL, BorderLineStyle.THIN);//设置边框样式 wcfDF.setBackground(Colour.LIGHT_GREEN);//设置背景色 DateTime birthday = new DateTime(4,2,new Date(),wcfDF); //添加值 sheet.addCell(birthday); //第六列,婚否,boolean类型 //Boolean marry = new Boolean(5, 2, false, cellFormatForBody); //sheet.addCell(marry); //下拉选的格式,只能从给定的数据中选择 Label lblColumn = new Label(5, 2, "请选择",cellFormatForBody);//生成一个待选择的标签 WritableCellFeatures wcf2 = new WritableCellFeatures();//待选择集合对象,这是jxl的对象 List angerlist = new ArrayList(); angerlist.add("已婚"); angerlist.add("未婚"); wcf2.setDataValidationList(angerlist);//设置jxl对象要选择的集合 lblColumn.setCellFeatures(wcf2);//设置到单元格里面去 sheet.addCell(lblColumn);//加入sheet表格中 //第七列,头像,图片类型:只支持png文件 //WritableImage():参数依次为:第几列,第几行,图片需要占据几列,图片需要占据几行,图形文件 System.out.print("图片路径:"+(savePath+ java.io.File.separator+"1.png")); WritableImage photo=new WritableImage(6,2,1,1,new File(savePath+ java.io.File.separator+"1.png")); sheet.addImage(photo); sheet.setRowView(2,400,false);//正文行高20 //11、在Excel中写入数据并关闭文件 workBook.write(); workBook.close(); } catch (Exception e) { e.printStackTrace(); } } }
说明:
1、启用了密码保护功能,所以生成的Excel不能编辑,Excel2007可以在”审阅-更改-撤销工作表保护“模块取消保护,取消时要求输入下面设置的密码123456
sheet.getSettings().setProtected(true) ;//启用保护 sheet.getSettings().setPassword("123456") ;//设置保护密码
相关推荐
**JXL库详解与Excel操作实例** JXL(Java Excel API)是一个开源的Java库,专为处理Microsoft Excel文件而设计。它允许开发者在Java应用程序中读取、写入和修改Excel工作簿,无需依赖Microsoft Office。JXL库提供了...
### Java生成Excel实例详解 #### 一、使用DisplayTag实现Excel导出 在Java开发中,经常需要将数据导出为Excel格式以便于用户下载或进一步处理。本节将详细介绍如何利用DisplayTag库来实现这一功能。 ##### 1.1 ...
本文将介绍如何使用Java的jxl.jar库来读取和导出Excel文件。jxl是一个流行的老牌Java库,它允许开发者在Java应用程序中操作Microsoft Excel文件,包括读取现有数据和写入新的数据。 1. **jxl库的引入** 在Java项目...
《JXL:Java Excel API详解》 在Java编程领域,处理Excel文件时,JXL库是一个不可或缺的工具。JXL,全称为Java Excel API,它为Java开发者提供了一种便捷的方式来读取、写入和修改Excel文件。这个帮助文档包含了JXL...
《jxl包与Excel操作详解:注释版实例与预览打印功能》 在IT行业中,数据处理和分析是常见的任务,而Excel作为最广泛使用的电子表格工具,其数据管理和展示功能强大。为了方便程序员在Java环境中操作Excel,jxl库...
《JXL库生成Excel的深度解析》 JXL是一个Java库,专用于处理Microsoft Excel文件。它提供了方便的API,使开发人员能够轻松地读取、写入和修改Excel文件。在本文中,我们将深入探讨JXL的核心类,特别是`Workbook`和`...
《使用Jxl API进行Excel操作详解》 在Java编程中,处理Excel文件是常见的任务,尤其是在数据处理、报表生成和数据分析等领域。Jxl库提供了一种高效且方便的方式来读写Excel文件,它允许开发者直接与Excel文件进行...
5. **读写机制**:JXL通过解析和生成Excel特定的二进制格式(BIFF)实现文件的读写。 ### 三、JXL中文基础使用文档 对于中文用户,JXL的中文文档提供了更易理解的指导: 1. **快速入门**:简明教程,让开发者快速...
### Java操作Excel详解:jExcelAPI与POI的对比及应用实例 在IT领域,特别是企业级应用开发中,处理电子表格数据是一项常见的需求。Java作为企业级开发的主流语言之一,提供了多种库来实现这一功能,其中最知名的莫...
接下来,我们通过两个简单的实例来了解如何使用JExcelAPI进行Excel的基础操作: 1. **创建Excel文件**: 创建Excel文件的核心在于使用`Workbook.createWorkbook()`方法来打开或创建一个新的Excel文件,然后使用`...
**JXL库详解与使用指南** JXL,全称为Java Excel API,是一个开源的Java库,主要用于读写Microsoft Excel文件。这个库为开发者提供了一种简单、高效的处理Excel电子表格的方式,无需依赖Microsoft Office或者COM...
在本篇文章中,我们将深入探讨如何使用JXL进行报表制作,并结合一个实例,来理解JXL封装类的用法,简化报表生成的过程。 首先,我们来看JXL的核心功能。JXL提供了读取、写入和修改Excel文件的能力。它支持多种Excel...
3. **生成Excel文件**:能够创建符合Excel 97格式的数据表。 4. **格式化处理**:支持字体、数字、日期等多种格式化操作。 5. **单元格样式**:支持对单元格进行阴影处理和颜色设置。 6. **编辑现有文件**:能够在...
Java实现Excel导入导出是Java开发中常见的任务,主要用于数据的批量处理和分析,尤其在数据分析、报表生成和数据备份等方面具有广泛应用。要熟练掌握这一技术,开发者需要了解Excel文件的结构,熟悉Java的文件操作,...
**JXL_API 英文版详解** JXL_API 是一个专为处理JXL(Java eXtended Library)库而设计的应用程序接口。这个API主要致力于提供高效且灵活的工具,用于读取、写入以及操作JXL格式的文件。JXL是一种广泛应用于Java...
无论是读取、分析还是生成Excel文件,Java都能胜任。开发者可以根据具体需求选择合适的库,如JXL适用于旧版的`.xls`文件,而Apache POI则支持新版的`.xlsx`文件,同时也向后兼容`.xls`格式。 掌握Java处理Excel文件...
### Oracle Form导出Excel实例解析 #### 核心知识点:Oracle Form与数据导出 Oracle Form是一个基于Oracle数据库的应用开发工具,它提供了创建、编辑和运行数据库应用程序的能力。通过Oracle Form,开发者能够设计...
3. **生成Excel文件**:可以生成符合Excel 97格式的数据表。 4. **支持格式化**:包括字体、数字、日期等格式化设置。 5. **单元格样式**:支持单元格的阴影操作和颜色设置。 6. **更新Excel文件**:可以在现有的...
1. **创建Workbook**:通过`jxl.Workbook.createWorkbook()`方法创建一个新的`WritableWorkbook`实例。 2. **创建Sheet**:通过`WritableWorkbook.createSheet(String name, int index)`方法创建一个新的`...