加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

导出所选行为excle

发布时间:2020-12-14 06:12:39 所属栏目:Java 来源:网络整理
导读:要实现的是将所选行导出。例如勾选这两条 导出为 我的前台是easyUI实现的。所以前台代码为: 'btn_export' '导出所选行' 'icon-print' arr = $('#dayrec' 'getSelections' (arr.length '温馨提示!' '至少选择一行记录进行导出!' '温馨提示','确认导出?', ids

要实现的是将所选行导出。例如勾选这两条

导出为

我的前台是easyUI实现的。所以前台代码为:

'btn_export''导出所选行''icon-print' arr = $('#dayrec''getSelections' (arr.length <= 0'温馨提示!''至少选择一行记录进行导出!''温馨提示','确认导出?', ids = '' ( i = 0; i < arr.length; i+++= arr[i].id+ ',' ids = ids.substring(0,ids.length - 1'#downform').form('submit'"<%=basePath%>dayrec/exportSelected" method : "post"='温馨提示','导出失败''#dayrec').datagrid('unselectAll' }); } } }</span></pre>

后台处理逻辑为:

@RequestMapping(value = "/exportSelected",method = dataset == String[]{"日期","所属公司","招聘企业","面试人数","入职人数","入职率(%)","备注"(dataset == || dataset.size() < 1 "没有查找到相应的数据,请刷新数据后重试""application/vnd.ms-excel"); response.setHeader("Content-Disposition","attachment;filename=dayRecruit.xls""Pragma","No-cache""Cache-Control","no-store"= ExportExcelsUtil.exportExcel(headers,dataset,sos);</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;如果不需要额外数据exportExcel(headers,sos) </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; ExportExcelsUtil.exportExcel(2,1,2,"用户信息",headers,sos)</span>

<span style="color: #000000"> response.flushBuffer();
} <span style="color: #0000ff">catch<span style="color: #000000"> (IOException e) {
e.printStackTrace();
}
<span style="color: #0000ff">return "成功导出"+dataset.size()+"条用户数据。"<span style="color: #000000">;
}

DayRecruitService的逻辑:

List List</span><Object[]> objList = <span style="color: #0000ff"&gt;new</span> ArrayList<Object[]><span style="color: #000000"&gt;(); List</span><DayRecruit> dayrec_list=<span style="color: #000000"&gt;dayRecruitDAO.findById(ids); </span><span style="color: #0000ff"&gt;if</span>(dayrec_list!=<span style="color: #0000ff"&gt;null</span>&amp;&amp;dayrec_list.size()>0<span style="color: #000000"&gt;){ </span><span style="color: #0000ff"&gt;for</span>(<span style="color: #0000ff"&gt;int</span> i=0;i<dayrec_list.size();i++<span style="color: #000000"&gt;){<span style="color: #99cc00"&gt;//循环遍历查询到的数据结果列表 将每一条数据插入到对应行单元格</span> Object[] obj</span>=<span style="color: #0000ff"&gt;new</span> Object[7<span style="color: #000000"&gt;]; DayRecruit rec</span>=<span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; DayRecruit(); rec</span>=<span style="color: #000000"&gt;dayrec_list.get(i); </span><span style="color: #0000ff"&gt;if</span>(rec!=<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;){ obj[</span>0]=<span style="color: #000000"&gt;rec.getDate(); obj[</span>1]=<span style="color: #000000"&gt;rec.getCustomer().getOrganization().getOrganizationName(); obj[</span>2]=<span style="color: #000000"&gt;rec.getCustomer().getEnterpriseName(); obj[</span>3]=(rec.getViewerNu())==<span style="color: #0000ff"&gt;null</span>?""<span style="color: #000000"&gt;:rec.getViewerNu(); obj[</span>4]=(rec.getEntryNu()==<span style="color: #0000ff"&gt;null</span>)?""<span style="color: #000000"&gt;:rec.getEntryNu(); </span><span style="color: #0000ff"&gt;if</span>(rec.getViewerNu()!=<span style="color: #0000ff"&gt;null</span>&amp;&amp;rec.getEntryNu()!=<span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;) obj[</span>5]=(Math.round(Double.parseDouble(rec.getEntryNu())/Double.parseDouble(rec.getViewerNu())*100))/1.0+"%"<span style="color: #000000"&gt;; </span><span style="color: #0000ff"&gt;else</span><span style="color: #000000"&gt; obj[</span>5]=""<span style="color: #000000"&gt;; obj[</span>6]=(rec.getRemarks()==<span style="color: #0000ff"&gt;null</span>)?""<span style="color: #000000"&gt;:rec.getRemarks(); objList.add(obj); } } } </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; objList;<span style="color: #99cc00"&gt;//返回了对应的一行一行数据</span> }</span></pre>

DayRecruitDAO后台逻辑为:

List log.debug("get DayRecruit instance with id"+ list = = (ids == || ids.trim().equals("" StringBuffer hql </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; StringBuffer( </span>"from DayRecruit where id in(?"<span style="color: #000000"&gt;); String[] id </span>= ids.split(","<span style="color: #000000"&gt;); arrList.add(id[</span>0<span style="color: #000000"&gt;]); </span><span style="color: #0000ff"&gt;for</span>(<span style="color: #0000ff"&gt;int</span> i=0;i<id.length;i++<span style="color: #000000"&gt;){ hql.append(</span>",?"<span style="color: #000000"&gt;); arrList.add(id[i]); } hql.append(</span>")"<span style="color: #000000"&gt;); list </span>= (List<DayRecruit>) <span style="color: #0000ff"&gt;this</span>.getListByHQL(-1,-1<span style="color: #000000"&gt;,hql.toString(),</span><span style="color: #0000ff"&gt;this</span><span style="color: #000000"&gt;.toStringArray(arrList)); </span><span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; list; } </span><span style="color: #0000ff"&gt;catch</span><span style="color: #000000"&gt; (RuntimeException re) { </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; TODO: handle exception</span> log.debug("get failed"<span style="color: #000000"&gt;,re); </span><span style="color: #0000ff"&gt;throw</span><span style="color: #000000"&gt; re; } }</span></pre>

其中涉及到的hql语句模板是

List getListByHQL( nStartRow, Query query= ( j = 0,i=0; j < strParams.length; j++(strParams[j]!=(!strParams[j].equals(""++ (nRowSize > 0 && nStartRow > -1-1)* </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;log.debug("BEGIN:" + DateUtils.getStrOfDateMinute());</span> List<?> objList =<span style="color: #000000"&gt; query.list(); </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;log.debug("END:" + DateUtils.getStrOfDateMinute());</span> <span style="color: #0000ff"&gt;return</span><span style="color: #000000"&gt; objList; } </span></pre>

此处还涉及到了工具类? 代码为:

<span style="color: #0000ff">public <span style="color: #0000ff">class<span style="color: #000000"> ExportExcelsUtil {
<span style="color: #008000">/**
<span style="color: #008000">

  • <span style="color: #808080">@param<span style="color: #008000"> dataset 数据
  • <span style="color: #808080">@param<span style="color: #008000"> out 流
    <span style="color: #008000">*/
    <span style="color: #0000ff">public <span style="color: #0000ff">static <span style="color: #0000ff">void exportExcel(Collection<span style="color: #000000"> dataset,OutputStream out) {
    exportExcel(0,"sheet1",<span style="color: #0000ff">null,out,"yyyy-MM-dd"<span style="color: #000000">);
    }
</span><span style="color: #008000"&gt;/**</span><span style="color: #008000"&gt;
 * 
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; headers 标题
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; dataset 数据
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; out
 </span><span style="color: #008000"&gt;*/</span>
<span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <T> <span style="color: #0000ff"&gt;void</span> exportExcel(String[] headers,Collection<T><span style="color: #000000"&gt; dataset,"yyyy-MM-dd"<span style="color: #000000"&gt;);
}

</span><span style="color: #008000"&gt;/**</span><span style="color: #008000"&gt;
 * 
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; headers 标题
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; dataset 数据
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; out 
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; pattern 日期格式
 </span><span style="color: #008000"&gt;*/</span>
<span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <T> <span style="color: #0000ff"&gt;void</span> exportExcel(String[] headers,OutputStream out,String pattern) {
    exportExcel(</span>0,"sheet1"<span style="color: #000000"&gt;,pattern);
}

</span><span style="color: #008000"&gt;/**</span><span style="color: #008000"&gt;
 * 导出数据
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; colSplit 需要冻结的列数目,如果没有传0
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; rowSplit 需要冻结的行数目,如果没有传0
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; dataBeginIndex 数据从第几个字段开始导出,每一条的记录,如果没有传0
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; sheetName 表格名字,sheet1的名称
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; headers 标题
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; dataset 数据
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; out 输出流
 </span><span style="color: #008000"&gt;*/</span>
<span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <T> <span style="color: #0000ff"&gt;void</span> exportExcel(<span style="color: #0000ff"&gt;int</span> colSplit,<span style="color: #0000ff"&gt;int</span> rowSplit,<span style="color: #0000ff"&gt;int</span> dataBeginIndex,String sheetName,String[] headers,OutputStream out){
    exportExcel(colSplit,rowSplit,dataBeginIndex,sheetName,</span><span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;);
}

</span><span style="color: #008000"&gt;/**</span><span style="color: #008000"&gt;
 * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; <T>
 * 
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; title
 *            表格标题名
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; headers
 *            表格属性列名数组
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; dataset
 *            1.需要显示的数据集合,集合中一定要放置符合javabean风格的类的对象。此方法支持的 javabean属性的数据类型有基本数据类型及String,Date,byte[](图片数据)
 *            2.或者Map,key是string类型,value属性
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; out
 *            与输出设备关联的流对象,可以将EXCEL文档导出到本地文件或者网络中
 * </span><span style="color: #808080"&gt;@param</span><span style="color: #008000"&gt; pattern
 *            如果有时间数据,设定输出格式。默认为"yyy-MM-dd",目前不需要
 </span><span style="color: #008000"&gt;*/</span><span style="color: #000000"&gt;
@SuppressWarnings(</span>"unchecked"<span style="color: #000000"&gt;)
</span><span style="color: #0000ff"&gt;public</span> <span style="color: #0000ff"&gt;static</span> <T> <span style="color: #0000ff"&gt;void</span> exportExcel(<span style="color: #0000ff"&gt;int</span> colSplit,String title,String pattern) {
    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 声明一个工作薄</span>
    HSSFWorkbook workbook = <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; HSSFWorkbook();
    String sheetName </span>= (title == <span style="color: #0000ff"&gt;null</span> || title.equals("")) ? "sheet1"<span style="color: #000000"&gt; : title;
    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 生成一个表格</span>
    HSSFSheet sheet =<span style="color: #000000"&gt; workbook.createSheet(sheetName);
    </span><span style="color: #0000ff"&gt;try</span><span style="color: #000000"&gt;{
        </span><span style="color: #0000ff"&gt;if</span>(colSplit != 0 || rowSplit != 0<span style="color: #000000"&gt;){
            sheet.createFreezePane( colSplit,colSplit,rowSplit );</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;冻结首行(0,1);2,1</span>

<span style="color: #000000"> }
<span style="color: #008000">//<span style="color: #008000"> 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth((<span style="color: #0000ff">short) 15<span style="color: #000000">);
<span style="color: #008000">//<span style="color: #008000"> 生成一个样式
HSSFCellStyle style =<span style="color: #000000"> workbook.createCellStyle();
<span style="color: #008000">//<span style="color: #008000"> 设置这些样式
<span style="color: #000000"> 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);
<span style="color: #008000">//<span style="color: #008000"> 生成一个字体
HSSFFont font =<span style="color: #000000"> workbook.createFont();
font.setColor(HSSFColor.VIOLET.index);
font.setFontHeightInPoints((<span style="color: #0000ff">short) 12<span style="color: #000000">);
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
<span style="color: #008000">//<span style="color: #008000"> 把字体应用到当前的样式
<span style="color: #000000"> style.setFont(font);
style.setWrapText(<span style="color: #0000ff">true);<span style="color: #008000">//<span style="color: #008000">设置自动换行

        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 生成并设置另一个样式</span>
        HSSFCellStyle style2 =<span style="color: #000000"&gt; 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);
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 生成另一个字体</span>
        HSSFFont font2 =<span style="color: #000000"&gt; workbook.createFont();
        font2.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 把字体应用到当前的样式</span>

<span style="color: #000000"> style2.setFont(font2);
style2.setWrapText(<span style="color: #0000ff">true);<span style="color: #008000">//<span style="color: #008000">设置自动换行

        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 声明一个画图的顶级管理器</span>
        HSSFPatriarch patriarch =<span style="color: #000000"&gt; sheet.createDrawingPatriarch();
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 定义注释的大小和位置,详见文档  
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;HSSFComment comment = patriarch.createComment(new HSSFClientAnchor(0,(short) 4,(short) 6,5));
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 设置注释内容  
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;comment.setString(new HSSFRichTextString("可以在POI中添加注释!"));
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 设置注释作者,当鼠标移动到单元格上是可以在状态栏中看到该内容. 
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;comment.setAuthor("leno");

        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 产生表格标题行</span>
        HSSFRow row = sheet.createRow(0<span style="color: #000000"&gt;);
        </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;short</span> i = 0; i < headers.length; i++<span style="color: #000000"&gt;) {
            HSSFCell cell </span>=<span style="color: #000000"&gt; row.createCell(i);
            cell.setCellStyle(style);
            HSSFRichTextString text </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; HSSFRichTextString(headers[i]);
            cell.setCellValue(text);
        }

        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 遍历集合数据,产生数据行</span>
        Iterator<T> it =<span style="color: #000000"&gt; dataset.iterator();
        </span><span style="color: #0000ff"&gt;int</span> index = 0<span style="color: #000000"&gt;;
        </span><span style="color: #0000ff"&gt;while</span><span style="color: #000000"&gt; (it.hasNext()) {
            index</span>++<span style="color: #000000"&gt;;
            row </span>=<span style="color: #000000"&gt; sheet.createRow(index);
            T t </span>=<span style="color: #000000"&gt; (T) it.next();
            </span><span style="color: #0000ff"&gt;if</span>(t <span style="color: #0000ff"&gt;instanceof</span><span style="color: #000000"&gt; Class){
                </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 利用反射,根据javabean属性的先后顺序,动态调用getXxx()方法得到属性值</span>
                Field[] fields =<span style="color: #000000"&gt; t.getClass().getDeclaredFields();
                </span><span style="color: #0000ff"&gt;for</span> (<span style="color: #0000ff"&gt;short</span> i = 0; i < fields.length; i++<span style="color: #000000"&gt;) {
                    HSSFCell cell </span>=<span style="color: #000000"&gt; row.createCell(i);
                    cell.setCellStyle(style2);
                    Field field </span>=<span style="color: #000000"&gt; fields[i];
                    String fieldName </span>=<span style="color: #000000"&gt; field.getName();
                    String getMethodName </span>= "get" + fieldName.substring(0,1).toUpperCase() + fieldName.substring(1<span style="color: #000000"&gt;);
                    Class tCls </span>=<span style="color: #000000"&gt; t.getClass();
                    Method getMethod </span>= tCls.getMethod(getMethodName,<span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; Class[] {});
                    Object value </span>= getMethod.invoke(t,<span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; Object[] {});
                    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 判断值的类型后进行强制类型转换</span>
                    String textValue = <span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;;
                    </span><span style="color: #0000ff"&gt;if</span> (value <span style="color: #0000ff"&gt;instanceof</span> <span style="color: #0000ff"&gt;byte</span><span style="color: #000000"&gt;[]) {
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 有图片时,设置行高为60px;</span>
                        row.setHeightInPoints(600<span style="color: #000000"&gt;);
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 设置图片所在列宽度为80px,注意这里单位的一个换算</span>
                        sheet.setColumnWidth(i,(<span style="color: #0000ff"&gt;short</span>) (35.7 * 400<span style="color: #000000"&gt;));
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; sheet.autoSizeColumn(i);</span>
                        <span style="color: #0000ff"&gt;byte</span>[] bsValue = (<span style="color: #0000ff"&gt;byte</span><span style="color: #000000"&gt;[]) value;
                        HSSFClientAnchor anchor </span>= <span style="color: #0000ff"&gt;new</span> HSSFClientAnchor(0,1023,600,i,index,(<span style="color: #0000ff"&gt;short</span>) (i+1),index+1<span style="color: #000000"&gt;);
                        anchor.setAnchorType(</span>2<span style="color: #000000"&gt;);
                        HSSFPicture pic </span>=<span style="color: #000000"&gt; patriarch.createPicture(anchor,workbook.addPicture(bsValue,HSSFWorkbook.PICTURE_TYPE_JPEG));
                        pic.resize();</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;这句话一定不要,这是用图片原始大小来显示</span>
                    } <span style="color: #0000ff"&gt;else</span><span style="color: #000000"&gt; {
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 其它数据类型都当作字符串简单处理</span>
                        textValue =<span style="color: #000000"&gt; value.toString();
                    }

                    </span><span style="color: #0000ff"&gt;if</span> (textValue != <span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;){
                        HSSFRichTextString richString </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; HSSFRichTextString(textValue);
                         HSSFFont font3 </span>=<span style="color: #000000"&gt; workbook.createFont();
                         font3.setColor(HSSFColor.BLUE.index);
                         richString.applyFont(font3);
                         cell.setCellValue(richString);
                    }
                }
            }</span><span style="color: #0000ff"&gt;else</span> <span style="color: #0000ff"&gt;if</span>(t <span style="color: #0000ff"&gt;instanceof</span> ListOrderedMap || t <span style="color: #0000ff"&gt;instanceof</span><span style="color: #000000"&gt; HashMap){
                </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;HashMap<String,String> map = null;</span>
                ListOrderedMap map =<span style="color: #000000"&gt; (ListOrderedMap) t;
                Iterator</span><String> keys =<span style="color: #000000"&gt; map.keySet().iterator();
                </span><span style="color: #0000ff"&gt;short</span> i = 0<span style="color: #000000"&gt;;
                </span><span style="color: #0000ff"&gt;while</span><span style="color: #000000"&gt;(keys.hasNext()){
                    HSSFCell cell </span>=<span style="color: #000000"&gt; row.createCell(i);
                    cell.setCellStyle(style2);
                    String keyname </span>=<span style="color: #000000"&gt; keys.next();
                    </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;此处根据keyname生成标题</span>
                    Object keyValue =<span style="color: #000000"&gt; map.get(keyname);
                    String textValue </span>= <span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;;
                    </span><span style="color: #0000ff"&gt;if</span>(keyValue <span style="color: #0000ff"&gt;instanceof</span> <span style="color: #0000ff"&gt;byte</span><span style="color: #000000"&gt;[]){
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 有图片时,设置行高为60px;</span>
                        row.setHeightInPoints(300<span style="color: #000000"&gt;);
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; 设置图片所在列宽度为80px,(<span style="color: #0000ff"&gt;short</span>) (35.7 * 200<span style="color: #000000"&gt;));
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; sheet.autoSizeColumn(i);</span>
                        <span style="color: #0000ff"&gt;byte</span>[] bsValue = (<span style="color: #0000ff"&gt;byte</span><span style="color: #000000"&gt;[]) keyValue;
                        HSSFClientAnchor anchor </span>= <span style="color: #0000ff"&gt;new</span> HSSFClientAnchor(0,255,HSSFWorkbook.PICTURE_TYPE_JPEG));
                        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;pic.resize();</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;这句话一定不要,这是用图片原始大小来显示</span>
                    }<span style="color: #0000ff"&gt;else</span><span style="color: #000000"&gt;{
                        textValue </span>=<span style="color: #000000"&gt; keyValue.toString();
                    }
                    </span><span style="color: #0000ff"&gt;if</span> (textValue != <span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;){
                            HSSFRichTextString richString </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; HSSFRichTextString(textValue);
                        HSSFFont font3 </span>=<span style="color: #000000"&gt; workbook.createFont();
                        font3.setColor(HSSFColor.BLUE.index);
                        richString.applyFont(font3);
                        cell.setCellValue(richString);
                        }
                    i</span>++<span style="color: #000000"&gt;;
                }</span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;end while(keys.hasNext())</span>
            }<span style="color: #0000ff"&gt;else</span> <span style="color: #0000ff"&gt;if</span>(t <span style="color: #0000ff"&gt;instanceof</span><span style="color: #000000"&gt; Object[]){
                Object[] object </span>=<span style="color: #000000"&gt; (Object[])t;
                </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt;忽略前两个id字段,之后可以作为参数传入</span>
                <span style="color: #0000ff"&gt;for</span>(<span style="color: #0000ff"&gt;int</span> len = dataBeginIndex;len<object.length;len++<span style="color: #000000"&gt;){                        
                    String textValue </span>= ""<span style="color: #000000"&gt;;
                    </span><span style="color: #0000ff"&gt;if</span>(object[len] != <span style="color: #0000ff"&gt;null</span><span style="color: #000000"&gt;){
                        textValue </span>=<span style="color: #000000"&gt; object[len].toString();
                    }
                    HSSFCell cell </span>= row.createCell(len-<span style="color: #000000"&gt;dataBeginIndex);
                    cell.setCellStyle(style2);
                    HSSFRichTextString richString </span>= <span style="color: #0000ff"&gt;new</span><span style="color: #000000"&gt; HSSFRichTextString(textValue);
                    HSSFFont font3 </span>=<span style="color: #000000"&gt; workbook.createFont();
                    font3.setColor(HSSFColor.BLUE.index);
                    richString.applyFont(font3);
                    cell.setCellValue(richString);
                }
            }

        }
        workbook.write(out);
        out.flush();
        out.close();
    }</span><span style="color: #0000ff"&gt;catch</span><span style="color: #000000"&gt; (SecurityException e) {
        </span><span style="color: #008000"&gt;//</span><span style="color: #008000"&gt; TODO Auto-generated catch block</span>

<span style="color: #000000"> e.printStackTrace();
} <span style="color: #0000ff">catch<span style="color: #000000"> (NoSuchMethodException e) {
<span style="color: #008000">//<span style="color: #008000"> TODO Auto-generated catch block
<span style="color: #000000"> e.printStackTrace();
} <span style="color: #0000ff">catch<span style="color: #000000"> (IllegalArgumentException e) {
<span style="color: #008000">//<span style="color: #008000"> TODO Auto-generated catch block
<span style="color: #000000"> e.printStackTrace();
} <span style="color: #0000ff">catch<span style="color: #000000"> (IllegalAccessException e) {
<span style="color: #008000">//<span style="color: #008000"> TODO Auto-generated catch block
<span style="color: #000000"> e.printStackTrace();
} <span style="color: #0000ff">catch<span style="color: #000000"> (InvocationTargetException e) {
<span style="color: #008000">//<span style="color: #008000"> TODO Auto-generated catch block
<span style="color: #000000"> e.printStackTrace();
} <span style="color: #0000ff">catch<span style="color: #000000"> (IOException e) {
<span style="color: #008000">//<span style="color: #008000"> TODO Auto-generated catch block
<span style="color: #000000"> e.printStackTrace();
} <span style="color: #0000ff">finally<span style="color: #000000"> {
<span style="color: #008000">//<span style="color: #008000"> 清理资源
<span style="color: #000000">
}

}

}

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读