poi 导出excel 生成等比例图片
poi 导出的带等比例图片方法
- /**
- *
- * <p>Description: 将一物一码列表导出到excel</p>
- * @param response
- * @param list
- * @throws IOException
- */
- public void exportExcel(DispMeta meta) throws IOException {
- Map<String, Object> params = new HashMap<String, Object>();
- params.put("orderNum", meta.getRequest().getParameter("orderNum"));
- meta.setParams(params);
- IDispApi service;
- meta.setParams(params);
- meta.setMapkey("OneThingAndOneYardService.queryProductCodeListExport");
- try {
- service = find(ModulePbDesc.PB_SALES_02, meta.getMapkey());
- service.disp(meta);
- } catch (DispException e) {
- e.printStackTrace();
- }
- ArrayList<Map<String,Object>> list = (ArrayList<Map<String, Object>>) meta.getResult();
- HSSFWorkbook workbook = new HSSFWorkbook ();// 创建一个Excel文件
- HSSFSheet sheet = workbook.createSheet("一物一码");// 创建一个Excel的Sheet
- sheet.setColumnWidth(0, 40 * 256);
- sheet.setColumnWidth(1, 40 * 256);
- sheet.setColumnWidth(2, 40 * 256);
- sheet.setColumnWidth(3, 40 * 256);
- sheet.setColumnWidth(4, 40 * 256);
- sheet.setColumnWidth(5, 40 * 256);
- sheet.setColumnWidth(6, 40 * 256);
- sheet.setColumnWidth(7, 40 * 256);
- HSSFRow row4 = sheet.createRow(0);
- HSSFCell cell4_1 = row4.createCell(0);
- HSSFCell cell4_2 = row4.createCell(1);
- HSSFCell cell4_3 = row4.createCell(2);
- HSSFCell cell4_4 = row4.createCell(3);
- HSSFCell cell4_5 = row4.createCell(4);
- HSSFCell cell4_6 = row4.createCell(5);
- HSSFCell cell4_7 = row4.createCell(6);
- HSSFCell cell4_8 = row4.createCell(7);
- cell4_1.setCellValue( "一物一码" );
- cell4_2.setCellValue( "订单编号" );
- cell4_3.setCellValue( "商品编码" );
- cell4_4.setCellValue( "规格材质" );
- cell4_5.setCellValue( "主人账号" );
- cell4_6.setCellValue( "柜号" );
- cell4_7.setCellValue( "配置号" );
- cell4_8.setCellValue( "生效日期" );
- HSSFCellStyle style4= workbook.createCellStyle();
- style4.setAlignment(HSSFCellStyle. ALIGN_CENTER);//水平居中
- style4.setVerticalAlignment(HSSFCellStyle. VERTICAL_CENTER);//垂直居中
- style4.setWrapText( true);//自动换行
- style4.setFillForegroundColor(IndexedColors.SKY_BLUE.getIndex());
- style4.setFillPattern(CellStyle.SOLID_FOREGROUND);
- HSSFFont font4 = workbook.createFont();
- // font.setFontName("华文行楷");//设置字体名称
- font4.setFontHeightInPoints(( short)15);//设置字号
- // font4.setBoldweight(boldweight)( true);
- style4.setFont(font4);
- // cell4.setCellStyle(style4);
- cell4_1.setCellStyle(style4);
- cell4_2.setCellStyle(style4);
- cell4_3.setCellStyle(style4);
- cell4_4.setCellStyle(style4);
- cell4_5.setCellStyle(style4);
- cell4_6.setCellStyle(style4);
- cell4_7.setCellStyle(style4);
- cell4_8.setCellStyle(style4);
- //row 4 - items List header -------------------------end
- //row 5 - items List -------------------------start
- for (int i = 0; i < list.size(); i++) {
- HSSFRow row5 = sheet.createRow( i+1);
- HSSFCell cell5_1 = row5.createCell(0);
- HSSFCell cell5_2 = row5.createCell(1);
- HSSFCell cell5_3 = row5.createCell(2);
- HSSFCell cell5_4 = row5.createCell(3);
- HSSFCell cell5_5 = row5.createCell(4);
- HSSFCell cell5_6 = row5.createCell(5);
- HSSFCell cell5_7 = row5.createCell(6);
- HSSFCell cell5_8 = row5.createCell(7);
- Map<String, Object> map = list.get(i);
- // img --start
- ByteArrayOutputStream outStream_item = new ByteArrayOutputStream();
- // 将图片写入流中
- BufferedImage bufferImg_item = ImageIO.read(new FileInputStream("D:"+map.get("img_code").toString()));
- ImageIO. write(bufferImg_item, "PNG", outStream_item);
- row5.setHeightInPoints(80);
- int width = bufferImg_item.getWidth();//原始宽度
- int height = bufferImg_item.getHeight();//原始高度
- // 一个12号字体的宽度为13,前面已设置了列的宽度为30*256,故这里的等比例高度计算如下
- height = (int) Math.round((height * (30 * 13) * 1.0 / width));
- // excel单元格高度是以点单位,1点=2像素; POI中Height的单位是1/20个点,故设置单元的等比例高度如下
- row5.setHeight((short) (height / 2 * 20));
- // 利用HSSFPatriarch将图片写入EXCEL
- HSSFPatriarch patri_item = sheet.createDrawingPatriarch();
- HSSFClientAnchor anchor_item = new HSSFClientAnchor(0, 0, 0, 0, (short ) 0, i+1, (short) 1, i+2);
- patri_item.createPicture(anchor_item, workbook.addPicture(outStream_item.toByteArray(), HSSFWorkbook.PICTURE_TYPE_PNG));
- // img -- end
- //订单编号
- cell5_2.setCellValue(map.get("order_num").toString());
- //商品编码
- cell5_3.setCellValue(map.get("product_num").toString());
- //规格材质
- cell5_4.setCellValue(map.get("size_name").toString());
- //主人账号
- cell5_5.setCellValue(map.get("host_account")==null?"":map.get("host_account").toString());
- //柜号
- cell5_6.setCellValue(map.get("cabinet_number").toString());
- //配置号
- cell5_7.setCellValue(map.get("config_num").toString());
- //生效日期
- cell5_8.setCellValue(map.get("effective_time").toString());
- HSSFCellStyle style5=workbook.createCellStyle();
- style5.setAlignment(HSSFCellStyle.ALIGN_CENTER);//水平居中
- style5.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//垂直居中
- style5.setWrapText( true);//自动换行
- cell5_2.setCellStyle(style5);
- cell5_3.setCellStyle(style5);
- cell5_4.setCellStyle(style5);
- cell5_5.setCellStyle(style5);
- cell5_6.setCellStyle(style5);
- cell5_7.setCellStyle(style5);
- cell5_8.setCellStyle(style5);
- }
- //row 5 - items List -------------------------end
- // 第六步,将文件存到指定位置
- try
- {
- String excelName="一物一码.xls";
- meta.getResponse().addHeader( "Content-Disposition", "attachment;filename="
- + new String(excelName.getBytes("gb2312" ), "ISO-8859-1" ));
- // response.addHeader("Content-Length", "" + 1024);
- meta.getResponse().setContentType("application/vnd.ms-excel;charset=utf-8" );
- BufferedOutputStream out = new BufferedOutputStream(meta.getResponse().getOutputStream());
- workbook.write(out);
- out.close();
- }
- catch (Exception e )
- {
- e.printStackTrace();
- }
- }
poi 导出excel 生成等比例图片的更多相关文章
- POI导出EXCEL经典实现
1.Apache POI简介 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开发人员则 ...
- Java POI 导出EXCEL经典实现 Java导出Excel
转自http://blog.csdn.net/evangel_z/article/details/7332535 在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者 ...
- java中使用poi导出excel表格数据并且可以手动修改导出路径
在我们开发项目中,很多时候会提出这样的需求:将前端的某某数据以excel表格导出,今天就给大家写一个简单的模板. 这里我们选择使用poi导出excel: 第一步:导入需要的jar包到 lib 文件夹下
- 重构:以Java POI 导出EXCEL为例
重构 开头先抛出几个问题吧,这几个问题也是<重构:改善既有代码的设计>这本书第2章的问题. 什么是重构? 为什么要重构? 什么时候要重构? 接下来就从这几个问题出发,通过这几个问题来系统的 ...
- 重构:以Java POI 导出EXCEL为例2
前言 上一篇博文已经将一些对象抽象成成员变量以及将一些代码块提炼成函数.这一节将会继续重构原有的代码,将一些函数抽象成类,增加成员变量,将传入的参数合成类等等. 上一篇博文地址:http://www. ...
- 关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
poi导出excel最常用的是第一种方式HSSFWorkbook,不过这种方式数据量大的话会产生内存溢出问题,SXSSFWorkbook是一种大数据量导出格式,csv是另一种excel导出的一种轻快的 ...
- 关于poi导出excel方式HSSFWorkbook(xls).XSSFWorkbook(xlsx).SXSSFWorkbook.csv的总结
1.HSSFWorkbook(xls) import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermo ...
- POI导出EXCEL经典实现(转)
http://www.cnblogs.com/xwdreamer/archive/2011/07/20/2296975.html 1.Apache POI简介 Apache POI是Apache软件基 ...
- 使用POI导出excel基础篇
最近搞了下POI导出Excel,听说很多次,却是第一次搞. 在pom.xml中引入依赖 <dependency> <groupId>org.apache.poi</gro ...
随机推荐
- Unity3D研究院编辑器之重写Hierarchy的右键菜单
Hierarchy视图中选择一个游戏对象以后通过右键可以打开一个unity默认菜单,一般情况下都可以满足我们,但是我想真对某些特殊的游戏对象而展开特殊的菜单.如下图所示,比如这样: 代码: using ...
- Mybatis的配置文件和映射文件详解
一.Mybatis的全局配置文件 1.SqlMapConfig.xml是mybatis的全局配置文件,配置内容如下: properties(属性) settings(全局配置参数) typeAlias ...
- Jaccard Similarity and Shingling
https://www.cs.utah.edu/~jeffp/teaching/cs5955/L4-Jaccard+Shingle.pdf https://www.cs.utah.edu/~jeffp ...
- 中文WebFont探索
本文主要讲中文webFont的相关知识,包含了业界现状.WebFont优势.实现方案等. 一 业界使用WebFont现状 1.1 英文WebFont使用现状 英文版已使用非常广泛.比较有名的字体库:G ...
- 【题解】P1613跑路
[题解]P1613 鸽王跑路 一道思维好题! 考虑\(2^k\)的传递性.直接64遍\(floyd\)求所有\(2^k\)的路径,转移方程是 \(dp(i,j,k)=[dp[i][t][k-1]\)& ...
- 使用maven3 创建自定义的archetype
创建自己的archetype一般有两种方式,比较简单的就是create from project 1.首先使用eclipse创建一个新的maven project,然后把配置好的一些公用的东西放到相应 ...
- SpringBoot学习笔记(8):事物处理
SpringBoot学习笔记(8):事物处理 快速入门 在传统的JDBC事务代码开发过程中,业务代码只有一部分,大部分都是与JDBC有关的功能代码,比如数据库的获取与关闭以及事务的提交与回滚.大量的t ...
- P3209 [HNOI2010]平面图判定
P3209 [HNOI2010]平面图判定 哈密尔顿环之外的任意一条边,要么连在环内部,要么连在环外部 判断两条边在同一部分会相交,则这两条边必须分开 那么把边看作点连边,跑二分图染色就行 #incl ...
- ping: sendto: Network is unreachable【转】
本文转载自:http://blog.sina.com.cn/s/blog_640531380102wmzb.html 在我的板子上ping路由上的IP的时候可以ping通,但是ping外网的IP的时候 ...
- <JAVA图像学习笔记>关于Graphics/Graphics2D以及简单的几何图像制作(一个简单钟表的实现)
题外话:正好赶上OperatingSystem的作业要做一个模拟线程/进程调度的问题,决定用JAVA实现才发现这些内容和之前学过的GUI制作是两码事儿- -b 通过学习java.swing库的Acti ...