如何将jsp页面当中table的数据导出到excel表格 通过点击按钮可以实现下载

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将jsp页面当中table的数据导出到excel表格 通过点击按钮可以实现下载相关的知识,希望对你有一定的参考价值。

1、先封装好excel的java帮助类
2、点击jsp的导出按钮时,用同步请求带上参数调用后台方法
3、解析参数从数据库获取对于的表格数据
4、调用excel的java帮助类导出excel
帮助类:

/***************************************************************************
* String[] Title="机构ID","会员编号","类别","名称","省ID","省名称","城市ID","城市名称","详细地址","联系人","性别","联系手机","联系电话","传真","邮箱","QQ","生日","积分","客户等级","现金账户余额","结算方式","客户类型","购买次数","购买支数","创建人ID","创建人姓名","create_time","del","STS","备注","负责人ID","负责人姓名","审核标识","审核人ID ","审核人姓名","审核日期","分配人ID","分配人姓名","分配日期","修改人ID","修改人姓名 ","修改时间";
List<Object> li=new ArrayList<Object>();
li.add(signatureFile);
ExportExcelTool excel=new ExportExcelTool();
excel.exportExcel("客户资料信息.xls",Title, li,response);
* @param fileName EXCEL文件名称
* @param listTitle EXCEL文件第一行列标题集合
* @param listContent EXCEL文件正文数据集合
* @return
*/
public final static String exportExcel(String fileName,String[] Title, List<Object> listContent ,HttpServletResponse response)
String result="系统提示:Excel文件导出成功!";
// 以下开始输出到EXCEL
try
//定义输出流,以便打开保存对话框______________________begin
OutputStream os = response.getOutputStream();// 取得输出流
response.reset();// 清空输出流
response.setHeader("Content-disposition", "attachment; filename="+ new String(fileName.getBytes("GB2312"),"ISO8859-1"));
// 设定输出文件头
response.setContentType("application/msexcel");// 定义输出类型
//定义输出流,以便打开保存对话框_______________________end

/** **********创建工作簿************ */
WritableWorkbook workbook = Workbook.createWorkbook(os);

/** **********创建工作表************ */

WritableSheet sheet = workbook.createSheet("Sheet1", 0);

/** **********设置纵横打印(默认为纵打)、打印纸***************** */
jxl.SheetSettings sheetset = sheet.getSettings();
sheetset.setProtected(false);

/** ************设置单元格字体************** */
WritableFont NormalFont = new WritableFont(WritableFont.ARIAL, 10);
WritableFont BoldFont = new WritableFont(WritableFont.ARIAL, 10,WritableFont.BOLD);

/** ************以下设置三种单元格样式,灵活备用************ */
// 用于标题居中
WritableCellFormat wcf_center = new WritableCellFormat(BoldFont);
wcf_center.setBorder(Border.ALL, BorderLineStyle.THIN); // 线条
wcf_center.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
wcf_center.setAlignment(Alignment.CENTRE); // 文字水平对齐
wcf_center.setWrap(false); // 文字是否换行

// 用于正文居左
WritableCellFormat wcf_left = new WritableCellFormat(NormalFont);
wcf_left.setBorder(Border.NONE, BorderLineStyle.THIN); // 线条
wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE); // 文字垂直对齐
wcf_left.setAlignment(Alignment.LEFT); // 文字水平对齐
wcf_left.setWrap(false); // 文字是否换行

/** ***************以下是EXCEL开头大标题,暂时省略********************* */
//sheet.mergeCells(0, 0, colWidth, 0);
//sheet.addCell(new Label(0, 0, "XX报表", wcf_center));
/** ***************以下是EXCEL第一行列标题********************* */
for (int i = 0; i < Title.length; i++)
sheet.addCell(new Label(i, 0,Title[i],wcf_center));

/** ***************以下是EXCEL正文数据********************* */
Field[] fields=null;
int i=1;
for(Object obj:listContent)
fields=obj.getClass().getDeclaredFields();
int j=0;
for(Field v:fields)
v.setAccessible(true);
Object va=v.get(obj);
if(va==null)
va="";

sheet.addCell(new Label(j, i,va.toString(),wcf_left));
j++;

i++;

/** **********将以上缓存中的内容写到EXCEL文件中******** */
workbook.write();
/** *********关闭文件************* */
workbook.close();

catch (Exception e)
result="系统提示:Excel文件导出失败,原因:"+ e.toString();
System.out.println(result);
e.printStackTrace();

return result;
追问

不是很明白 您这有具体的例子吗 谢谢

参考技术A 可以使用poi或者jxl组件来实现追问

您好,可以详细一点吗 或者举个例子,谢谢

追答

你去百度搜jxl导出表格

或者搜poi导出表格
能够找到详细的教程跟代码的

追问

谢谢 我在找找看看

追答

正常的应用中
实际上不是将jsp页面上的数据导出

而是将数据库中对应jsp页面上的数据导出

追问

那如果按照您的说法
应该怎么实现尼
我用的mysql数据库

如何将 SQL 查询结果发送到 jsp 页面?

【中文标题】如何将 SQL 查询结果发送到 jsp 页面?【英文标题】:How to send the SQL query results to a jsp page? 【发布时间】:2009-03-13 13:07:18 【问题描述】:

我有一个包含 id(number)、name(string)、address(string) 字段的数据库。

我编写了一个 java 程序 EmployeeDAO 来执行查询。我将它存储在 ResultSet 对象rs 中。我需要将此结果集显示为 JSP 页面中的表格。如何将此rs 发送到 JSP 页面?

public class EmployeeDAO 

    public _____ list() throws Exception
    
        try
        
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
            String url = "jdbc:odbc:employee_dsn";
            Connection con = DriverManager.getConnection(url);
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery("Select * from emp_table");
        
            catch (Exception e)
           
             System.out.println(e);
        
    

【问题讨论】:

【参考方案1】:

首先创建具有与 emp_table 中的列相同的字段的 Java 模型类 Employee。例如:

public class Employee 
  private String name;
  private String lastName;
  public void setName(String name) 
    this.name = name;
  
  public String getName() 
    return this.name;
  
  public String getLastName() 
    return this.lastName;
  
  public void setLastName(String lastName) 
    this.lastName = lastName;
  

然后在你的方法 _list() 中像这样迭代结果集:

public List<Employee> _ list() throws Exception 
     Connection con = null;
     ResultSet rs = null;
     List<Employee> result = new ArrayList<Employee>();
     try
       
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
         String url = "jdbc:odbc:employee_dsn";
         con = DriverManager.getConnection(url);
         Statement stmt = con.createStatement();
         rs = stmt.executeQuery("Select * from emp_table");
         while (rs.next()) 
           Employee emp = new Employee();
          emp.setName(rs.getString("emp_name"));
          emp.setLastName(rs.getString("emp_last_name"));
          result.add(emp);
         

        
        catch (Exception e)
               
            System.out.println(e);
         finally 
            if (null != rs) 
              try  rs.close() catch(Exception ex) ;
            
            if (null != con) 
              try  con.close() catch(Exception ex) ;
            
        
return result;
  

在您的 JSP 中,您可以像这样遍历集合:

<table>
  <c:forEach var="emp" items="$empDao._list">
    <tr>
      <td>$emp.name</td>
      <td>$emp.lastName</td>
    </tr>
  </c:forEach>
</table>

【讨论】:

【参考方案2】:

优雅的解决方案是将您的结果集映射到对象列表。查看 springs RowMapper 以了解如何处理此问题。

在您的 jsp 中,您可以使用 &lt;c:forEach/&gt; 循环来写出此列表。

【讨论】:

以上是关于如何将jsp页面当中table的数据导出到excel表格 通过点击按钮可以实现下载的主要内容,如果未能解决你的问题,请参考以下文章

JSP页面将数据从mysql导出到excel的Java代码

如何将jsp 中的数据导入到excel表格 中

jsp编写网站中,如何将数据库中的表导出到txt或者word,excel

如何用JAVA导出Excel?(使用POI)

jQuery EasyUI- DataGrid使用 从数据库查询得到数据显示在前台的jsp页面,如何实现?

jsp页面table导入excel数据