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

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

Ⅰ java怎么导出excel

/** *负责数据导入到EXCEL * * @param realPath * EXCEL表格存放的绝对路径 * @param sheetname * * @param xLocation * EXCEL表格的行索引,从1开始 * @param yLocation * EXCEL表格的列索引,从1开始 * @param value * 需要导入的数据 * */ public void modifyExcel(String realPath,String sheetname,int xLocaion,int yLocation,String value){ POIFSFileSystem fs=null; HSSFWorkbook wb=null; try { File file=new File(realPath); if(file.exists()){ fs = new POIFSFileSystem(new FileInputStream(realPath)); wb=new HSSFWorkbook(fs); HSSFSheet s=wb.getSheetAt(0); //函数处理时横纵坐标从索引0开始 HSSFRow row=s.getRow(xLocaion-1); HSSFCell cell=null; if(row!=null){ cell=row.getCell(yLocation-1); if(cell==null){ cell=row.createCell(yLocation-1); } }else{ row=s.createRow(xLocaion-1); cell=row.createCell(yLocation-1); } cell.setCellValue(value); }else{ wb=new HSSFWorkbook(); HSSFSheet s=wb.createSheet(); wb.setSheetName(0, sheetname); HSSFRow row=s.createRow(xLocaion-1); HSSFCell cell=row.createCell(yLocation-1); cell.setCellValue(value); } FileOutputStream fos=new FileOutputStream(realPath); wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 第二种就是运用了对象,以对象为单位写入数据,即一个对象的所有属性在一行列出,有多少个对象就有多少行,此方法比较适用于个人信息导出之类的应用,至于导出属性的顺序问题在导出对象的实体类内部改动下即可: /** *负责数据导入到EXCEL * * @param realPath * EXCEL表格存放的绝对路径 * @param sheetname * * @param users * 需要导出到excel表的对象数组 */ public void outputExcel(String realPath,String sheetname,UserModel[] users){ FileOutputStream fos; try { File file=new File(realPath); fos = new FileOutputStream(file, true); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s=wb.createSheet(); wb.setSheetName(0, sheetname); HSSFRow[] rows=new HSSFRow[users.length]; HSSFCell[][] cells=new HSSFCell[20][20]; for (int i=0; i<users.length;i++) { // 相当于excel表格中的总行数 PropertyDescriptor[] descriptors=(users[i]); rows[i]=s.createRow(i); for (int j=0; descriptors!=null&&j<descriptors.length;j++) { java.lang.reflect.Method readMethod = descriptors[j] .getReadMethod(); cells[i][j]=rows[i].createCell(j); Object value=readMethod.invoke(users[i], null); cells[i][j].setCellValue(value.toString()); } } wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } }

Ⅱ 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文件

1234567891011121314request.setCharacterEncoding("utf-8");String title = request.getParameter("title");//title = URLDecoder.decode(title,"utf-8");int maid = Integer.parseInt(request.getParameter("maid"));response.setContentType("application/vnd.ms-excel");response.setHeader("Content-Disposition" ,"attachment;filename="+new String((title+".xls").getBytes(),"ISO-8859-1"));//ManuscriptAction down=new ManuscriptAction();WebApplicationContext webAppContext = WebApplicationContextUtils.(getServletContext());//得到WebApplicationContext 。ManuscriptDaoImp cocAutoService = (ManuscriptDaoImp) webAppContext.getBean("manuscriptDaoImp"); cocAutoService.exportMan(maid,title,response.getOutputStream());out.clear();out = pageContext.pushBody();

Ⅳ java怎么生成EXCEL文件

可以使用apache的poi包,这是一个开源项目,可方便读写excel文件,这里有一些例子:http://dev.csdn.net/develop/article/73/73804.shtmhttp://www.chinahtm.cn/program/26385.html

Ⅳ 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();}}

Ⅵ java导出excel问题。

java导出Excel java 代码 /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */ package com.axon.fable.sams.view.action; import java.io.IOException; import java.io.OutputStream; import java.util.List; import javax.serv … java导出Excel例举方式 方法一:导出Excel数据的插件jexcelapi 程序实例如下: public void exportClassroom(OutputStream os) throws PaikeException { try { WritableWorkbook wbook = Workbook.createWorkbook(os); //建立excel文件 WritableSheet wsheet = wbook.createSheet("教室信息表", 0); //工作表名称 //设置Excel字体 WritableFont wfont = new WritableFont(WritableFont.ARIAL, 16, WritableFont.BOLD, false, jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK); WritableCellFormat titleFormat = new WritableCellFormat(wfont); String[] title = { "教室名", "容 量", "类 型", "其他说明" }; //设置Excel表头 for (int i = 0; i < title.length; i++) { Label excelTitle = new Label(i, 0, title[i], titleFormat); wsheet.addCell(excelTitle); } int c = 1; //用于循环时Excel的行号 ClassroomService cs = new ClassroomService(); List list = cs.findAllClassroom(); //这个是从数据库中取得要导出的数据 Iterator it = list.iterator(); while (it.hasNext()) { ClassroomDTO crdto = (ClassroomDTO) it.next(); Label content1 = new Label(0, c, crdto.getRoomname()); Label content2 = new Label(1, c, crdto.getCapicity().toString()); Label content3 = new Label(2, c, crdto.getRoomTypeId() .toString()); Label content4 = new Label(3, c, crdto.getRemark()); wsheet.addCell(content1); wsheet.addCell(content2); wsheet.addCell(content3); wsheet.addCell(content4); c++; } wbook.write(); //写入文件 wbook.close(); os.close(); } catch (Exception e) { throw new PaikeException("导出文件出错"); } } 方法二:直接用Java代码实现导出Excel报表 /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl */这样可以么?

Ⅶ 如何导出生成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如何输出xls格式的Excel表格文件

有个开源的东东-jxl.jar,可以到http://sourceforge.net/project/showfiles.php?group_id=79926下载。一.读取Excel文件内容 /**读取Excel文件的内容 * @param file 待读取的文件 * @return */ public static String readExcel(File file){ StringBuffer sb = new StringBuffer(); Workbook wb = null; try { //构造Workbook(工作薄)对象 wb=Workbook.getWorkbook(file); } catch (BiffException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } if(wb==null) return null; //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了 Sheet[] sheet = wb.getSheets(); if(sheet!=null&&sheet.length>0){ //对每个工作表进行循环 for(int i=0;i<sheet.length;i++){ //得到当前工作表的行数 int rowNum = sheet[i].getRows(); for(int j=0;j<rowNum;j++){ //得到当前行的所有单元格 Cell[] cells = sheet[i].getRow(j); if(cells!=null&&cells.length>0){ //对每个单元格进行循环 for(int k=0;k<cells.length;k++){ //读取当前单元格的值 String cellValue = cells[k].getContents(); sb.append(cellValue+" "); } } sb.append(" "); } sb.append(" "); } } //最后关闭资源,释放内存 wb.close(); return sb.toString(); }二.写入Excel文件这里有很多格式了,比如文本内容加粗,加上某些颜色等,可以参考jxl的api,同时还推荐一篇不错的文章:http://www.ibm.com/developerworks/cn/java/l-javaExcel/?ca=j-t10 /**生成一个Excel文件 * @param fileName 要生成的Excel文件名 */ public static void writeExcel(String fileName){ WritableWorkbook wwb = null; try { //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(new File(fileName)); } catch (IOException e) { e.printStackTrace(); } if(wwb!=null){ //创建一个可写入的工作表 //Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置 WritableSheet ws = wwb.createSheet("sheet1", 0); //下面开始添加单元格 for(int i=0;i<10;i++){ for(int j=0;j<5;j++){ //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行 Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列"); try { //将生成的单元格添加到工作表中 ws.addCell(labelC); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } try { //从内存中写入文件中 wwb.write(); //关闭资源,释放内存 wwb.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } } } 三.在一个Excel文件中查找是否包含某一个关键字 /**搜索某一个文件中是否包含某个关键字 * @param file 待搜索的文件 * @param keyWord 要搜索的关键字 * @return */ public static boolean searchKeyWord(File file,String keyWord){ boolean res = false; Workbook wb = null; try { //构造Workbook(工作薄)对象 wb=Workbook.getWorkbook(file); } catch (BiffException e) { return res; } catch (IOException e) { return res; } if(wb==null) return res; //获得了Workbook对象之后,就可以通过它得到Sheet(工作表)对象了 Sheet[] sheet = wb.getSheets(); boolean breakSheet = false; if(sheet!=null&&sheet.length>0){ //对每个工作表进行循环 for(int i=0;i<sheet.length;i++){ if(breakSheet) break; //得到当前工作表的行数 int rowNum = sheet[i].getRows(); boolean breakRow = false; for(int j=0;j<rowNum;j++){ if(breakRow) break; //得到当前行的所有单元格 Cell[] cells = sheet[i].getRow(j); if(cells!=null&&cells.length>0){ boolean breakCell = false; //对每个单元格进行循环 for(int k=0;k<cells.length;k++){ if(breakCell) break; //读取当前单元格的值 String cellValue = cells[k].getContents(); if(cellValue==null) continue; if(cellValue.contains(keyWord)){ res = true; breakCell = true; breakRow = true; breakSheet = true; } } } } } } //最后关闭资源,释放内存 wb.close(); return res; } 四.往Excel中插入图片图标插入图片的实现很容易,参看以下代码: /**往Excel中插入图片 * @param dataSheet 待插入的工作表 * @param col 图片从该列开始 * @param row 图片从该行开始 * @param width 图片所占的列数 * @param height 图片所占的行数 * @param imgFile 要插入的图片文件 */ public static void insertImg(WritableSheet dataSheet, int col, int row, int width, int height, File imgFile){ WritableImage img = new WritableImage(col, row, width, height, imgFile); dataSheet.addImage(img); } 以上代码的注释已经很清楚了,大概也就不用再解释了,我们可以用如下程序验证: try { //创建一个工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表 WritableSheet imgSheet = workbook.createSheet("Images",0); //要插入的图片文件 File imgFile = new File("D:/1.png"); //图片插入到第二行第一个单元格,长宽各占六个单元格 insertImg(imgSheet,0,1,6,6,imgFile); workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); }但是jxl只支持png格式的图片,jpg格式和gif格式都不支持五.插入页眉页脚一般的页眉页脚都分为三个部分,左,中,右三部分,利用如下代码可实现插入页眉页脚 /**向Excel中加入页眉页脚 * @param dataSheet 待加入页眉的工作表 * @param left * @param center * @param right */ public static void setHeader(WritableSheet dataSheet,String left,String center,String right){ HeaderFooter hf = new HeaderFooter(); hf.getLeft().append(left); hf.getCentre().append(center); hf.getRight().append(right); //加入页眉 dataSheet.getSettings().setHeader(hf); //加入页脚 //dataSheet.getSettings().setFooter(hf); }我们可以用如下代码测试该方法: try { //创建一个工作薄 WritableWorkbook workbook = Workbook.createWorkbook(new File("D:/test1.xls")); //待插入的工作表 WritableSheet dataSheet = workbook.createSheet("加入页眉",0); ExcelUtils.setHeader(dataSheet, "chb", "2007-03-06", "第1页,共3页"); workbook.write(); workbook.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); }六偷懒工具设计之sql2Excel今天在公司陪山东客户调试,远程登录,我在linux下什么工具都没有,用ssh登录服务器,直接用mysql查询数据库,提出记录中的所有汉字全是乱码。哎,可恶的公司,不让我用windows,要不我就可以用putty或者EMS了,我ft! 甚是不爽之下,我决定自己写个工具了,把客户数据库中的数据全部提取并保存到Excel中,这样我不就可以一目了然了嘛,嘿嘿,好吧,那我就写一个工具吧。第一部分就是谁都会的jdbc操作,连接数据库,提取数据集合。 Connection con; Statement state; /**初始化连接 * @param serverIp * @param dataBase * @param userName * @param password * @throws ClassNotFoundException * @throws SQLException */ public void init(String serverIp,String dataBase,String userName,String password) throws ClassNotFoundException, SQLException{ Class.forName("com.mysql.jdbc.Driver"); //配置数据源 String url="jdbc:mysql://"+serverIp+"/"+dataBase+"?useUnicode=true&characterEncoding=GB2312"; con=DriverManager.getConnection(url,userName,password); } /**得到查询结果集 * @param sql * @return * @throws SQLException */ public ResultSet getResultSet(String sql) throws SQLException{ state = con.createStatement(); ResultSet res = state.executeQuery(sql); return res; } /**关闭连接 * @throws SQLException */ public void close() throws SQLException{ if(con!=null) con.close(); if(state!=null) state.close(); }第二部分就是把ResultSet中的记录写入一个Excel文件操作Excel,我用的是jxl,不熟的同学可以参考:利用java操作Excel文件 /**将查询结果写入Excel文件中 * @param rs * @param file * @throws SQLException */ public void writeExcel(ResultSet rs,File file) throws SQLException{ WritableWorkbook wwb = null; try{ //首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象 wwb = Workbook.createWorkbook(file); } catch (IOException e){ e.printStackTrace(); } if(wwb!=null){ WritableSheet ws = wwb.createSheet("sheet1", 0); int i=0; while(rs.next()){ Label label1 = new Label(0, i, rs.getString("id")); Label label2 = new Label(1, i, rs.getString("category")); try { ws.addCell(label1); ws.addCell(label2); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } i++; } try { //从内存中写入文件中 wwb.write(); //关闭资源,释放内存 wwb.close(); } catch (IOException e) { e.printStackTrace(); } catch (WriteException e){ e.printStackTrace(); } } }测试程序: Sql2Excel se = new Sql2Excel(); try { se.init("127.0.0.1","mydabase", "root", "1234"); ResultSet rs = se.getResultSet("select id,category from xx "); se.writeExcel(rs, new File("/root/sql2excel.xls")); se.close(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); }

Ⅸ JAVA导出excel

首先查出一个list 集合,接着用 apache poi这个插件写excel 文件,只要搜索 Apache POI的用法举例很多例子 ,也不难。写excel就是比较繁琐如 public void writeData(String file) { //创建工作薄 HSSFWorkbook wb = getWorkBook(file); if(wb==null){ return; } //获取工作表 HSSFSheet sheet = wb.getSheetAt(0); if (sheet == null) { sheet = wb.createSheet("第一页"); } HSSFCell cell=getCell(sheet,0,(short)0); //数值 cell.setCellValue(123); //字符串 HSSFRichTextString str=new HSSFRichTextString("你好"); cell=getCell(sheet,0,(short)1); cell.setCellValue(str); //保存 saveWorkBook(wb); }

Ⅹ Java怎样将数据库中数据导出为Excel文件,求完整例子附带数据库。

下面是我写的一个运用jxl生成Excel文件的方法该方法接收一个保存MarkesData数据的ArrayList arlist和文件生成路径Path通过取得arlist里的数据生成Excel文件感觉应该是你想要的 我没调试过也许有错 你也可以根据你的需要进行修改^_^import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Iterator;import jxl.Workbook;import jxl.write.Label;import jxl.write.WritableSheet;import jxl.write.WritableWorkbook;import jxl.write.WriteException;import jxl.write.biff.RowsExceededException;public class WriteExcel {WritableWorkbook book=null;public void OutputExcel(ArrayList arlist,String Path){ try{ book = Workbook.createWorkbook(new File(Path));//设置表名WritableSheet sheet = book.createSheet("考试单",0);//生成表格题头Label labe1 = new Label(0, 0, "考生姓名" );Label labe2 = new Label(1, 0, "地区");Label labe3 = new Label(2, 0, "所属院校");Label labe4 = new Label(3, 0, "班级");Label labe5 = new Label(4, 0, "考试号");Label labe6 = new Label(5, 0, "考试时间");Label labe7 = new Label(6, 0, "科目名称"); //将生成的单元格添加到工作表中 sheet.addCell(labe1);sheet.addCell(labe2);sheet.addCell(labe3);sheet.addCell(labe4);sheet.addCell(labe5);sheet.addCell(labe6);sheet.addCell(labe7);Iterator it = arlist.iterator();int i = 1; while(it.hasNext()){//通过迭代获得arlist里的MarkesData对象MarkesData temp = (MarkesData)it.next();//取得数据生成单元格Label label1=new Label(0,i,temp.getUser_name());Label label2=new Label(1,i,temp.getArea_name());Label label3=new Label(2,i,temp.getCollege_name());Label label4=new Label(3,i,temp.getClass_name());Label label5=new Label(4,i,temp.getTest_name());Label label6=new Label(5,i,temp.getStarttime());Label label7=new Label(6,i,temp.getSubject_name()); //将生成的单元格添加到工作表中 sheet.addCell(label1);sheet.addCell(label2);sheet.addCell(label3);sheet.addCell(label4);sheet.addCell(label5);sheet.addCell(label6);sheet.addCell(label7); i++; } book.write(); book.close(); } catch (RowsExceededException e) { e.printStackTrace(); } catch (WriteException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally{try{ if(book!=null)book.close();}catch(Exception e){ System.out.println("exception when closing Connection in finally"); System.out.println(e.getMessage().toString());} } }}

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

赞 (0)