台州网站制作策划,网络游戏的利与弊,网站改版后的内容,秦皇岛市住房和城乡建设局官网使用JXL组件操作Excel和导出文件 原文链接#xff1a;http://tianweili.github.io/blog/2015/01/29/use-jxl-produce-excel/ 前言#xff1a;这段时间参与的项目要求做几张Excel报表#xff0c;由于项目框架使用了jxl组件#xff0c;所以把jxl组件的详细用法归纳总结一下。… 使用JXL组件操作Excel和导出文件 原文链接http://tianweili.github.io/blog/2015/01/29/use-jxl-produce-excel/ 前言这段时间参与的项目要求做几张Excel报表由于项目框架使用了jxl组件所以把jxl组件的详细用法归纳总结一下。 1、简介 jxl是一个韩国人写的java操作excel的工具, 在开源世界中有两套比较有影响的API可供使用一个是POI一个是jExcelAPI。其中jExcelAPI功能相对POI比较弱一点。但jExcelAPI对中文支持非常好API是纯Java的并不依赖Windows系统即使运行在Linux下它同样能够正确的处理Excel文件。另外需要说明的是这套API对图形和图表的支持很有限而且仅仅识别PNG格式。 2、搭建环境 网上下载jxl.jar包然后导入工程项目lib中即可使用。 3、基本操作 1、创建文件 以下实例是生成一个名为“test.xls”的Excel文件其中第一个工作表被命名为“第一页”。编译执行后会产生一个Excel文件。 // 生成Excel的类
import java.io.File;import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;public class CreateExcel {public static void main(String args[]) {try {// 打开文件WritableWorkbook book Workbook.createWorkbook(new File(c:/test.xls));// 生成名为“第一页”的工作表参数0表示这是第一页WritableSheet sheet book.createSheet( 第一页 , 0);// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0)// 以及单元格内容为testLabel label new Label(0, 0, test );// 将定义好的单元格添加到工作表中sheet.addCell(label);// 生成一个保存数字的单元格必须使用Number的完整包路径否则有语法歧义。//单元格位置是第二列第一行值为123.456jxl.write.Number number new jxl.write.Number(1, 0, 123.456);sheet.addCell(number);// 写入数据并关闭文件book.write();book.close();} catch (Exception e) {System.out.println(e);}}
} 2、单元格操作 Excel中很重要的一部分是对单元格的操作比如行高、列宽、单元格合并等所幸jExcelAPI提供了这些支持。这些操作相对比较简单下面只介绍一下相关的API。 合并单元格 合并既可以是横向的也可以是纵向的。合并后的单元格不能再次进行合并否则会触发异常。 // 方法作用是从(m,n)到(p,q)的单元格全部合并
WritableSheet.mergeCells( int m, int n, int p, int q);// 合并第1列第1行到第3列第4行的所有单元格
sheet.mergeCells(0, 0, 2, 3);// 先合并单元格再添加内容。并且定义的列行方位在合并的单元格第一个列行方位否则添加不上内容如下所示
Label label new Label(0, 0, 测试 );
sheet.addCell(label); 行高和列宽 // 作用是指定第i1行的高度
WritableSheet.setRowView( int i, int height);// 将第一行的高度设为200
sheet.setRowView(0, 200);// 作用是指定第i1列的宽度
WritableSheet.setColumnView( int i, int width);// 将第一列的宽度设为30
sheet.setColumnView(0, 30); 3、数据格式化 字串格式化 字符串的格式化涉及到的是字体、粗细、字号等元素这些功能主要由WritableFont和WritableCellFormat类来负责。 WritableFont有非常丰富的构造子方法供不同情况下使用jExcelAPI的java-doc中有详细列表这里不再列出。 WritableCellFormat类非常重要通过它可以指定单元格的各种属性后面的单元格格式化中会有更多描述。 //字体样式宋体11号粗体
WritableFont font1 new WritableFont(WritableFont.createFont(宋体), 11, WritableFont.BOLD);
WritableCellFormat format1 new WritableCellFormat(font1);
Label label new Label( 0 , 0 , test, format1); 对齐方式 在WritableCellFormat类中还有一个很重要的方法是指定数据的对齐方式比如针对我们上面的实例可以指定 // 把水平对齐方式指定为居中
format1.setAlignment(jxl.format.Alignment.CENTRE);
// 把垂直对齐方式指定为居中
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); 4、读取文件 // 读取Excel的类
import java.io.File;import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;public class ReadExcel {public static void main(String args[]) {try {Workbook book Workbook.getWorkbook(new File(c:/test.xls));// 获得第一个工作表对象Sheet sheet book.getSheet(0);// 得到第一列第一行的单元格Cell cell sheet.getCell(0, 0);String contents cell.getContents();//得到单元格内容System.out.println(contents);book.close();} catch (Exception e) {System.out.println(e);}}
} 程序的输出结果是test。 Cell接口的方法还可以获取单元格行、列位置单元格是否隐藏等属性。具体的参考jxl的API。 5、修改文件 修改Excel文件除了打开文件的方式不同之外其他与创建Excel是一样的。 // 修改Excel的类
import java.io.File;import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;public class UpdateExcel {public static void main(String args[]) {try {// 获得Excel文件Workbook wb Workbook.getWorkbook(new File(c:/test.xls));// 打开一个文件的副本并且指定数据写回到原文件WritableWorkbook book Workbook.createWorkbook(new File(c:/test.xls), wb);//修改原工作表数据WritableSheet sheet1 book.getSheet(0);sheet1.addCell(new Label(0, 0, 覆盖原来的test));// 添加一个新工作表WritableSheet sheet2 book.createSheet( 第二页 , 1);sheet2.addCell(new Label(0, 0, 第二页的测试数据 ));book.write();book.close();} catch (Exception e) {System.out.println(e);}}
} 4、导出文件 附上一个导出文件例子。 JS代码 $( function() {/** 报表导出按钮 */$( #exportBtn ).click( function() {if( !$( #frm ).validationEngine( validate ) )return false;$( #frm )[ 0 ].action ${ctx }/exportAction.do?mexportExcel;$( #frm )[ 0 ].submit();$( this ).attr( disabled, true );window.setTimeout( function() {document.getElementById( exportBtn ).disabled false;}, 5000 );} );
} ); JAVA代码 /** 根据浏览器类型转换为当前浏览器支持的中文*/
String fileName Excel工作表;/** header 浏览器key */
String userAgent request.getHeader(USER-AGENT).toUpperCase();
if (userAgent ! null userAgent.length() ! 0 fileName ! null fileName.length() ! 0) {/** header IE */if ( -1 ! userAgent.indexOf(MSIE) )fileName URLEncoder.encode(fileName, UTF-8);/** header Mozilla */else if ( -1 ! userAgent.indexOf(MOZILLA) )fileName new String(fileName.getBytes(), ISO8859-1);/** header Safari */else if ( -1 ! userAgent.indexOf(SAFARI) )fileName new String( fileName.getBytes(), ISO8859-1);/** header Opera */else if ( -1 ! userAgent.indexOf(OPERA) )fileName new String( fileName.getBytes(), ISO8859-1);/** header 其它内核浏览器 */elsefileName new String( fileName.getBytes(), ISO8859-1);
}response.setCharacterEncoding(UTF-8);
response.setContentType(application/vnd.ms-excel);
response.setHeader(Content-disposition, new StringBuffer(attachment).append( ;filename ).append( fileName ).append(.xls).toString() );WritableWorkbook book Workbook.createWorkbook(response.getOutputStream());
WritableSheet sheet book.createSheet(Excel工作表, 0);//...book.write();
book.close(); 原文链接http://tianweili.github.io/blog/2015/01/29/use-jxl-produce-excel/转载于:https://www.cnblogs.com/hellojava/archive/2013/01/06/2843710.html