[JAVA]Java导出Excel数据的一种方法(完美实现,包含表格线)

来源:互联网 发布:校园网络 布局 编辑:程序博客网 时间:2024/04/19 21:13
[JAVA]Java导出Excel数据的一种方法(完美实现,包含表格线)

       前段时间客户要求添加一个导出为Excel文件的功能,在网上找了一下,采用JS实现的方法大多都是需要启用ActiveX的,这需要降低浏览器的安全级别,很多时候都不可用,然后开始考虑使用服务器端文件流输出的形式,大多数的类似方法的原理只是将HTML的文件存成xls的格式,不是标准的Excel文件格式,没有表格线,导出的Excel文件都比较难看。
这里的这种方法在文件的前后加上了Excel文件的头尾信息,个人感觉效果不错,贴出来分享一下,直接上代码: 

<% 
response.setCharacterEncoding("gb2312");
String type = request.getParameter("type");

//如果传来的type值为123,那么就导出到excel表中,如果不是就将表格显示到JSP页面
if(type.equals("123")){
   response.setContentType("application/vnd.ms-excel");
}else{
   response.setContentType("text/html");
}
response.setHeader("Content-disposition","inline; filename=test.xls");
out.clear();
%>
<%=AddExcelHead()%>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td>序号</td>
    <td>标题1</td>
    <td>标题2</td>
    <td>标题3</td>
    <td>标题4</td>
    <td>标题5</td>
    <td>标题6</td>
    <td>标题7</td>
    </tr>
<%
   for(int i=0; i<10; i++){
    %>
    <tr>
    <td><%=i%>.</td>
    <td><%=i+100%></td>
    <td><%=i+101%></td>
    <td><%=i+102%></td>
    <td><%=i+103%></td>
    <td><%=i+104%></td>
    <td> <%=i+105%></td>
    <td><%=i+106%></td>
   </tr>
   <%}//end For
   %>
</table>
<%=AddExcelbottom()%>
<%!
    private static String AddExcelHead(){ 
        StringBuffer sb = new StringBuffer();
        sb.append("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
        sb.append(" <head>");
        sb.append(" <!--[if gte mso 9]><xml>");
        sb.append("<x:ExcelWorkbook>");
        sb.append("<x:ExcelWorksheets>");
        sb.append("<x:ExcelWorksheet>");
        sb.append("<x:Name></x:Name>"); 
        sb.append("<x:WorksheetOptions>");
        sb.append("<x:Print>");            
        sb.append("<x:ValidPrinterInfo />");
        sb.append(" </x:Print>"); 
        sb.append("</x:WorksheetOptions>");
        sb.append("</x:ExcelWorksheet>");
        sb.append("</x:ExcelWorksheets>");
        sb.append("</x:ExcelWorkbook>");
        sb.append("</xml>");
        sb.append("<![endif]-->"); 
        sb.append(" </head>"); 
        sb.append("<body>");
        return sb.toString(); 
    }

    private static String AddExcelbottom(){
        StringBuffer sb = new StringBuffer();
        sb.append("</body>");
        sb.append("</html>");
        return sb.toString();
    }
%>

原创粉丝点击