java excel工具类(java excel 解析 什么开源工具好)
本文目录
- java excel 解析 什么开源工具好
- JAVA 用什么工具可以对excel进行创建组的操作呢
- java导出excel里面只有几个object数据
- 怎么用JAVA来制作EXCEL报表源代码应该怎么写有专门的表格制作软件或
- 如何在java中做excel表
- 怎么用JAVA报表制作EXCEL格式报表
- java代码怎么导出excel文件
- 如何在java中引入excel表格
- 如何用java完成Excel快速的导入导出
java excel 解析 什么开源工具好
推荐使用poi,这是用的最多的,导入导出都非常方便。
JAVA 使用POI制作表格,而且都是开源的。POI是Apace公司开发的,对中文的支持比较弱一些;而JExcelAPI是韩国公司开发的,不仅对中文的支持好,而且由于是纯JAVA编写的,所以可以跨平台操作。
HSSFCell cell = row.createCell((short) 0);//设置此单元格的格式为文本,此句可以省略,Excel会自动识别。//其他还有几种常用的格式,请参考本文底部的补充部分。cell.setCellType(HSSFCell.CELL_TYPE_STRING);//此处是3.0.1版的改进之处,上一版可以直接setCellValue("Hello, World!"),//但是在3.0.1里,被deprecated了。cell.setCellValue(new HSSFRichTextString("Hello, World!"));//创建一个文件输出流,指定到C盘根目录下(C盘都有吧?)//xls是Excel97-2003的标准扩展名,2007是xlsx,目前的POI能直接生产的还是xls格式,//如果此处把扩展名改成xlsx,在用Excel2007打开此文件时会报错。
小技巧,快捷操作:可以用鼠标左键选中poi-3.0.1-FINAL-20070705.jar但不松开,拖到任务栏的Eclipse图标上等候1秒左右,Eclipse会自动弹起来,依然不松开移动到lib文件夹上,这个时候鼠标后面跟个十字符号,松开左键,就完成了复制动作。这个是对整个windows系统都好用的快捷复制方式,视源盘符和目标盘符的不同偶尔会用到Ctrl键。
JAVA 用什么工具可以对excel进行创建组的操作呢
JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯Java应用来处理Excel数据表。因为它是使用Java编写的,所以我们在Web应用中可以通过JSP、Servlet来调用API实现对Excel数据表的访问。***隐藏网址***
java导出excel里面只有几个object数据
java导出excel里面只有几个object数据,修改方法如下:1、首先复制工具类;2、然后粘贴到excel中;3、接着复制@Excel注解;4、在你要导出的实体类上面添加这个注解;5、最后导出excel,就可以显示上面的内容。
怎么用JAVA来制作EXCEL报表源代码应该怎么写有专门的表格制作软件或
可以用FineReport报表软件实现。finereport是纯java软件,类excel设计模式,是一款功能极其牛掰的表格工具,可与数据库直接对接(一般的数据库,Oracle,SqlServer,MySql,DB2,Sybase,Informix等都支持),文本数据直接导入当然也支持,企业级额应用中包括设置定时报表、自定汇总数据发送邮件、报表权限分配、决策平台搭建等,因为是专业的报表软件,功能很强大
如何在java中做excel表
很简单,这有代码:代码里面数据库访问对象自己写,用到第三方架包:poi-2.5-final-20040302.jar;poi-contrib-2.5-final-20040302.jarpoi-scratchpad-2.5-final-20040302.jar自己去网上下吧//处理类public class CountExcel { /** * 数据库操作类,自己写吧。。。 */ private OperData jdbc /*自己写*/; /** * 创建excel,返回excel的存放地址 * * @param title * 标题 * @param sql * 查询语句 * @param path * excel的存放路径(物理地址) * @param titlename * 报表的名字 * @return 路径 */ public String createExcelForAssess(String title, String sql, String path, String titlename) throws Exception { GregorianCalendar c = new GregorianCalendar(); StringBuffer excelUrl = new StringBuffer(); java.util.Date now = c.getTime(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd-HH-mm"); String strNow = format.format(now); excelUrl.append(path).append(File.separator).append("te_").append( strNow).append(".xls"); // excel的表头 Vector vcCol = new Vector(); if (title == null || title.length 《 1) return ""; for (int i = 0; i 《 title.length; i++) { vcCol.add(title); } int; int; for (int i = 0; i 《 vcCol.size(); i++) { align = 2; num = 0; } Vector vc = getqueryrest(sql); ExcelReport excel = new ExcelReport(); excel.setExcelFile(excelUrl.toString()); excel.setCols(vcCol.size()); excel.createCaption(titlename); excel.createColumnCaption(vcCol); excel.createBody(vc, align, num); excel.createPage(5); excel.createFile(); return excelUrl.toString(); } /** * 查询结果集 * * @param sql传入查询的sql语句 * @return Vector * @throws SQLException */ public Vector getqueryrest(String sql) throws SQLException { Vector vc = new Vector(); //数据库查询,返回的list里面存的是数据的pojo对象 //List list = jdbc.getQueryResult(sql); if (list != null && list.size() 》 0) { for (int i = 0; i 《 list.size(); i++) { String) list.get(i); for (int j = 0; j 《 info.length; j++) { vc.add(info); } } } return vc; }}//工具类public class ExcelReport{ /** * EXCEL文件工作区 */ private HSSFWorkbook wb; /** * EXCEL文件SHEET */ private HSSFSheet sheet; /** * EXCEL文件存放的目录路径 */ private String excelFile = ""; /** * 记录当前行数 */ private int rownum = 0; /** * 记录总共列数 */ private int cols = 0; /** * 记录每列的宽度 */ private int length; /** * 记录是否已经设定字段数 */ private boolean flag = false; /** * 设置EXCEL文件存放的目录路径,在生成标题,列头前设定 */ public void setExcelFile(String excelFile){ this.excelFile = excelFile; } /** * 设置EXCEL表的列数,在生成标题,列头前设定 */ public void setCols(int cols){ this.cols = cols; if(flag){ if(length.length 《 cols){ length = getLength(length); } }else{ length = new int; } flag = true; } /** * 第二次设定字段数,保存第一张表格每列的长度 */ private int arr){ int; for(int i=0;i《arr.length;i++){ temp; } return temp; } /** * 初始化EXCEL报表类 */ public ExcelReport(){ wb = new HSSFWorkbook(); sheet = wb.createSheet("new sheet"); } /** * 生成标题 * @param caption 标题头 */ public void createCaption(String caption){ //生成标题行 HSSFRow row = sheet.createRow((short)rownum); //生成标题单元格 HSSFCell cell = row.createCell((short)0); //生成标题单元格样式 HSSFCellStyle style = wb.createCellStyle(); //设定标题字体 HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short)14); font.setFontName("新宋体"); font.setColor(HSSFColor.BLACK.index); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); style.setFont(font); //设定标题框格式 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBottomBorderColor(HSSFColor.BLACK.index); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setLeftBorderColor(HSSFColor.BLACK.index); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setRightBorderColor(HSSFColor.BLACK.index); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setTopBorderColor(HSSFColor.BLACK.index); //设定对齐方式 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //设置cell编码解决中文高位字节截断 cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设定单元格文字合样式 cell.setCellValue(caption); cell.setCellStyle(style); for(int i=1;i《cols;i++){ cell = row.createCell((short)i); cell.setCellStyle(style); cell.setCellValue(""); } //设定合并的单元格 sheet.addMergedRegion(new Region(rownum,(short)0,rownum,(short)(cols-1))); //当前行自增 rownum++; } /** * 生成列头 * @param vc 列头内容 */ public void createColumnCaption(Vector vc){ //生成列头行 HSSFRow row = sheet.createRow((short)rownum); //生成了列头格式 HSSFCellStyle style = wb.createCellStyle(); //设定列头字体 HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short)10); font.setFontName("新宋体"); font.setColor(HSSFColor.BLACK.index); style.setFont(font); //设定标题框格式 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBottomBorderColor(HSSFColor.BLACK.index); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setLeftBorderColor(HSSFColor.BLACK.index); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setRightBorderColor(HSSFColor.BLACK.index); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setTopBorderColor(HSSFColor.BLACK.index); //设定对齐方式 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //生成列头单元格 HSSFCell cell; for(int i=0;i《vc.size();i++){ //生成标题单元格 cell = row.createCell((short)i); //设置cell编码解决中文高位字节截断 cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设定单元格文字合样式 if(vc.get(i) != null){ cell.setCellValue(vc.get(i).toString()); //记录列头的长度 if(vc.get(i).toString().getBytes().length 》 length){ length = vc.get(i).toString().getBytes().length; } }else{ cell.setCellValue(""); } cell.setCellStyle(style); } rownum++; } /** * 生成合并的列头 * @param vc 列头 * @param colnum 每列要合并的列数,并且所有要合并的列数之和等于总表格列数 */ public void mergeColumnCaption(Vector vc,int colnum){ //生成标题行 HSSFRow row = sheet.createRow((short)rownum); //生成标题单元格样式 HSSFCellStyle style = wb.createCellStyle(); //设定标题字体 HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short)10); font.setFontName("新宋体"); font.setColor(HSSFColor.BLACK.index); style.setFont(font); //设定标题框格式 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBottomBorderColor(HSSFColor.BLACK.index); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setLeftBorderColor(HSSFColor.BLACK.index); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setRightBorderColor(HSSFColor.BLACK.index); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setTopBorderColor(HSSFColor.BLACK.index); //设定对齐方式 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); int pos = 0; HSSFCell cell; for(int i=0;i《vc.size();i++){ pos = pos + colnum; cell = row.createCell((short)(pos-colnum)); //设置cell编码解决中文高位字节截断 cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设定单元格文字合样式 cell.setCellStyle(style); if(vc.get(i) == null){ cell.setCellValue(""); }else{ cell.setCellValue(vc.get(i).toString()); } for(int j=1;j《colnum;j++){ cell = row.createCell((short)(pos-colnum+j)); cell.setCellStyle(style); cell.setCellValue(""); } //设定合并的单元格 sheet.addMergedRegion(new Region(rownum,(short)(pos-colnum),rownum,(short)(pos-1))); } //当前行自增 rownum++; } /** * 合并行 * @param startrow 起始行 * @param endrow 终止行 * @param column 列数 */ public void mergeRowCaption(int startrow,int endrow,int column){ sheet.addMergedRegion(new Region(startrow,(short)column,endrow,(short)column)); } /** * 生成表格主体 * @param vc 表格内容 * @param align 每列的对齐方式,1为左,2为中,3为右,数组长度要等于表格列数 * @param num 每列的数据类型,0为字符串,1为数字 */ public void createBody(Vector vc,int num){ int rows = vc.size() / cols; //设定表格字体 HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short)10); font.setFontName("新宋体"); font.setColor(HSSFColor.BLACK.index); font.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL); HSSFRow row; HSSFCell cell; //设定数据格式 HSSFDataFormat df = wb.createDataFormat(); //生成了左对齐表格格式 HSSFCellStyle styleLeft = wb.createCellStyle(); styleLeft.setFont(font); styleLeft.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleLeft.setBottomBorderColor(HSSFColor.BLACK.index); styleLeft.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleLeft.setLeftBorderColor(HSSFColor.BLACK.index); styleLeft.setBorderRight(HSSFCellStyle.BORDER_THIN); styleLeft.setRightBorderColor(HSSFColor.BLACK.index); styleLeft.setBorderTop(HSSFCellStyle.BORDER_THIN); styleLeft.setTopBorderColor(HSSFColor.BLACK.index); styleLeft.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); styleLeft.setAlignment(HSSFCellStyle.ALIGN_LEFT); styleLeft.setDataFormat(df.getFormat("##################.00")); //生成居中对齐表格格式 HSSFCellStyle styleCenter = wb.createCellStyle(); styleCenter.setFont(font); styleCenter.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleCenter.setBottomBorderColor(HSSFColor.BLACK.index); styleCenter.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleCenter.setLeftBorderColor(HSSFColor.BLACK.index); styleCenter.setBorderRight(HSSFCellStyle.BORDER_THIN); styleCenter.setRightBorderColor(HSSFColor.BLACK.index); styleCenter.setBorderTop(HSSFCellStyle.BORDER_THIN); styleCenter.setTopBorderColor(HSSFColor.BLACK.index); styleCenter.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); styleCenter.setAlignment(HSSFCellStyle.ALIGN_CENTER); styleCenter.setDataFormat(df.getFormat("##################.00")); //生成右对齐表格格式 HSSFCellStyle styleRight = wb.createCellStyle(); styleRight.setFont(font); styleRight.setBorderBottom(HSSFCellStyle.BORDER_THIN); styleRight.setBottomBorderColor(HSSFColor.BLACK.index); styleRight.setBorderLeft(HSSFCellStyle.BORDER_THIN); styleRight.setLeftBorderColor(HSSFColor.BLACK.index); styleRight.setBorderRight(HSSFCellStyle.BORDER_THIN); styleRight.setRightBorderColor(HSSFColor.BLACK.index); styleRight.setBorderTop(HSSFCellStyle.BORDER_THIN); styleRight.setTopBorderColor(HSSFColor.BLACK.index); styleRight.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); styleRight.setAlignment(HSSFCellStyle.ALIGN_RIGHT); styleRight.setDataFormat(df.getFormat("##################.00")); for (int i = 0;i 《 rows; i++){ // 创建新行 row = sheet.createRow((short)(rownum)); for (int j = 0;j 《 cols; j++){ // 创建一个单元格 cell = row.createCell((short)j); //设置cell编码解决中文高位字节截断 cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设置cell字符类型的值 if(vc.get(i*cols+j) == null){ cell.setCellValue(""); }else{ if(num == 0){ cell.setCellValue(vc.get(i*cols+j).toString()); }else{ cell.setCellValue(Double.parseDouble(vc.get(i*cols+j).toString())); } //记录每列的长度 if(vc.get(i*cols+j).toString().getBytes().length 》 length){ length = vc.get(i*cols+j).toString().getBytes().length; } } //设定对齐方式 if(align == 1){ cell.setCellStyle(styleLeft); } if(align == 2){ cell.setCellStyle(styleCenter); } if(align == 3){ cell.setCellStyle(styleRight); } } rownum++; } } /** * 生成统计结果行 * @param stat 统计结果 * @param align 对齐方式,1为左,2为中,3为右 */ public void createStat(String stat,int align){ //生成统计结果行 HSSFRow row = sheet.createRow((short)rownum); //生成统计结果格 HSSFCell cell = row.createCell((short)0); //生成统计结果单元格样式 HSSFCellStyle style = wb.createCellStyle(); //设定统计结果字体 HSSFFont font = wb.createFont(); font.setFontHeightInPoints((short)10); font.setFontName("新宋体"); font.setColor(HSSFColor.BLACK.index); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); style.setFont(font); //设定标题框格式 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); style.setBottomBorderColor(HSSFColor.BLACK.index); style.setBorderLeft(HSSFCellStyle.BORDER_THIN); style.setLeftBorderColor(HSSFColor.BLACK.index); style.setBorderRight(HSSFCellStyle.BORDER_THIN); style.setRightBorderColor(HSSFColor.BLACK.index); style.setBorderTop(HSSFCellStyle.BORDER_THIN); style.setTopBorderColor(HSSFColor.BLACK.index); //设定对齐方式 if(align == 1){ style.setAlignment(HSSFCellStyle.ALIGN_LEFT); } if(align == 2){ style.setAlignment(HSSFCellStyle.ALIGN_CENTER); } if(align == 3){ style.setAlignment(HSSFCellStyle.ALIGN_RIGHT); } //设置cell编码解决中文高位字节截断 cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设定单元格文字合样式 cell.setCellValue(stat); cell.setCellStyle(style); for(int i=1;i《cols;i++){ cell = row.createCell((short)i); cell.setCellStyle(style); cell.setCellValue(""); } //设定合并的单元格 sheet.addMergedRegion(new Region(rownum,(short)0,rownum,(short)(cols-1))); //当前行自增 rownum++; } /** * 设置页眉 * @param header 页眉内容 * @param align 对齐方式,1为左,2为中,3为右 */ public void createHeader(String header,int align){ HSSFHeader head = sheet.getHeader(); if(align == 1){ head.setLeft(header); } if(align == 2){ head.setCenter(header); } if(align == 3){ head.setRight(header); } } /** * 设置页脚 * @param footer 页脚内容 * @param align 对齐方式,1为左,2为中,3为右 */ public void createFooter(String footer,int align){ HSSFFooter foot = sheet.getFooter(); if(align == 1){ foot.setLeft(footer); } if(align == 2){ foot.setCenter(footer); } if(align == 3){ foot.setRight(footer); } } /** * 设定页脚的页面值 * @param align 对齐方式,1为左,2为中,3为右 */ public void createPage(int align){ HSSFFooter foot = sheet.getFooter(); if(align == 1){ foot.setLeft("Page:" + HSSFFooter.page() + "/" + HSSFFooter.numPages()); } if(align == 2){ foot.setCenter("Page:" + HSSFFooter.page() + "/" + HSSFFooter.numPages()); } if(align == 3){ foot.setRight("Page:" + HSSFFooter.page() + "/" + HSSFFooter.numPages()); } } /** * 生成EXCEL文件 */ public void createFile() throws Exception{ for(int i=0;i《length.length;i++){ sheet.setColumnWidth((short)i,(short)(length*2*200)); } FileOutputStream fileOut = new FileOutputStream(excelFile); wb.write(fileOut); fileOut.close(); }}
怎么用JAVA报表制作EXCEL格式报表
可以用FineReport实现。finereport是纯java软件,类excel设计模式,可设置定时报表、自定汇总数据发送邮件,另外几乎不用自己编写代码,所以新手很容易上手使用。
java代码怎么导出excel文件
excel工具类package com.ohd.ie.product.action;import java.awt.image.BufferedImage;import java.io.*;import javax.imageio.ImageIO;import org.apache.commons.io.output.ByteArrayOutputStream;import jxl.Workbook;import jxl.format.Alignment;import jxl.format.VerticalAlignment;import jxl.write.*;import jxl.write.Number;import jxl.write.biff.RowsExceededException;public class Excel {private OutputStream os;private WritableWorkbook wwb = null;private WritableSheet ws = null;private WritableCellFormat titleCellFormat = null;private WritableCellFormat noBorderCellFormat = null;private WritableCellFormat hasBorderCellFormat = null;private WritableCellFormat hasBorderCellNumberFormat = null;private WritableCellFormat hasBorderCellNumberFormat2 = null;private WritableImage writableImage=null;private int r;public Excel(OutputStream os){this.os = os;r = -1;try {wwb = Workbook.createWorkbook(os);//创建工作表ws = wwb.createSheet("sheet1",0);//设置表头字体,大小,加粗titleCellFormat = new WritableCellFormat();titleCellFormat.setAlignment(Alignment.CENTRE);titleCellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);//自动换行titleCellFormat.setWrap(true);titleCellFormat.setFont(new WritableFont(WritableFont.createFont("宋体"),12,WritableFont.BOLD));titleCellFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);//设置表格字体,大小----无边框noBorderCellFormat = new WritableCellFormat();noBorderCellFormat.setAlignment(Alignment.CENTRE);noBorderCellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);noBorderCellFormat.setFont(new WritableFont(WritableFont.createFont("宋体"),12));//设置表格字体,大小----有边框hasBorderCellFormat = new WritableCellFormat();hasBorderCellFormat.setAlignment(Alignment.CENTRE);hasBorderCellFormat.setVerticalAlignment(VerticalAlignment.CENTRE);hasBorderCellFormat.setFont(new WritableFont(WritableFont.createFont("宋体"),12));hasBorderCellFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);//设置表格字体,大小----有边框(小数)NumberFormat nf = new NumberFormat("#0.00");hasBorderCellNumberFormat = new WritableCellFormat(nf);hasBorderCellNumberFormat.setAlignment(Alignment.CENTRE);hasBorderCellNumberFormat.setVerticalAlignment(VerticalAlignment.CENTRE);hasBorderCellNumberFormat.setFont(new WritableFont(WritableFont.createFont("宋体"),12));hasBorderCellNumberFormat.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);//设置表格字体,大小----有边框(整数)NumberFormat nf2 = new NumberFormat("#0");hasBorderCellNumberFormat2 = new WritableCellFormat(nf2);hasBorderCellNumberFormat2.setAlignment(Alignment.CENTRE);hasBorderCellNumberFormat2.setVerticalAlignment(VerticalAlignment.CENTRE);hasBorderCellNumberFormat2.setFont(new WritableFont(WritableFont.createFont("宋体"),12));hasBorderCellNumberFormat2.setBorder(jxl.format.Border.ALL, jxl.format.BorderLineStyle.THIN);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}/**** @param content 内容* @param c 列* @param style 样式* @param isNewLine 是否换行* @param mergeType 合并类型* @param mergeCount 合并个数* @param width 单元格宽*/public void setExcelCell(String content,int c,int style,boolean isNewLine,int mergeType,int mergeCount,int width){try {////////////////////////////////////////////////////////////////////////////////////////////////////////////////////报表内容////////////////////////////////////////////////////////////////////////////////////////////////////////////////////if(isNewLine){r++;}WritableCell l = null;if(style == 1){l = new Label(c,r,content,titleCellFormat);}else if(style == 2){l = new Label(c,r,content,noBorderCellFormat);}else if(style == 3){l = new Label(c,r,content,hasBorderCellFormat);}else if(style == 4){l = new Number(c,r,Double.parseDouble(content),hasBorderCellNumberFormat);}else if(style == 5){l = new Number(c,r,Integer.parseInt(content),hasBorderCellNumberFormat2);}ws.addCell(l);if(width != 0){ws.setColumnView(c,width);}//veryhuo,comif(mergeType == 1){//x 轴方向ws.mergeCells(c, r, c+mergeCount-1 , r);}else if(mergeType == 2){//y 轴方向ws.mergeCells(c, r, c, r+mergeCount-1);}if(isNewLine){ws.setRowView(r, 350);if(style == 1 && r != 0){ws.setRowView(r, 900);}else{ws.setRowView(r, 350);}}//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////} catch (Exception e) {System.out.println(e.toString());}}public void setExcelCellEx(String content,int c,int style,boolean isNewLine,int mergeType,int mergeCount,int width,int row){try {////////////////////////////////////////////////////////////////////////////////////////////////////////////////////报表内容////////////////////////////////////////////////////////////////////////////////////////////////////////////////////if(isNewLine){r++;}WritableCell l = null;if(style == 1){l = new Label(c,r,content,titleCellFormat);}else if(style == 2){l = new Label(c,r,content,noBorderCellFormat);}else if(style == 3){if(content.indexOf(".jpg")!=-1 ||content.indexOf(".JPG")!=-1){File outputFile=null;File imgFile =new File(content);if(imgFile.exists()&&imgFile.length()》0){BufferedImage input=null;try {input = ImageIO.read(imgFile);} catch (Exception e) {e.printStackTrace();}if(input!=null){String path=imgFile.getAbsolutePath();outputFile = new File(path.substring(0,path.lastIndexOf(’.’)+1)+"png");ImageIO.write(input, "PNG", outputFile);if(outputFile.exists()&&outputFile.length()》0){ws.setRowView(row,2000);//ws.setColumnView(8, 10);writableImage = new WritableImage(c+0.1, row+0.1, 0.8, 0.8, outputFile);ws.addImage(writableImage);l = new Label(c,r,"",hasBorderCellFormat);}}}}else{l = new Label(c,r,content,hasBorderCellFormat);}}else if(style == 4){l = new Number(c,r,Double.parseDouble(content),hasBorderCellNumberFormat);}else if(style == 5){l = new Number(c,r,Integer.parseInt(content),hasBorderCellNumberFormat2);}ws.addCell(l);if(width != 0){ws.setColumnView(c,width);}if(mergeType == 1){//x 轴方向ws.mergeCells(c, r, c+mergeCount-1 , r);}else if(mergeType == 2){//y 轴方向ws.mergeCells(c, r, c, r+mergeCount-1);}if(isNewLine){ws.setRowView(r, 350);if(style == 1 && r != 0){ws.setRowView(r, 900);}else{ws.setRowView(r, 350);}}} catch (Exception e) {System.out.println(e.toString());}}public void setRowHeight(int val){try {ws.setRowView(r, val);} catch (RowsExceededException e) {e.printStackTrace();}}public void getExcelResult(){try {wwb.write();} catch (Exception e) {System.out.println(e.toString());}finally{if(wwb != null){try {wwb.close();if(os != null){os.close();}} catch (WriteException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}}}需要的jar包:jxl.jar
如何在java中引入excel表格
这有两个方法,一个是POI,一个是JXL,通过楼上几位大侠的答案,我想你也了解了。在这就不说这一块了。我想给你说说这两者的比较和应用领域,楼主根据自己的需求确定使用某种技术。当数据量较大时(超过1万行),无论是时间消耗还是内存消耗,JXL均优于POI。 根据最终的测试结果,估计得出来不同的结论可能是采用的版本不同所致(还没研究JXL及POI的源码)。 具体情况请参见此文及相关下方我测试的Java源码及测试数据:***隐藏网址***我的测试环境:jxl-2.4.2.jarpoi-3.1.jarMyEclipse8.0 Run JVM设置:-Xms256m -Xmx512m机器:4G、P7分别准备了1千、1万、5万行的Excel,各为58列。(此测试代码稍加整理即可做为Excel导入工具类)加载时间(ms) 总耗时(ms) 总消耗内存量(M) 1千条:746K POI 572 609 8JXL 296 422 12JXL-Close 172 329 -2 1万条:12.8M POI 4847 5066 91JXL 634 2236 135 1万条:7.3M POI 1266 2019 73JXL 488 1159 70JXL-Close 343 1107 2 5万条:36.8M POI 7556 8633 208JXL 2319 5581 96JXL-Close 2543 6210 -201可以看出 1.加载速度及总耗时,POI3.2始终劣于JXL2.4 2.后续解析速度上(没列,是总耗时减去加载时间),POI3.2总体上优于JXL2.4 3.1万条数据以上时,消耗内存量方面,POI3.2劣于JXL2.4 两点说明: 1.这里面有个有趣的细节:那个1万条12.8M的文件是我根据那个5万条的Excel选中后4万行按Del生成的,后来发现那4万行并没有真正删除,还有,是空行而已。后选中后右键删除(试了几次后才成功),总算真正清除了,体积也缩小了很多,从实验看来,空白格不但对Excel体积有影响,对程序读取影响也很大。程序中POI方式读取中设计了对空白行的判断,但加载还是多花了时间; 2.标识为JXL的数据,为代码中未加入WorkBook.close()方法时试验(注意代码中注释掉的wb.close()一行);而JXL-Close则添加了close方法调用,可以看出时间消耗未明显增加,但内存消耗却大大降低(负的)。刚看了反编代码,果然,close方法中调用了System.gc()。根据 haotangyu的代码进行的测试结果,还是上面那些文件,同样可以得出以上第1、2条结论:加载时间(ms) 总耗时(ms) 1千条:746K POI 499 515JXL 203 359 1万条:7.3M POI 1716 1731JXL 390 1108 5万条:36.8M POI 7878 7925JXL 2309 5711***隐藏网址***
如何用java完成Excel快速的导入导出
导出现在我们定义好对象了,如何导出Excel --ExcelExportUtil 这个导出工具类public void testExportExcel_1() throws Exception {ExportParams params = new ExportParams("0328课程表", "日期:2016-03-28", "六年一班");Workbook workbook = ExcelExportUtil.exportExcel(params, CourseEntity.class,courseList);FileOutputStream fos = new FileOutputStream("D:/excel/0328课程表.xls");workbook.write(fos);fos.close();}我们只要把我们定义好的对象的class传进去,以及对象的集合,Easypoi就可以返回一个Excel的workbook了,同时Easypoi是兼容03版本office和07版本office,你要穿个参数指定下类型及可以了,是不是不是比我们自己写代码简单多了,最少只需要2行代码就可以完成我们的office操作了导入我们把导出写完了,导入是不是很复杂呢,也不是,导入也是同样简单,定时实体和上面定义的方式一样导入是用导入工具类ImportParams params = new ImportParams();params.setHeadRows(2);List《CourseEntity》 list = ExcelImportUtil.importExcel(inputStream, CourseEntity.class, params);定义下表头的参数,然后把流传入进去就可以得到我们的对象列表是不是so easy.赶快来使用吧
更多文章:
安装java时配置环境变量失败(JAVA环境变量失败是什么原因啊)
2024年7月21日 16:11
firefox十大神级插件(求大家介绍一下Firefox必备的插件)
2024年8月22日 11:35
c语言运算符重载(c语言问题:下图是什么意思赋值运算符重载格式不是这样啊)
2024年8月8日 02:50
matlab输出语句fprintf(关于MATLAB数据结果的输出问题(fprintf))
2023年6月5日 10:20
extjs布局(Extjs 怎么显示一行多列如下图所示,自定义表格布局)
2024年7月23日 03:30
javascript date对象(javascript怎样比较两个时间的大小)
2024年6月21日 11:00
get请求url带json(求一个vbnet post/get 发送数据和处理返回json的例子灌水的路过)
2024年9月6日 03:15
高中信息技术vb大题(关于高中信息技术考试,VB 多媒体,excel)
2024年7月15日 04:32
浮点数为什么有校位是7位(为什么双精度有16位有效数字,单精度有7位)
2024年9月4日 17:25