最代码广告位
首页>代码>java servlet页面表格导出Excel(csv格式和xls格式都可以)>/Dom2Table/src/com/zhangjun/edu/exportExcel/Dom2CsvServlet.java
package com.zhangjun.edu.exportExcel;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Date;

import org.w3c.dom.*;
/**
 * <p>Description:下载生成CSV格式的EXCEL</p>
 * @author 张军
 * @version 1.0
 * @date 2012-10-02
 */
@SuppressWarnings("serial")
public class Dom2CsvServlet extends HttpServlet
{
    static final String CONTENT_TYPE = "text/csv;charset=GB2312";

    public void init( ServletConfig config )
        throws ServletException
    {
        super.init( config );
    }


    public void destroy()
    {
    }


    public String getServletInfo()
    {
        return (super.getServletInfo());
    }


    // Handle the HTTP GET request
    public void doGet( HttpServletRequest request, HttpServletResponse response )
        throws ServletException, IOException
    {
    	try
    	{
	      
	        
	        String sessionName=(String)request.getSession().getAttribute("sname");
	        Document dom=(Document)request.getSession().getAttribute(sessionName);
	        if(dom==null || sessionName==null)
	        {
	        	response.setContentType( CONTENT_TYPE );
	        	PrintWriter out = response.getWriter();
	        	out.println("超时请重新登陆!");
	        	
		}
		else
		{
	        String csv=dom2Csv(dom);
	        byte []bbb = csv.getBytes("GBK");
			response.setContentType("application/octet-stream;charset=GB2312"); 
			String excelName = new Date().getTime()+"";
			String filename=excelName+".csv";
			response.setHeader("Content-Disposition","attachment; filename="+filename);
			OutputStream out2 = response.getOutputStream();
			out2.write(bbb);
			out2.close();
			response.setStatus(response.SC_OK);
		}

		}
		catch (Exception e)
		{
			System.out.println("----------ex in servlet:"+e);
			e.printStackTrace();
		}
        
    }


    // Handle the HTTP POST request
    public void doPost( HttpServletRequest request, HttpServletResponse response )
        throws ServletException, IOException
    {
    }
    
    private String dom2Csv(Document dom)
    {
    	StringBuffer bf=new StringBuffer();
    	
    	try
    	{
			dom.normalize();
			Node root=(Node)dom.getDocumentElement();
			NodeList nodeRowList=root.getChildNodes();
			
			if (nodeRowList.getLength()>0)	//dom is not null
			{
				Node nodeRowTitle=nodeRowList.item(0);
				NodeList nodeItemList=nodeRowTitle.getChildNodes();
				for (int j=0;j<nodeItemList.getLength();j++)
				{
					Node nodeItem=nodeItemList.item(j);
					if (j!=0)
					{
						bf.append(",");
					}
					bf.append("\"");
					bf.append(nodeItem.getChildNodes().item(0).getChildNodes().item(0).getNodeValue());	// /documents/row/item/name
					bf.append("\"");
				}
				bf.append("\n");
			}
			
			for (int i=0;i<nodeRowList.getLength();i++)
			{
				Node nodeRow=nodeRowList.item(i);
				NodeList nodeItemList=nodeRow.getChildNodes();
				for (int j=0;j<nodeItemList.getLength();j++)
				{
					Node nodeItem=nodeItemList.item(j);
					if (j!=0)
					{
						bf.append(",");
					}
					String itemtype=nodeItem.getChildNodes().item(2).getChildNodes().item(0).getNodeValue();	//itemtype
					itemtype=itemtype.trim();
					NodeList temp=nodeItem.getChildNodes().item(1).getChildNodes();
					if (temp==null || temp.getLength()==0)
					{
						bf.append("\"\"");
					}					
					else if (itemtype!=null && (itemtype.equals("CHAR")||itemtype.equals("String")||itemtype.equals("VARCHAR")||itemtype.equals("VARCHAR2")))
					{
						bf.append("\"");
						bf.append(nodeItem.getChildNodes().item(1).getChildNodes().item(0).getNodeValue());	
						bf.append("\t\"");
					}
					else
					{
						bf.append(nodeItem.getChildNodes().item(1).getChildNodes().item(0).getNodeValue());
					}
				}
				bf.append("\n");
			}
    	}
    	catch (Exception e)
    	{
    		e.printStackTrace();
    	}
    	return bf.toString();
    }
}
最近下载更多
EdgarLi LV138月6日
月亮月亮月亮星星
soscat2000 LV37月6日
星星星星星星
谁打我多多 LV66月10日
月亮星星星星
yezhi123 LV45月28日
月亮
sunlea LV104月26日
月亮月亮星星星星
dsadasdwf LV111月21日
月亮月亮星星星星星星
FlamingYouth LV62019年12月5日
月亮星星星星
幻影闪驰666 LV32019年5月22日
星星星星星星
201502105044 LV22019年5月9日
星星星星
aaaaqqq LV112019年5月6日
月亮月亮星星星星星星
最近浏览更多
BlindWayne LV511月4日
月亮星星
yangqi123 LV111月2日
星星
lsjlsk8月7日
暂无贡献等级
EdgarLi LV138月6日
月亮月亮月亮星星
chenshuyan LV18月4日
星星
soscat2000 LV37月6日
星星星星星星
大丁丁 LV57月1日
月亮星星
谁打我多多 LV66月10日
月亮星星星星
babyFF9 LV66月10日
月亮星星星星
zhujunnan LV96月9日
月亮月亮星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友