2015-04-07 36 views
0

我有一個問題,我想知道如果有人可以幫助我。任何幫助真的很感激。我相信它是一個'容易'的問題。導出jsp的特定表ID到excel

我有一個jsp頁面顯示錶中的動態數據,我的問題是該頁面有多個表。 但我想出口到Excel只有一個特定的ID與特定的表。

到目前爲止,我出口到擅長的所有數據從jsp頁面是錯誤的,因爲我想只導出一個表格id =「formAssignDemands」,我該怎麼做呢?

這裏是我的代碼,

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
     "http://www.w3.org/TR/html4/loose.dtd">  
    <%@ page contentType="text/html;charset=windows-1253"%> 
    <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%> 
    <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%> 
    <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%> 
    <%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%> 
     <f:view> 
     <html> 
      <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1253"/> 
      <f:loadBundle basename="bundles.requests" var="FieldsDescr"/> 
      <f:loadBundle basename="bundles.messages" var="GeneralMessages"/> 
      <title> 
      <h:outputText value="#{FieldsDescr.AssignRequests_Title}"/> 
      </title> 
      <a4j:loadStyle src="#{AssignDemands_backing.municipality.url}#{AssignDemands_backing.municipality.templateId}#{GeneralMessages.CssPath}"/> 
      <script language="JavaScript" type="text/javascript" 
       src="./demands.js"></script> 
      <script language="JavaScript" type="text/javascript" 
       src="../reports/reports.js"></script> 
      </head> 
      <body><h:form> 
      <jsp:include page="/system/NavigationMenu.jsp"/> 
      </h:form> 

      <% 
      String exportToExcel = request.getParameter("exportToExcel"); 
      if (exportToExcel != null && exportToExcel.toString().equalsIgnoreCase("YES")) { 
      response.setContentType("application/vnd.ms-excel"); 
      response.setHeader("Content-Disposition", "inline; filename=" 
       + "excel.xls"); 

      } 
     %> 

      <table cellspacing="0" cellpadding="0" border="0" 
         width="99%" align="center"> 
       <tr> 
        <td class="componentheading" width="99%"> 
         <h:outputText value="#{FieldsDescr.AssignRequests_SubHeader}"/> 
       </td> 
       <td class="componentheading" width="1%"> 
        <table> 

      ...... 

       <tr> 
       <td class="main_component_seperator" colspan="2">&nbsp;</td> 
       </tr> 
       <tr> 
       <td align="center" colspan="2"> 
        <h:form id="formAssignDemands"> 
         <t:dataTable id="demandsDataTable" 
            binding="#{AssignDemands_backing.demandsDataTable}" 
            var="demand" 
            value="#{AssignDemands_backing.unassignedDemandsList}" 
            rows="#{NavigationMenu_backing.rows}" 
            varDetailToggler="detailToggler" 
            sortColumn="#{AssignDemands_backing.sort}" 
            sortAscending="#{AssignDemands_backing.ascending}" 
            preserveSort="true" 
            headerClass="datatable_td_header" 
            rowClasses="tablerow1, tablerow2" 
            width="100%" 
            rowIndexVar="demandsRowIndex"> 
          <f:facet name="header"> 
           <h:panelGroup> 
            <f:verbatim> 
             <div style="float:left;"></div> 
            </f:verbatim> 
            <h:panelGrid columns="4" 
               cellspacing="2"> 
             <h:outputText value="#{GeneralMessages.DataTable_RowsPerPage}"/> 

        ..... 

      </table> 

     <br><br><br><br><br><br><br><br><br><br><br><br><br><br><br> 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 

    <% 
    if (exportToExcel == null) { 
    %> 
    <a href="AssignDemands.jsp?exportToExcel=YES">Export to Excel</a> 
    <% 
    } 
    %> 

    </body> 
    </html> 
    </f:view> 
    <%-- oracle-jdev-comment:auto-binding-backing-bean-name:AssignRequests--%> 

    Thank you guys for any help or any idea,, 

回答

1

我設法用JavaScript來做到這一點,並正在努力在3個基本瀏覽器Mozilla,Chrome和IE11,所以這裏是,

  <script type="text/javascript"> 
     function ExcelReport() 
     { 
     var tab_text="<table border='2px'><tr bgcolor='#FFFFFF'>"; 
     var textRange; var j=0; 
     tab = document.getElementById('table_id'); // id of table 

for(j = 0 ; j < tab.rows.length ; j++) 
{  
    tab_text=tab_text+tab.rows[j].innerHTML+"</tr>";  
} 

tab_text=tab_text+"</table>"; 
tab_text= tab_text.replace(/<A[^>]*>|<\/A>/g, ""); 
tab_text= tab_text.replace(/<img[^>]*>/gi,""); 
tab_text= tab_text.replace(/<input[^>]*>|<\/input>/gi, ""); 
var ua = window.navigator.userAgent; 
var msie = ua.indexOf("MSIE "); 

if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  
{ 
    txtArea1.document.open("txt/html","replace"); 
    txtArea1.document.write(tab_text); 
    txtArea1.document.close(); 
    txtArea1.focus(); 
    sa=txtArea1.document.execCommand("SaveAs",true,"Excel.xls"); 
} 
else     
    sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); 

    return (sa); 
    } 

    </script>   

,並somewere把它在你的身體可以添加以下有一個iframe,這樣,

<iframe id="txtArea1" style="display:none"></iframe>  
    <button id="btnExport" class="button_class" onclick="ExcelReport();">Export to Excel</button> 

完蛋了,塔恩你們閱讀