java excel工具类(java excel 解析 什么开源工具好)

2024-06-28 00:27:18 5

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 excel工具类(java excel 解析 什么开源工具好)

本文编辑:admin

更多文章:


insert键在哪个位置(电脑中insert键在哪里)

insert键在哪个位置(电脑中insert键在哪里)

本文目录电脑中insert键在哪里insert键在哪里笔记本insert键在哪笔记本insert键在哪里笔记本insert键怎么按insert是哪个键手机insert键在哪里电脑中insert键在哪里Insert键是切换输入模式的功能键。按

2023年11月11日 10:20

安装java时配置环境变量失败(JAVA环境变量失败是什么原因啊)

安装java时配置环境变量失败(JAVA环境变量失败是什么原因啊)

本文目录JAVA环境变量失败是什么原因啊java环境变量设置失败都按照教程安装的,但是就是不行事为什么啊 配置JAVA环境变量总是失败,怎么办win10系统java环境变量设置失败java环境变量怎么设置不成功我的JAVA环境变量配置不成功

2024年7月21日 16:11

firefox十大神级插件(求大家介绍一下Firefox必备的插件)

firefox十大神级插件(求大家介绍一下Firefox必备的插件)

本篇文章给大家谈谈firefox十大神级插件,以及求大家介绍一下Firefox必备的插件对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。本文目录求大

2024年8月22日 11:35

c语言运算符重载(c语言问题:下图是什么意思赋值运算符重载格式不是这样啊)

c语言运算符重载(c语言问题:下图是什么意思赋值运算符重载格式不是这样啊)

各位老铁们好,相信很多人对c语言运算符重载都不是特别的了解,因此呢,今天就来为大家分享下关于c语言运算符重载以及c语言问题:下图是什么意思赋值运算符重载格式不是这样啊的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2024年8月8日 02:50

windows11菜单栏(win11怎么初始化最干净)

windows11菜单栏(win11怎么初始化最干净)

本文目录win11怎么初始化最干净为什么windows 11菜单框上的隐藏我按的是正方形的win11的任务栏是什么样的windows11任务栏不见了怎么办win11任务管理器怎么打开windows11下面不显示任务栏windows11系统右

2024年7月20日 05:13

不受国内限制的浏览器app(手机哪个浏览器不受网站限制)

不受国内限制的浏览器app(手机哪个浏览器不受网站限制)

本文目录手机哪个浏览器不受网站限制必应浏览器电脑版怎么下载什么浏览器不被限制什么浏览器看网站不受限制什么手机浏览器最好用(没太多限制)苹果手机用什么浏览器不受限制不受网警限制的浏览器有哪些什么浏览器不受限制手机哪个浏览器不受网站限制UC浏览

2024年7月13日 09:05

matlab输出语句fprintf(关于MATLAB数据结果的输出问题(fprintf))

matlab输出语句fprintf(关于MATLAB数据结果的输出问题(fprintf))

本文目录关于MATLAB数据结果的输出问题(fprintf)matlab中fprintf输出整型matlab中的fprintf(’y[%2.0f]=%12.6f’,n,y1)是什么意思,详细一些matlab里fprintf输出的问题:mat

2023年6月5日 10:20

个人主页ip属地(ip地址是本人的位置吗)

个人主页ip属地(ip地址是本人的位置吗)

大家好,今天小编来为大家解答以下的问题,关于个人主页ip属地,ip地址是本人的位置吗这个很多人还不知道,现在让我们一起来看看吧!本文目录ip地址是本人的位置吗怎么查看自己ip属地微博ip属地怎么确定微博IP地址属于个人信息吗 微博ip属地怎

2024年6月27日 02:26

extjs布局(Extjs 怎么显示一行多列如下图所示,自定义表格布局)

extjs布局(Extjs 怎么显示一行多列如下图所示,自定义表格布局)

这篇文章给大家聊聊关于extjs布局,以及Extjs 怎么显示一行多列如下图所示,自定义表格布局对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录Extjs 怎么显示一行多列如下图所示,自定义表格布局Extjs布局问题,将性别和

2024年7月23日 03:30

短视频去水印下载(抖音话题页里的视频怎么批量去水印下载)

短视频去水印下载(抖音话题页里的视频怎么批量去水印下载)

本文目录抖音话题页里的视频怎么批量去水印下载如何下载抖音作者短视视频要去水印腾讯短视频怎么下载去水印如何批量下载无水印抖音视频抖音短视频如何去水印保存抖音、快手怎么一键批量去水印下载短视频抖音话题页里的视频怎么批量去水印下载1、下载打开天图

2024年6月6日 07:20

string函数库(c++ 有关string函数)

string函数库(c++ 有关string函数)

本文目录c++ 有关string函数如何 在linux下查看string库下的所有函数c++string类库函数中char变量名叫什么c++ 有关string函数这个是string类的使用教程,可以参考一下之所以抛弃char*的字符串而选用

2024年7月19日 08:35

javascript date对象(javascript怎样比较两个时间的大小)

javascript date对象(javascript怎样比较两个时间的大小)

本文目录javascript怎样比较两个时间的大小javascript怎么实现当天日期javascript中的Date对象的set方法怎么设置时间Js如何操作date对象javascript 分别读取时间中的年、月、日、时、分、秒的方法ja

2024年6月21日 11:00

get请求url带json(求一个vbnet post/get 发送数据和处理返回json的例子灌水的路过)

get请求url带json(求一个vbnet post/get 发送数据和处理返回json的例子灌水的路过)

这篇文章给大家聊聊关于get请求url带json,以及求一个vbnet post/get 发送数据和处理返回json的例子灌水的路过对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录求一个vbnet post/get 发送数据和

2024年9月6日 03:15

学linux有什么作用(学linux有何好处)

学linux有什么作用(学linux有何好处)

本文目录学linux有何好处学会linux有什么用学习Linux能做什么学习 Linux 有哪些好处学linux有什么用学Linux有什么用学习Linux有用吗linux是什么啊有什么作用学习linux有什么用学linux有何好处学linu

2024年7月16日 23:36

高中信息技术vb大题(关于高中信息技术考试,VB 多媒体,excel)

高中信息技术vb大题(关于高中信息技术考试,VB 多媒体,excel)

本文目录关于高中信息技术考试,VB 多媒体,excel一道高中VB题,求解a()什么意思问一道高中信息技术题(vb程序语言) 已知a=“A“:b=“B“,则表达式a>b的逻辑值结果是高中VB题目,求详解求并联电阻总阻值VB题(高中学考难度)

2024年7月15日 04:32

浮点数为什么有校位是7位(为什么双精度有16位有效数字,单精度有7位)

浮点数为什么有校位是7位(为什么双精度有16位有效数字,单精度有7位)

“浮点数为什么有校位是7位”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看浮点数为什么有校位是7位(为什么双精度有16位有效数字,单精度有7位)!本文目录为什么双精度有16位有效数字,单精度有7位单精度浮点数的精度为什么是7

2024年9月4日 17:25

vue动态获取不到滚动条高度(vue滚动条消失)

vue动态获取不到滚动条高度(vue滚动条消失)

本文目录vue滚动条消失vue 获取元素高度给vue,element-ui中的table添加动态的高度vue中获取滚动高度或指定滚动到某位置vue-scroll的高度设置vue3组件滚动条设置不了vue等待所有子组件渲染完成后再设置父组件的

2024年7月19日 22:37

jvm回收机制的三大算法(jvm的垃圾回收机制详解)

jvm回收机制的三大算法(jvm的垃圾回收机制详解)

这篇文章给大家聊聊关于jvm回收机制的三大算法,以及jvm的垃圾回收机制详解对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录jvm的垃圾回收机制详解JVM垃圾收集机制5、垃圾回收机制三色标记法与垃圾回收器(CMS、G1)jvm

2024年8月2日 03:20

苹果cms搭建教程(苹果cms如何对接微信)

苹果cms搭建教程(苹果cms如何对接微信)

本文目录苹果cms如何对接微信苹果cms模板如何安装苹果cms10怎么安装苹果cms如何对接微信1、首先登录苹果的cms后台,升级苹果cms为最新版本。2、接下来打开微信公众平台并登陆,登陆后点击右下角公众号基本配置。3、进入后按提示所填写

2023年9月24日 16:40

applet方法(java中如何实现Applet流程方法)

applet方法(java中如何实现Applet流程方法)

本文目录java中如何实现Applet流程方法调用applet方法添加按钮失败当一个Applet所在的Web页面被其他页面覆盖后,不可能被调用的Applet方法是(  )js 调用applet方法applet类中init()方法的功能App

2024年7月14日 01:33

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1730
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1155
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索