用Java导出为excel表格

导出的是最基础的excel表格,没有任何样式。

1  <input type="button" value="输出到Excel" onclick='outputtable()' class="btn btn-info    margin-right-20"  style="80px;" />  
2 
3 <script>
4     function outputtable(){
5                         url="outputAll.action"; 
6                         window.open(url);
7                     
8                 }
9 </script>

在MVC的controller层中,写action

@RequestMapping("/outputEle.action")
    public  String queEle(HttpServletRequest request,
            HttpServletResponse response, TableEle tableEle) throws Exception{
        request.setCharacterEncoding("utf-8");
        response.setContentType("application/json;charset=utf-8");
        String flag = "0";
        
            HSSFWorkbook workbook = new HSSFWorkbook();//创建对象            
            int rowNum=1;                                                                
            HSSFSheet sheet = workbook.createSheet("电量表");    //在Excel中建一个工作表,其名为默认值
            String[] name={"时间","ID","负载电量","风能电量","光伏电量","电池电量"};//字段名,就是excel中的标题头
            List<String> list1 = null;
            Map<String,List> map = new HashMap<String, List>();    
            for (int i = 0; i < list.size(); i++) {
                list1 = new ArrayList<String>();
                list1.add(list.get(i).getTime());
                list1.add(list.get(i).getID());
                list1.add(list.get(i).getLoad_PH());
                list1.add(list.get(i).getWind_PH());
                list1.add(list.get(i).getSun_PH());
                list1.add(list.get(i).getBattery_PH());
                map.put(i+"", list1);
            }
            int columnCount = name.length;    
            HSSFRow row1 = sheet.createRow(0);        //在索引0的位置创建行 
            for (short i = 0; i <columnCount; i++) {    //遍历字段名
                sheet.autoSizeColumn(i); 
                String columnName=name[i]; 
                HSSFCell cell1 = row1.createCell(i);
                cell1.setCellValue(columnName);
            }
            if(columnCount>=1){
                for (int j = 0; j < map.size(); j++) {
                    HSSFRow row = sheet.createRow(j+1);        
                    list1 = map.get(j+"");
                    for (short i = 0; i <columnCount; i++) {        //遍历集合    
                        HSSFCell cell = row.createCell(i);            //将遍历到的写到单元格
                        sheet.autoSizeColumn(i);         
                        cell.setCellValue(list1.get(i));
                    }                    
                }
            }        
            
             ByteArrayOutputStream os = new ByteArrayOutputStream();
            workbook.write(os);
              byte[] content = os.toByteArray();
                InputStream is = new ByteArrayInputStream(content);
                // 设置response参数,可以打开下载页面
                response.reset();
                response.setContentType("application/vnd.ms-excel;charset=utf-8");
                response.setHeader("Content-Disposition", "attachment;filename="+ new String(("电量表.xls").getBytes(), "iso-8859-1"));  //excel的表格名称
                ServletOutputStream out = response.getOutputStream();
                BufferedInputStream bis = null;
                BufferedOutputStream bos = null;
                try {
                    bis = new BufferedInputStream(is);
                    bos = new BufferedOutputStream(out);
                    byte[] buff = new byte[2048];
                    int bytesRead;
                    // Simple read/write loop.
                    while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                        bos.write(buff, 0, bytesRead);
                    }
                } catch (final IOException e) {
                    throw e;
                } finally {
                    if (bis != null)
                        bis.close();
                    if (bos != null)
                        bos.close();
                }
                return null;
               }

bizImpl层

    //查找电量中的信息
    @Override
    public List<TableEle> queEle(TableEle tableEle) {
        return eleMapper.queEle(tableEle);
    }
原文地址:https://www.cnblogs.com/1025lovelyday/p/6074519.html