- 浏览: 135522 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
522823979:
JXL POI 导出excel 包括图片 -
贝塔ZQ:
实现导出excel文件和图片,感觉用poi和jxl代码量好多, ...
JXL POI 导出excel 包括图片 -
bmpbhg:
和你的类似,不过我这边报的是
org.dom4j.Docume ...
Servlet 接受解析HTTP请求XML数据,返回XML -
Wuaner:
引用Non Field Validators排在前面的先执行 ...
struts2 内建效验器 -
timelion:
请将正式简历发送至
timelion@163.com
找工作中...放上简历,求推荐
主要的问题还是JXL只支持PNG格式的图片,没辙,只有转换格式再处理.附件是结果图,这里只是贴出来方法.,还有转换图片的时候可能出异常.需要另外处理
POI :
private WritableWorkbook saveXlS(OutputStream os,List items) throws Exception{ ICItemManager itemMgnt = (ICItemManager) this.getBean("icItemManager"); LazyDynaBean item = null; LazyDynaBean orderContent = null; if(items.size()>0){ item=(LazyDynaBean) items.get(0); } jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(os); // 文档格式名称 jxl.write.WritableSheet sheet = wwb.createSheet("销售出库", 0); //加入文字,改变其字体和底色 jxl.write.WritableFont wfc = new jxl.write.WritableFont(WritableFont.ARIAL,20, WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK); WritableCellFormat format=new WritableCellFormat(wfc); //把水平对齐方式指定为居中 format.setAlignment(jxl.format.Alignment.CENTRE); //把垂直对齐方式指定为居中 format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); //设置自动换行 format.setWrap(true); // jxl.write.WritableFont wfc2 = new jxl.write.WritableFont(WritableFont.ARIAL,10,WritableFont.NO_BOLD, false, UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK); WritableCellFormat contentFormat=new WritableCellFormat(wfc2); contentFormat.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE); contentFormat.setAlignment(jxl.format.Alignment.CENTRE); contentFormat.setWrap(true); /** * 第一行 */ //合并单元格 sheet.mergeCells(0,0,13,1); // 加入文字 0,0是坐标位置 jxl.write.Label title = new jxl.write.Label(0, 0, "销售出库单"); title.setCellFormat(format); sheet.addCell(title); jxl.write.Label content =null; /** * 第二行 */ sheet.mergeCells(0,2,1,2); content = new jxl.write.Label(0, 2, "单据编号");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(2,2,6,2); content=new jxl.write.Label(2, 2, item.get("fbillno").toString());content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(7,2,8,2); content = new jxl.write.Label(7, 2, "日期");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(9,2,13,2); content=new jxl.write.Label(9, 2, (String)item.get("fdate").toString().substring(0,10));content.setCellFormat(contentFormat); sheet.addCell(content); /** * 第三行 */ sheet.mergeCells(0,3,1,3); content = new jxl.write.Label(0, 3, "审核标志");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(2,3,6,3); content=new jxl.write.Label(2, 3, item.get("fcheck").toString());content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(7,3,8,3); content = new jxl.write.Label(7, 3, "仓库");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(9,3,13,3); content=new jxl.write.Label(9,3, item.get("fstockname").toString());content.setCellFormat(contentFormat); sheet.addCell(content); /** * 第四行 */ sheet.mergeCells(0,4,1,4); content = new jxl.write.Label(0, 4, "业务单位");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(2,4,6,4); content=new jxl.write.Label(2, 4,item.get("fdepartment").toString());content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(7,4,8,4); content = new jxl.write.Label(7, 4, "业务员");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(9,4,13,4); content=new jxl.write.Label(9,4, item.get("empFname").toString());content.setCellFormat(contentFormat); sheet.addCell(content); NumberFormat nFormat=NumberFormat.getNumberInstance(); nFormat.setMaximumFractionDigits(2);//设置小数点后面尾数为2 /** * 第四行 */ sheet.mergeCells(0,5,1,5); content = new jxl.write.Label(0, 5, "日期");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(2,5,4,5); content = new jxl.write.Label(2, 5, "物料名称");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(5,5,5,5); content = new jxl.write.Label(5, 5, "单位");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(6,5,7,5); content = new jxl.write.Label(6, 5, "单价");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(8,5,8,5); content = new jxl.write.Label(8, 5, "数量");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(9,5,10,5); content = new jxl.write.Label(9, 5, "金额");content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(11,5,13,5); content = new jxl.write.Label(11, 5, "图片");content.setCellFormat(contentFormat); sheet.addCell(content); /** * 第五行 */ int j=items.size(); for (int i = 0; i < j; i++) { orderContent=(LazyDynaBean)items.get(i); sheet.setRowView(i+6, 1000); sheet.setColumnView(i+6, 10); sheet.mergeCells(0,i+6,1,i+6); content = new jxl.write.Label(0, i+6, orderContent.get("fdate").toString().substring(0,10));content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(2,i+6,4,i+6); content = new jxl.write.Label(2, i+6, orderContent.get("fitemname").toString());content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(5,i+6,5,i+6); content = new jxl.write.Label(5, i+6, orderContent.get("funitname").toString());content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(6,i+6,7,i+6); Double fauxprice=Double.parseDouble(orderContent.get("fauxprice").toString()); content = new jxl.write.Label(6, i+6, nFormat.format(fauxprice));content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(8,i+6,8,i+6); Double fauxqty=Double.parseDouble(orderContent.get("fauxqty").toString()); content = new jxl.write.Label(8, i+6,nFormat.format(fauxqty));content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(9,i+6,10,i+6); Double famount=Double.parseDouble(orderContent.get("famount").toString()); content = new jxl.write.Label(9, i+6,nFormat.format(famount));content.setCellFormat(contentFormat); sheet.addCell(content); sheet.mergeCells(11,i+6,13,i+6); //插入图片,由于只支持png格式,需要转换成png. List icItemPics = itemMgnt.getICItemPics(Integer.valueOf((String)orderContent.get("pfitemid"))); File outputFile=null; ICItemAttach ica = null; if(icItemPics.size()>0){ ica = (ICItemAttach) icItemPics.get(0); File imgFile =new File(this.getServlet().getServletContext().getRealPath("repository") + File.separator + ica.getParentNumber() + File.separator + ica.getFNumber() + File.separator + ica.getFfilename()); System.err.println(imgFile.getCanonicalPath()); 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){ WritableImage image = new WritableImage(11, i+6, 3, 1, outputFile); sheet.addImage(image); } } } } } return wwb; }
POI :
public static void main(String[] args)throws Exception { //声明一个工作薄 HSSFWorkbook wb=new HSSFWorkbook(); //生成一个表格 HSSFSheet sheet=wb.createSheet("表格1"); //生成一个列 HSSFRow row=sheet.createRow(0); //生成一个样式 HSSFCellStyle style=wb.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); //生成一个字体 HSSFFont font=wb.createFont(); font.setColor(HSSFColor.VIOLET.index); font.setFontHeightInPoints((short)16); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //把字体应用到当前的样式 style.setFont(font); //声明一个画图的顶级管理器 HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); //填充单元格 for(short i=0;i<5;i++){ //声明一个单元格 HSSFCell cell=row.createCell(i); switch(i){ case 0: //设置普通文本 cell.setCellValue(new HSSFRichTextString("普通文本")); break; case 1: //设置为形状 HSSFClientAnchor a1 = new HSSFClientAnchor( 0, 0, 1023, 255, (short) 1, 0, (short) 1, 0 ); HSSFSimpleShape shape1 = patriarch.createSimpleShape(a1); //这里可以设置形状的样式 shape1.setShapeType(HSSFSimpleShape.OBJECT_TYPE_OVAL); break; case 2: //设置为布尔量 cell.setCellValue(true); break; case 3: //设置为double值 cell.setCellValue(12.5); break; case 4: //设置为图片] URL url=POITest.class.getResource("hello.jpg"); if(url!=null){ insertImage(wb,patriarch,getImageData(ImageIO.read(url)),0,4,1); break; } } //设置单元格的样式 cell.setCellStyle(style); } FileOutputStream fout=new FileOutputStream("我的第一个EXCEL.xls"); //输出到文件 wb.write(fout); fout.close(); } //自定义的方法,插入某个图片到指定索引的位置 private static void insertImage(HSSFWorkbook wb,HSSFPatriarch pa,byte[] data,int row,int column,int index){ //单元格为标,以左上为起点,想右移,范围0-1023 dx1 must be between 0 and 1023 int x1=0; //单元格为标,以左上为起点,想下移,范围0-1023 dy1 must be between 0 and 255 int y1=0; //单元格为标,以右上为起点,想左移,范围0-1023 dx1 must be between 0 and 1023 int x2=100; //单元格为标,以右下为起点,想上移,范围0-1023 dy1 must be between 0 and 255 int y2=22; HSSFClientAnchor anchor = new HSSFClientAnchor(x1,y1,x2,y2,(short)column,row,(short)column,row); anchor.setAnchorType(3); pa.createPicture(anchor , wb.addPicture(data,HSSFWorkbook.PICTURE_TYPE_JPEG)); } //从图片里面得到字节数组 private static byte[] getImageData(BufferedImage bi){ try{ //转化成PNG ByteArrayOutputStream bout=new ByteArrayOutputStream(); ImageIO.write(bi,"PNG",bout); return bout.toByteArray(); }catch(Exception exe){ exe.printStackTrace(); return null; } }
评论
2 楼
522823979
2016-11-14
1 楼
贝塔ZQ
2016-09-21
实现导出excel文件和图片,感觉用poi和jxl代码量好多,还容易出现问题,用插件么,简单方便,PageOffice插件就是专门操作处理office文档的,集成起来也方便,官网上他们也提供了不少事例代码,看起来也方便,可以了解了解。
发表评论
-
Maven 常用命令
2011-03-03 16:37 844mvn dependency:resolve 了解你项目的 ... -
decorator(装饰模式)io包理解
2010-03-30 16:01 1505decorator的结构如下: MyInterfac ... -
java设计模式
2010-03-25 11:28 851策略设计模式: 创建一个能够根据所传递的参数对象的不同而具有不 ... -
web开发的问题
2010-03-22 00:56 9671. filter的优先级 在应用中会用到很多的过滤器,想下面 ... -
Servlet 接受解析HTTP请求XML数据,返回XML
2010-03-13 11:33 25086项目需要Servlet接受http提交过来的XML解析后,返回 ... -
FTP工具类
2010-02-26 11:50 4813功能就是将指定文件夹下面的所有文件都上传到FTP上 /** ... -
csv文件下载
2010-02-05 15:21 2494BufferedOutputStream bos = null ... -
struts不定数文件上传
2010-02-04 22:18 986Hashtable files=voteForm.getMul ... -
JFreeChart封装工具类
2010-02-03 18:37 3945package com.wasu.itv.common.uti ... -
J2SE
2010-01-22 15:08 839public static void main(String[ ... -
struts2 内建效验器
2010-01-22 10:54 1446http://struts.apache.org/2.0.9/ ... -
struts2内建拦截器
2010-01-21 12:50 10881. alias:实现在不同请求中相似参数别名的转换; 2. ... -
struts2异常收集
2010-01-19 13:21 9131. ognl.OgnlException: target i ... -
apache VSF 操作类
2010-01-13 17:54 1158package com.biya.dao.jdbc; ... -
记录开发过程用的代码段001--POI生成excel表格,如何合并单元格
2009-12-30 16:51 3290POI生成excel表格,如何 ... -
List 存取date排序
2009-12-10 14:46 7657主要利用 Comparator这个接口来实现,我这里是排序li ... -
JSP,SERVLET
2009-12-03 16:03 8311. 直接中文作为参数提交R=URL(test.do?name ... -
数字,金额 转 中文大写
2009-11-27 16:05 1358import java.text.DecimalFormat; ... -
Lucene:基于Java的全文检索引擎简介
2009-11-24 15:53 1036http://www.chedong.com/tech/luc ... -
BIRT 安装
2009-11-17 10:31 2142最近又用到birt报表 ,年初的时候用过一次,到现在忘的差不多 ...
相关推荐
POI支持更广泛的Excel特性,如样式、图表、图片、公式等,并且兼容Excel 97到2016的版本。 使用POI操作Excel的基本步骤与JXL类似,但POI的API更为复杂和强大: 1. 引入POI库的依赖。 2. 创建`Workbook`对象,可以...
4. **导出Excel**:最后,`jxls-poi`会生成一个新的Excel文件,其中包含了从JSON数据填充后的内容。你可以选择保存到本地或者直接通过HTTP响应发送给用户下载。 具体代码示例可能如下: ```java import org.jxls....
以上就是关于使用JXL和Apache POI实现Excel导入导出的基本知识。根据实际需求,你可以结合这两个库的功能,灵活地处理各种Excel文件操作。在实际项目中,通常会根据性能、功能需求以及文件兼容性等因素选择适合的库...
Apache POI 和 JExcelAPI(JXL)是两个广泛使用的库,分别用于处理Microsoft Office的POI格式(包括Excel)和Java环境中的Excel文件。下面将详细阐述这两个库以及如何使用它们来生成Excel报表。 Apache POI 是一个...
为了更好地理解这两个库的用法,你可以查看提供的"Excel导入导出(jxl及Poi)工具类"压缩包中的示例代码。通过阅读和运行这些代码,你可以更深入地了解如何在实际项目中应用jxl和Apache POI。 总的来说,jxl和Apache ...
《jxl导出Excel的深度解析与应用》 在信息化高度发展的今天,Excel作为数据处理和分析的重要工具,被广泛应用于各个领域。Java作为一种强大的编程语言,如何与Excel进行交互,成为了许多开发者关注的焦点。jxl库...
在Java编程环境中,处理Excel文件是一项常见的任务,特别是在数据导入导出、报表生成等领域...对于更复杂的需求,可能需要考虑使用其他库,如Apache POI,它提供了更丰富的功能来处理Excel文档,包括更精细的图像操作。
然而,当需要大量生成或导出Excel文件时,直接使用Excel软件可能效率低下。此时,开发者通常会借助编程语言来实现自动化操作,Java中就有两个常用的库,即JXL和Apache POI,用于读写Excel文件。下面我们将详细探讨这...
Java使用JXL库进行Excel导入导出是一种常见的技术实践,特别是在需要在Java应用程序或Web应用中处理Excel数据时。JXL是一个轻量级的库,它允许开发人员以纯Java方式读取、创建和修改Excel文件,而无需依赖于Windows...
jsp+poi导出excel.docx 本文档主要讲述了使用jsp和poi组件来导出excel文件的方法。下面是对标题、描述、标签和部分内容的详细解释。 首先,标题“jsp+poi导出excel.docx”表明了本文档的主要内容是使用jsp和poi来...
`ExportExcelController.java`可能包含控制器代码,用于接收请求并调用导出Excel的方法,而`ExcelStyle.java`和`ExcelAnnotation.java`可能分别用于定义Excel的样式和注解,以增强Excel的展示效果和元数据。...
jxl jxl包 poi技术导出数据至excel中 poi-bin-2.5.1包 jxl对excel表格 代码操作 poi技术 java代码从数据库取数据导入至Excel表中 poi-bin-2.5.1-final-20040804.jar
同样,导出Excel功能可以通过创建一个新的工作簿,填充数据,然后设置样式和写入输出流来实现。以下是一个简单的导出示例: ```java @GetMapping("exportList") public void exportList(HttpServletResponse ...
本文将对比两种主流的Java Excel处理库:jxl和Apache POI,并探讨它们的特性和适用场景。 首先,jxl是较早的Java Excel处理库,主要用于读写Excel 97-2003格式的.XLS文件。它的API简洁,易于上手,对于简单的读写...
在Java开发中,处理Excel数据是一项常见的任务,无论是读取现有的..."ExportExcel"可能是项目中用于导出Excel的类或者方法,具体实现细节可能包含解析数据,创建工作簿,写入数据,以及可能的DTREE模型预测结果的导出。
- `java_Jxl导入导出Excel表.doc`和`POI导入导出EXCEL文件.doc`可能会详细讲解如何使用这两个库进行数据的导入导出。 - `jxl中文教程.doc`、`jxl.doc`和`jxl_api.docx`是jxl库的中文教程和API文档,可以帮助开发者...
本文将深入探讨如何利用JXL库通过模板来导出Excel。 首先,JXL库(Java Excel API)是一个开源的Java库,它提供了处理Microsoft Excel文件的能力。它支持读取、写入以及修改Excel 97-2004(.xls)格式的文件。虽然...
### Java通过POI和JXL给Excel动态添加水印 #### 概述 在实际工作中,经常需要对敏感或重要的Excel文件进行保护措施,比如添加水印。这不仅可以增加文档的专业性,还可以作为版权保护的一种手段。本文将详细介绍...
JXL和Apache POI是两个广泛使用的库,分别提供了对Excel文件的读取和生成的支持。本篇文章将深入探讨这两个库的使用方法及其特点。 首先,JXL是一个Java API,主要用于读写Excel 97-2003格式的工作簿,即.xls文件。...