JAVAWeb SSH框架 利用POI 导出EXCEL,弹出保存框

导入包这一些不多说,直接贴出关键代码,JSP只要点一个Action链接就行。

poi包我是用:poi-3.11-20141221.jar

亲测有效:

效果:

Action 类代码:

private InputStream inputStream; //(get,set方法省略)定义一个输入流,用于接住在Service类生成的含有EXCEL的输入流

public String exportNetworkDeviceList() throws Exception {
    setInputStream(networkDeviceService.exportNetworkDeviceList(NET_STATUS, NET_MODEL_NUMBER, NET_BUILDING, NET_FLOOR, NET_LOCATION)); 
        return "getNetworkDeviceExportList";
    }

Service类代码:(生成EXCEL表格代码在Service类写)

public InputStream exportNetworkDeviceList(String netStatus,
            String netModelNumber, String netBuilding, String netFloor,
            String netLocation) {
        HSSFWorkbook wb = new HSSFWorkbook();
        // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
        HSSFSheet sheet = wb.createSheet("表一");
        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
        HSSFRow row = sheet.createRow((int) 0);
        // 第四步,创建单元格,并设置值表头 设置表头居中
        HSSFCellStyle style = wb.createCellStyle();
        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式

  //写列名,视自己的需求而定
        HSSFCell cell = row.createCell(0);
        cell.setCellValue("设备型号");
        cell.setCellStyle(style);
        cell = row.createCell(1);
        cell.setCellValue("端口数");
        cell.setCellStyle(style);
        cell = row.createCell(2);
        cell.setCellValue("设备名称");
        cell.setCellStyle(style);
        cell = row.createCell(3);
        cell.setCellValue("状态");
        cell.setCellStyle(style);
        cell = row.createCell(4);
        cell.setCellValue("楼宇");
        cell.setCellStyle(style);
        cell = row.createCell(5);
        cell.setCellValue("楼层");
        cell.setCellStyle(style);
        cell = row.createCell(6);
        cell.setCellValue("位置");
        cell.setCellStyle(style);
        cell = row.createCell(7);
        cell.setCellValue("接口");
        cell.setCellStyle(style);
        cell = row.createCell(8);
        cell.setCellValue("IP地址");
        cell.setCellStyle(style);
        cell = row.createCell(9);
        cell.setCellValue("网关");
        cell.setCellStyle(style);
        cell = row.createCell(10);
        cell.setCellValue("备注");
        cell.setCellStyle(style);
        
        //构造数据库查询语句,待会我用与从DAO类取数据,视自己的需求而定
        String hql = "from NetworkDevice ";
        if (netStatus == null) {

} else {
            if (netStatus.equalsIgnoreCase("00")) {
                hql += "n where n.NET_STATUS!=null ";
            } else {
                hql += "n where n.NET_STATUS=‘" + netStatus + "‘ ";
            }
            ;
            if (!netModelNumber.isEmpty()) {
                hql += "AND n.NET_MODEL_NUMBER = ‘" + netModelNumber + "‘ ";
            }
            ;
            if (!netBuilding.isEmpty()) {
                hql += "AND n.NET_BUILDING = ‘" + netBuilding + "‘ ";
            }
            ;
            if (!netFloor.isEmpty()) {
                hql += "AND n.NET_FLOOR = ‘" + netFloor + "‘ ";
            }
            ;
            if (!netLocation.isEmpty()) {
                hql += "AND n.NET_LOCATION = ‘" + netLocation + "‘ ";
            }
            ;
        }
        hql += "order by 1 DESC";
        
        // 第五步,写入实体数据 实际应用中这些数据从数据库得到,
        List<NetworkDevice> exportList = networkDeviceDaoImpl.exportNetworkDeviceList(hql);
        for (int i = 0; i < exportList.size(); i++) {
            row = sheet.createRow((int) i + 1);
            NetworkDevice netDevice = exportList.get(i);
            // 第四步,创建单元格,并设置值
            row.createCell(0).setCellValue(netDevice.getNET_MODEL_NUMBER());
            row.createCell(1).setCellValue(netDevice.getNET_DEVICE_PORT());
            row.createCell(2).setCellValue(netDevice.getNET_DEVICE_NAME());
            row.createCell(3).setCellValue(netDevice.getNET_STATUS());
            row.createCell(4).setCellValue(netDevice.getNET_BUILDING());
            row.createCell(5).setCellValue(netDevice.getNET_FLOOR());
            row.createCell(6).setCellValue(netDevice.getNET_LOCATION());
            row.createCell(7).setCellValue(netDevice.getNET_INTERFACE());
            row.createCell(8).setCellValue(netDevice.getNET_IP());
            row.createCell(9).setCellValue(netDevice.getNET_GATEWAY());
            row.createCell(10).setCellValue(netDevice.getNET_REMARK());

}
        //自动设置EXCEL的列宽,视自己的需求而定
        sheet.autoSizeColumn((short)0);
        sheet.autoSizeColumn((short)2);
        sheet.autoSizeColumn((short)6);
        sheet.autoSizeColumn((short)7);
        sheet.autoSizeColumn((short)8);
        sheet.autoSizeColumn((short)9);
        sheet.autoSizeColumn((short)10);

  //设置文件名,用格式化日期来生成一个ID
        String filePath="";
        Date dt = new Date();
        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
        String date = df.format(dt).toString();
        filePath = "NetDevice" + date + ".xls";
        File file=new File(filePath);
        try{
            OutputStream out=new FileOutputStream(file);
            wb.write(out);
            out.close();
        }catch(Exception e){
            e.printStackTrace();
        }
        InputStream in=null;
        try{
            in=new FileInputStream(file);
        }catch(Exception e)
        {
            e.printStackTrace();
        }
        return in;
    }

strust2代码:

<action name="ExportNetworkDeviceList" class="com.javaweb.action.NetworkDeviceAction"
            method="exportNetworkDeviceList">
            <result name="getNetworkDeviceExportList" type="stream">
                <param name="inputStream">excelStream</param>             
                <param name="ContentType">application/vnd.ms-excel</param>
                <param name="contentDisposition">filename="NetDevice.xls"</param>
            </result>
        </action>

时间: 2024-11-11 06:06:29

JAVAWeb SSH框架 利用POI 导出EXCEL,弹出保存框的相关文章

Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框

在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

Excel导出学习之道:Java Web利用POI导出Excel简单例子

采用Spring mvc架构: Controller层代码如下 [java] view plaincopy @Controller public class StudentExportController{ @Autowired private StudentExportService studentExportService; @RequestMapping(value = "/excel/export") public void exportExcel(HttpServletReq

Springboot利用poi导出excel下载

Springboot利用poi导出excel下载 因为项目中之前的做法是用反射获取属性,所以demo中也是用的反射,我看网上很多文章都是存入一个List中,不知道这两种哪种更何合适一点,或者有什么更好的方法也请大佬们赐教. pom <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.13</version&g

struts2中利用POI导出Excel文档并下载

1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: 1 package com.tydic.eshop.action.feedback; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.ByteArrayOutputStream; 5 import java.io.FileInputStream; 6 import java.io.IOException; 7 import

利用poi导出Excel

import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.sql.Date;import java.util.ArrayList;import java.util.List; import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.

导出excel——弹出框

表单提交 凡是表单提交(表单提交分3种,见下面的1.2.3)的话,并且设置了表单标签的enctype="multipart/form-data"属性,那么这个时候就会打开弹出框. 1.表单提交 2.js表单提交 3.jquery.extjs等等其他的表单提交 代码示例 //jsp代码 <s:form id="myform1" method="post" enctype="multipart/form-data">

poi导出excel设置样式

由于要利用poi导出excel(XSSFWorkbook),而且要添加样式,搜索其他的结果无非都是颜色值,经查询的结果,做一下总结: 1.设置背景色,要用  style.setFillForegroundColor(IndexedColors.YELLOW.getIndex()); 使用 style.setFillBackgroundColor(bg);方法总是出现一个黑块,所以改为上面的写法,结果正确 颜色的问题,可以在 IndexedColors 中查到,是个枚举 2.有合并单元格的情况下,

JavaWeb项目导出Excel文件并弹出下载框

引言 在Java Web开发中经常涉及到报表,最近做的项目中需要实现将数据库中的数据显示为表格,并且实现导出为Excel文件的功能. 相关jar包 使用POI可以很好的解决Excel的导入和导出的问题,POI下载地址: poi-3.6-20091214.jar 关键代码 首先导入上述jar包. 在生成excel时一般数据源形式为一个List,下面把生成Excel格式的代码贴出来: /** * 以下为生成Excel操作 */ // 1.创建一个workbook,对应一个Excel文件 HSSFWo

Java POI导出Excel不弹框选择下载路径(下载文件不选择下载路径,默认) Chrome

在Chrome浏览器中,Java导出Excel文件时,浏览器弹出提示框,需要选择下载路径 在Chrome中的高级设置中,把“下载前询问每个文件的保存位置”去掉就解决了 DEEPLOVE(LC) 原文地址:https://www.cnblogs.com/ldl326308/p/10960755.html