导出excel文件java|java导出数据到excel的几种方法的比较

导出excel文件java|java导出数据到excel的几种方法的比较的第1张示图

Ⅰ java怎么实现选择导出excel的功能

import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class CreateSimpleExcelToDisk {/*** @功能:手工构建一个简单格式的Excel*/private static List<Student> getStudent() throws Exception{List list = new ArrayList();SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd");Student user1 = new Student(1, "张三", 16, df.parse("1997-03-12"));Student user2 = new Student(2, "李四", 17, df.parse("1996-08-12"));Student user3 = new Student(3, "王五", 26, df.parse("1985-11-12"));list.add(user1);list.add(user2);list.add(user3);return list;}public static void main(String[] args) throws Exception{// 第一步,创建一个webbook,对应一个Excel文件HSSFWorkbook wb = new HSSFWorkbook();// 第二步,在webbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet("学生表一");// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRow row = sheet.createRow((int) 0);// 第四步,创建单元格,并设置值表头 设置表头居中HSSFCellStyle style = wb.createCellStyle();style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式HSSFCell cell = row.createCell((short) 0);cell.setCellValue("学号");cell.setCellStyle(style);cell = row.createCell((short) 1);cell.setCellValue("姓名");cell.setCellStyle(style);cell = row.createCell((short) 2);cell.setCellValue("年龄");cell.setCellStyle(style);cell = row.createCell((short) 3);cell.setCellValue("生日");cell.setCellStyle(style);// 第五步,写入实体数据 实际应用中这些数据从数据库得到,List list = CreateSimpleExcelToDisk.getStudent();for (int i = 0; i < list.size(); i++){row = sheet.createRow((int) i + 1);Student stu = (Student) list.get(i);// 第四步,创建单元格,并设置值row.createCell((short) 0).setCellValue((double) stu.getId());row.createCell((short) 1).setCellValue(stu.getName());row.createCell((short) 2).setCellValue((double) stu.getAge());cell = row.createCell((short) 3);cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu.getBirth()));}// 第六步,将文件存到指定位置try{FileOutputStream fout = new FileOutputStream("E:/students.xls");wb.write(fout);fout.close();}catch (Exception e){e.printStackTrace();}} }

Ⅱ 如何用JAVA导出Excel(使用POI)

response.setContentType("bin");response.setHeader("Content-disposition","attachment;filename=test.xls");你在servlet里面设置响应头为这样,然后就能够实现下载了,然后使用输出流进行输出下载…..还有问题的话就问.. 你要是想全部代码都写的话..加我扣扣 1195391953..

Ⅲ java怎样输出excel文件

//java生成简单的Excel文件packagebeans.excel;importjava.io.IOException;importjava.io.OutputStream;importjxl.Workbook;importjxl.write.Label;importjxl.write.WritableSheet;importjxl.write.WritableWorkbook;importjxl.write.WriteException;publicclassSimpleExcelWrite{publicvoidcreateExcel(OutputStreamos)throwsWriteException,IOException{//创建工作薄WritableWorkbookworkbook=Workbook.createWorkbook(os);//创建新的一页WritableSheetsheet=workbook.createSheet("FirstSheet",0);//创建要显示的内容,创建一个单元格,第一个参数为列坐标,第二个参数为行坐标,第三个参数为内容Labelxuexiao=newLabel(0,0,"学校");sheet.addCell(xuexiao);Labelzhuanye=newLabel(1,0,"专业");sheet.addCell(zhuanye);Labeljingzhengli=newLabel(2,0,"专业竞争力");sheet.addCell(jingzhengli);Labelqinghua=newLabel(0,1,"清华大学");sheet.addCell(qinghua);Labeljisuanji=newLabel(1,1,"计算机专业");sheet.addCell(jisuanji);Labelgao=newLabel(2,1,"高");sheet.addCell(gao);Labelbeida=newLabel(0,2,"北京大学");sheet.addCell(beida);Labelfalv=newLabel(1,2,"法律专业");sheet.addCell(falv);Labelzhong=newLabel(2,2,"中");sheet.addCell(zhong);Labelligong=newLabel(0,3,"北京理工大学");sheet.addCell(ligong);Labelhangkong=newLabel(1,3,"航空专业");sheet.addCell(hangkong);Labeldi=newLabel(2,3,"低");sheet.addCell(di);//把创建的内容写入到输出流中,并关闭输出流workbook.write();workbook.close();os.close();}}

Ⅳ java代码怎么导出excel文件

excel工具类package com.ohd.ie.proct.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

1./**

* 出险信息导出到excel(fc)

* @param mapping

* @param form

* @param request

* @param response

* @throws IOException

*/

public void exportActoExcel(ActionMapping mapping, ActionForm form ,

HttpServletRequest request,HttpServletResponse response) throws IOException {

ActionErrors errors = new ActionErrors();

AcExcelBusi acBusi = new AcExcelBusi();

AccidentRecordForm arForm= (AccidentRecordForm) form;

AccidentRecordBusi arBusi = new AccidentRecordBusi();

// ////查询条件

FwUsers sessUser = (FwUsers)request.getSession().getAttribute(ConstValues.SESS_USER_MANAGE);

Map<String,Object> cisMap = arBusi.getTodoPageList(arForm,sessUser,errors);

List AcList = null;// 当页的记录

if (null != cisMap) {

AcList = (List) cisMap.get("list");

}

//导出excel的路径、文件名

String uuid = UUID.create("exp");

String path = request.getSession().getServletContext().getRealPath("/") + ConstValues.EXP_PATH_EXCEL + uuid + ".xls";

acBusi.exprotAcExcel(AcList, path,request);

response.sendRedirect("stdownload.jsp?path=" + path );

}

Ⅵ java怎么导出excel表格

通过这个例子,演示以下如何用java生成excel文件:import org.apache.poi.hssf.usermodel.*;import java.io.FileOutputStream;import java.io.IOException;publicclass CreateCells{publicstaticvoid main(String[] args)throws IOException{HSSFWorkbook wb = new HSSFWorkbook();//建立新HSSFWorkbook对象HSSFSheet sheet = wb.createSheet("new sheet");//建立新的sheet对象// Create a row and put some cells in it. Rows are 0 based.HSSFRow row = sheet.createRow((short)0);//建立新行// Create a cell and put a value in it.HSSFCell cell = row.createCell((short)0);//建立新cellcell.setCellValue(1);//设置cell的整数类型的值// Or do it on one line.row.createCell((short)1).setCellValue(1.2);//设置cell浮点类型的值row.createCell((short)2).setCellValue("test");//设置cell字符类型的值row.createCell((short)3).setCellValue(true);//设置cell布尔类型的值HSSFCellStyle cellStyle = wb.createCellStyle();//建立新的cell样式cellStyle.setDataFormat(HSSFDataFormat.getFormat("m/d/yy h:mm"));//设置cell样式为定制的日期格式HSSFCell dCell =row.createCell((short)4);dCell.setCellValue(new Date());//设置cell为日期类型的值dCell.setCellStyle(cellStyle); //设置该cell日期的显示格式HSSFCell csCell =row.createCell((short)5);csCell.setEncoding(HSSFCell.ENCODING_UTF_16);//设置cell编码解决中文高位字节截断csCell.setCellValue("中文测试_Chinese Words Test");//设置中西文结合字符串row.createCell((short)6).setCellType(HSSFCell.CELL_TYPE_ERROR);//建立错误cell// Write the output to a fileFileOutputStream fileOut = new FileOutputStream("workbook.xls");wb.write(fileOut);fileOut.close();}}

Ⅶ 如何导出生成excel文件 java

在编程中经常需要使用到表格(报表)的处理主要以Excel表格为主。下面给出用java写入数据到excel表格方法: 1.添加jar文件java导入导出Excel文件要引入jxl.jar包,最关键的是这套API是纯Java的,并不依赖Windows系统,即使运行在Linux下,它同样能够正确的处理Excel文件。下载地址:http://www.andykhan.com/jexcelapi/2.jxl对Excel表格的认识可以参见http://www.cnblogs.com/xudong-bupt/archive/2013/03/19/2969997.html3.java代码根据程序中的数据生成上述图片所示的t.xls文件?1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 import java.io.File;import jxl.*;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook; public class Writer_excel{ public static void main(String[] args) { //标题行 String title[]={"角色","编号","功能名称","功能描述"}; //内容 String context[][]={{"UC11","设置课程","创建课程"}, {"UC12","设置学生名单","给出与课程关联的学生名单"}, {"UC21","查看学生名单",""}, {"UC22","查看小组信息","显示助教所负责的小组列表信息"} }; //操作执行 try { //t.xls为要新建的文件名 WritableWorkbook book= Workbook.createWorkbook(new File("t.xls")); //生成名为“第一页”的工作表,参数0表示这是第一页 WritableSheet sheet=book.createSheet("第一页",0); //写入内容 for(int i=0;i<4;i++) //title sheet.addCell(new Label(i,0,title[i])); for(int i=0;i<4;i++) //context { for(int j=0;j<3;j++) { sheet.addCell(new Label(j+1,i+1,context[i][j])); } } sheet.addCell(new Label(0,1,"教师")); sheet.addCell(new Label(0,3,"助教")); /*合并单元格.合并既可以是横向的,也可以是纵向的 *WritableSheet.mergeCells(int m,int n,int p,int q); 表示由(m,n)到(p,q)的单元格组成的矩形区域合并 * */ sheet.mergeCells(0,1,0,2); sheet.mergeCells(0,3,0,4); //写入数据 book.write(); //关闭文件 book.close(); } catch(Exception e) { } }

Ⅷ 怎么用java实现导出excel

/***@authorliuwu*Excel的导入与导出*/@SuppressWarnings({"unchecked"})publicclassExcelOperate{/***@authorliuwu*这是一个通用的方法,利用了JAVA的反射机制,*可以将放置在JAVA集合中并且符合一定条件的数据以EXCEL的形式输出到指定IO设备上*@paramtitle表格标题名*@paramheaders表格属性列名数组*@paramdataset需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。*此方法支持的javabean属性【数据类型有java基本数据类型及String,Date,byte[](图片转成字节码)】*@paramout与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中*@parampattern如果有时间数据,设定输出格式。默认为"yyy-MM-dd"*@throwsIOException*/publicstaticvoidexportExcel(Stringtitle,String[]headers,Collection<?>dataset,OutputStreamout,Stringpattern)throwsIOException{//声明一个工作薄HSSFWorkbookworkbook=newHSSFWorkbook();//生成一个表格HSSFSheetsheet=workbook.createSheet(title);//设置表格默认列宽度为15个字节sheet.setDefaultColumnWidth((short)20);//生成一个样式HSSFCellStylestyle=workbook.createCellStyle();//设置这些样式style.setFillForegroundColor(HSSFColor.SKY_BLUE.index);style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style.setBorderBottom(HSSFCellStyle.BORDER_THIN);style.setBorderLeft(HSSFCellStyle.BORDER_THIN);style.setBorderRight(HSSFCellStyle.BORDER_THIN);style.setBorderTop(HSSFCellStyle.BORDER_THIN);style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//生成一个字体HSSFFontfont=workbook.createFont();font.setColor(HSSFColor.VIOLET.index);font.setFontHeightInPoints((short)12);font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//把字体应用到当前的样式style.setFont(font);//生成并设置另一个样式HSSFCellStylestyle2=workbook.createCellStyle();style2.setFillForegroundColor(HSSFColor.LIGHT_YELLOW.index);style2.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);style2.setBorderBottom(HSSFCellStyle.BORDER_THIN);style2.setBorderLeft(HSSFCellStyle.BORDER_THIN);style2.setBorderRight(HSSFCellStyle.BORDER_THIN);style2.setBorderTop(HSSFCellStyle.BORDER_THIN);style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);style2.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//生成另一个字体HSSFFontfont2=workbook.createFont();font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//把字体应用到当前的样式style2.setFont(font2);//产生表格标题行HSSFRowrow=sheet.createRow(0);for(shorti=0;i<headers.length;i++){HSSFCellcell=row.createCell(i);cell.setCellStyle(style);HSSFRichTextStringtext=newHSSFRichTextString(headers[i]);cell.setCellValue(text);}//遍历集合数据,产生数据行Iterator<?>it=dataset.iterator();intindex=0;while(it.hasNext()){index++;row=sheet.createRow(index);Objectt=it.next();//利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值Field[]fields=t.getClass().getDeclaredFields();for(shorti=0;i<fields.length;i++){HSSFCellcell=row.createCell(i);cell.setCellStyle(style2);Fieldfield=fields[i];StringfieldName=field.getName();StringgetMethodName="get"+fieldName.substring(0,1).toUpperCase()+fieldName.substring(1);//注意实体getSet不要自己改名字不然反射会有问题try{ClasstCls=t.getClass();MethodgetMethod=tCls.getMethod(getMethodName,newClass[]{});Objectvalue=getMethod.invoke(t,newObject[]{});HSSFRichTextStringrichString=newHSSFRichTextString(value.toString());HSSFFontfont3=workbook.createFont();font3.setColor(HSSFColor.BLUE.index);richString.applyFont(font3);cell.setCellValue(richString);}catch(SecurityExceptione){e.printStackTrace();e=null;}catch(NoSuchMethodExceptione){e.printStackTrace();e=null;}catch(IllegalArgumentExceptione){e.printStackTrace();e=null;}catch(IllegalAccessExceptione){e.printStackTrace();e=null;}catch(InvocationTargetExceptione){e.printStackTrace();e=null;}finally{//清理资源}}}try{workbook.write(out);}catch(IOExceptione){e.printStackTrace();e=null;}}}

Ⅸ java导出数据到excel的几种方法的比较

Excel的两种导出入门方法(JAVA与JS)

最近在做一个小项目作为练手,其中使用到了导出到Excel表格,一开始做的是使用JAVA的POI导出的,但因为我的数据是爬虫爬出来的,数据暂时并不保存在数据库或后台,所以直接显示在HTML的table,需要下载时又要将数据传回后台然后生成Excel文件,最后再从服务器下载到本地,过程几度经过网络传输,感觉比较耗时与浪费性能,于是想着在HTML中的Table直接导到Excel中节约资源

JAVA导出EXCEL(.xls)

导出Excel用的插件是apache的poi.jar,maven地址如下

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>

1. 简单应用

先来个简化无样式的Excel导出,由于我的数据存在JSON中,所以形参是JSONArray,朋友们根据自己的实际数据类型(Map,List,Set等)传入即可 ,代码如下

/*** 创建excel并填入数据* @author LiQuanhui* @date 2017年11月24日 下午5:25:13* @param head 数据头* @param body 主体数据* @return HSSFWorkbook*/public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) { //创建一个excel工作簿HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个sheet工作表HSSFSheet sheet = workbook.createSheet("学生信息");//创建第0行表头,再在这行里在创建单元格,并赋值HSSFRow row = sheet.createRow(0);HSSFCell cell = null; for (int i = 0; i < head.size(); i++) {cell = row.createCell(i);cell.setCellValue(head.getString(i));//设置值}//将主体数据填入Excel中for (int i = 0, isize = body.size(); i < isize; i++) {row = sheet.createRow(i + 1);JSONArray stuInfo = body.getJSONArray(i); for (int j = 0, jsize = stuInfo.size(); j < jsize; j++) {cell = row.createCell(j);cell.setCellValue(stuInfo.getString(j));//设置值}} return workbook;}

创建好Excel对象并填好值后(就是得到workbook),就是将这个对象以文件流的形式输出到本地上去,代码如下

/*** 文件输出* @author LiQuanhui* @date 2017年11月24日 下午5:26:23* @param workbook 填充好的workbook* @param path 存放的位置*/public static void outFile(HSSFWorkbook workbook,String path) {OutputStream os=null; try {os = new FileOutputStream(new File(path));workbook.write(os);} catch (FileNotFoundException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();} try {os.close();} catch (IOException e) {e.printStackTrace();}}

至此Excel的导出其实已经做完了。

2. 添加样式后导出

但通常这并不能满足我们的需求,因为通常是需要设置Excel的一些样式的,如字体、居中等等,设置单元格样式主要用到这个类(HSSFCellStyle)

HSSFCellStyle cellStyle = workbook.createCellStyle();

现在说说HSSFCellStyle都能干些什么

HSSFCellStyle cellStyle = workbook.createCellStyle();//创建单元格样式对象1.设置字体HSSFFont font = workbook.createFont(); //font.setFontHeight((short)12);//这个设置字体会很大font.setFontHeightInPoints((short)12);//这才是我们平常在Excel设置字体的值font.setFontName("黑体");//字体:宋体、华文行楷等等cellStyle.setFont(font);//将该字体设置进去2.设置对齐方式cellStyle.setAlignment(horizontalAlignment);//horizontalAlignment参考下面给出的参数//以下是最常用的三种对齐分别是居中,居左,居右,其余的写代码的时候按提示工具查看即可HorizontalAlignment.CENTERHorizontalAlignment.LEFTHorizontalAlignment.RIGHT3.设置边框cellStyle.setBorderBottom(border); // 下边框cellStyle.setBorderLeft(border);// 左边框cellStyle.setBorderTop(border);// 上边框cellStyle.setBorderRight(border);// 右边框//border的常用参数如下BorderStyle.NONE 无边框BorderStyle.THIN 细边框BorderStyle.MEDIUM 中等粗边框BorderStyle.THICK 粗边框//其余的我也描述不清是什么形状,有兴趣的到时可以直接测试

在经过一系列的添加样式之后,最后就会给单元格设置样式

cell.setCellStyle(cellStyle);

3. 自动调整列宽

sheet.autoSizeColumn(i);//i为第几列,需要全文都单元格居中的话,需要遍历所有的列数

4. 完整的案例

public class ExcelUtils { /*** 创建excel并填入数据* @author LiQuanhui* @date 2017年11月24日 下午5:25:13* @param head 数据头* @param body 主体数据* @return HSSFWorkbook*/public static HSSFWorkbook expExcel(JSONArray head, JSONArray body) {HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet("学生信息");HSSFRow row = sheet.createRow(0);HSSFCell cell = null;HSSFCellStyle cellStyle = workbook.createCellStyle();setBorderStyle(cellStyle, BorderStyle.THIN);cellStyle.setFont(setFontStyle(workbook, "黑体", (short) 14));cellStyle.setAlignment(HorizontalAlignment.CENTER);for (int i = 0; i < head.size(); i++) {cell = row.createCell(i);cell.setCellValue(head.getString(i));cell.setCellStyle(cellStyle);}HSSFCellStyle cellStyle2 = workbook.createCellStyle();setBorderStyle(cellStyle2, BorderStyle.THIN);cellStyle2.setFont(setFontStyle(workbook, "宋体", (short) 12));cellStyle2.setAlignment(HorizontalAlignment.CENTER); for (int i = 0, isize = body.size(); i < isize; i++) {row = sheet.createRow(i + 1);JSONArray stuInfo = body.getJSONArray(i); for (int j = 0, jsize = stuInfo.size(); j < jsize; j++) {cell = row.createCell(j);cell.setCellValue(stuInfo.getString(j));cell.setCellStyle(cellStyle2);}} for (int i = 0, isize = head.size(); i < isize; i++) {sheet.autoSizeColumn(i);} return workbook;} /*** 文件输出* @author LiQuanhui* @date 2017年11月24日 下午5:26:23* @param workbook 填充好的workbook* @param path 存放的位置*/public static void outFile(HSSFWorkbook workbook,String path) {OutputStream os=null; try {os = new FileOutputStream(new File(path));workbook.write(os);} catch (FileNotFoundException e1) {e1.printStackTrace();} catch (IOException e) {e.printStackTrace();} try {os.close();} catch (IOException e) {e.printStackTrace();}} /*** 设置字体样式* @author LiQuanhui* @date 2017年11月24日 下午3:27:03* @param workbook 工作簿* @param name 字体类型* @param height 字体大小* @return HSSFFont*/private static HSSFFont setFontStyle(HSSFWorkbook workbook, String name, short height) {HSSFFont font = workbook.createFont();font.setFontHeightInPoints(height);font.setFontName(name); return font;} /*** 设置单元格样式* @author LiQuanhui* @date 2017年11月24日 下午3:26:24* @param workbook 工作簿* @param border border样式*/private static void setBorderStyle(HSSFCellStyle cellStyle, BorderStyle border) {cellStyle.setBorderBottom(border); // 下边框cellStyle.setBorderLeft(border);// 左边框cellStyle.setBorderTop(border);// 上边框cellStyle.setBorderRight(border);// 右边框}}

POI的功能其实还是很强大的,这里只介绍了Excel的一丁点皮毛给入门的查看,如果想对Excel进行更多的设置可以查看下面的这篇文章,有着大量的使用说明。空谷幽澜的POI使用详解

JS导出EXCEL(.xls)

java的Excel导出提供了强大的功能,但也对服务器造成了一定资源消耗,若能使用客户端的资源那真是太好了

1. 简单应用

JS的导出Excel非常简单,只需要引用Jquery和tableExport.js并设置一个属性即可

<script src="<%=basePath%>/static/js/tableExport.js" type="text/javascript"></script><script type="text/javascript">function exportExcelWithJS(){ //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel$('#tableId').tableExport({ type:'excel'});}</script><button class="btn btn-primary" type="button" style="float: right;" onclick="exportExcelWithJS()">下载本表格</button>

JS的导出就完成了,是不是特别简单

2. 进阶应用

但上面仅仅是个简单的全表无样式的导出这tableExport.js还有一些其他功能,忽略行,忽略列,设置样式等,属性如下

<script type="text/javascript">function exportExcelWithJS(){ //获取要导出Excel的表格对象并设置tableExport方法,设置导出类型type为excel$('#tableId').tableExport({ type:'excel',//导出为excelfileName:'2017工资表',//文件名worksheetName:'11月工资',//sheet表的名字ignoreColumn:[0,1,2],//忽略的列,从0开始算ignoreRow:[2,4,5],//忽略的行,从0开始算excelstyles:['text-align']//使用样式,不用填值只写属性,值读取的是html中的});}</script>

如上既是JS的进阶导出,操作简单,容易上手

但有个弊端就是分页的情况下,只能导出分页出的数据,毕竟这就是导出HTML内TABLE有的东西,数据在数据库或后台的也就无能为力,所以这个适合的是无分页的TABLE导出

3. 额外说明

tableExport.js是gitHub上的hhurz大牛的一个开源项目,需要下载该JS的可以点击链接进入gitHub下载或在我的网络网盘下载密码:oafu

tableExport.js不仅仅是个导出Excel的JS,他还可以导出CSV、DOC、JSON、PDF、PNG、SQL、TSV、TXT、XLS (Excel 2000 HTML format)、XLSX (Excel 2007 Office Open XML format)、XML (Excel 2003 XML Spreadsheet format)、XML (Raw xml)多种格式,具体使用可以参考hhurz的使用介绍

本人在之前找了好几个导出Excel的都有各种各样的问题(乱码,无响应,无样式),这个是目前找到最好的一个了,能解决乱码问题,能有样式,非常强大

Ⅹ java怎么实现导出excel

import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class CreateSimpleExcelToDisk { /** * @功能:手工构建一个简单格式的Excel */ private static List<Student> getStudent() throws Exception { List list = new ArrayList(); SimpleDateFormat df = new SimpleDateFormat("yyyy-mm-dd"); Student user1 = new Student(1, "张三", 16, df.parse("1997-03-12")); Student user2 = new Student(2, "李四", 17, df.parse("1996-08-12")); Student user3 = new Student(3, "王五", 26, df.parse("1985-11-12")); list.add(user1); list.add(user2); list.add(user3); return list; } public static void main(String[] args) throws Exception { // 第一步,创建一个webbook,对应一个Excel文件 HSSFWorkbook wb = new HSSFWorkbook(); // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet HSSFSheet sheet = wb.createSheet("学生表一"); // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short HSSFRow row = sheet.createRow((int) 0); // 第四步,创建单元格,并设置值表头 设置表头居中 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式 HSSFCell cell = row.createCell((short) 0); cell.setCellValue("学号"); cell.setCellStyle(style); cell = row.createCell((short) 1); cell.setCellValue("姓名"); cell.setCellStyle(style); cell = row.createCell((short) 2); cell.setCellValue("年龄"); cell.setCellStyle(style); cell = row.createCell((short) 3); cell.setCellValue("生日"); cell.setCellStyle(style); // 第五步,写入实体数据 实际应用中这些数据从数据库得到, List list = CreateSimpleExcelToDisk.getStudent(); for (int i = 0; i < list.size(); i++) { row = sheet.createRow((int) i + 1); Student stu = (Student) list.get(i); // 第四步,创建单元格,并设置值 row.createCell((short) 0).setCellValue((double) stu.getId()); row.createCell((short) 1).setCellValue(stu.getName()); row.createCell((short) 2).setCellValue((double) stu.getAge()); cell = row.createCell((short) 3); cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(stu .getBirth())); } // 第六步,将文件存到指定位置 try { FileOutputStream fout = new FileOutputStream("E:/students.xls"); wb.write(fout); fout.close(); } catch (Exception e) { e.printStackTrace(); } } }

未经允许不得转载:山九号 » 导出excel文件java|java导出数据到excel的几种方法的比较

赞 (0)