在Servlet中可以以字符方式读取一个Excel,然后通过PrintWriter写出,通过访问这个Servlet可以得到一个Excel表格吗?列如
public class ExcelServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException { response.setContentType("Application/vnd.ms-excel;charset=GB2312");
InputStream is=new FileInputStream("D:/1.xls");
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
PrintWriter out=response.getWriter();
while(true){
String str=br.readLine();
if(str==null)break;
out.print(str);
}
out.flush();
out.close();
}
}(当然上面的打开会是乱码,若是以字节流的方式读取和写入没问题)

解决方案 »

  1.   

    可以,你可以用servlet读取一个excel然后pringwriter写出ServletContext ctx = getServlet().getServletContext();
    InputStream is = null;
    is = ctx.getResourceAsStream(
                                "/download/****.xls");
    response.setContentType("application/vnd.ms-excel");
                        response.setHeader("Expires", "0");
                        response.setHeader("Cache-Control",
                            "must-revalidate, post-check=0, pre-check=0");
                        response.setHeader("Content-Disposition",
                                           "attachment; filename=" +
                                           ("---".equalsIgnoreCase(***) ?
                                            "**.xls" :
                                            "**.xls"));
                        response.setHeader("Pragma", "public");                    ServletOutputStream out = response.getOutputStream();
                        while (bis.read(buffer) > 0) {
                            out.write(buffer);
                        }
                        out.flush();
                        bis.close();
                        is.close();
      

  2.   

    什么意思?是想下载这个 Excel 文件还是想在网页里直接显示 Excel 表格?
      

  3.   

    response.setContentType("application/vnd.ms-excel");
      

  4.   

    不要这样吧
    还是用jxl.jar吧
      

  5.   

    文本用out.print
    字节当然调用out.write
      

  6.   

    用下这个
    public class ExcelServlet extends HttpServlet { 
    public void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException { response.setContentType("Application/vnd.ms-excel;charset=GB2312"); 
    InputStream is=new FileInputStream("D:/1.xls"); 
    InputStreamReader isr=new InputStreamReader(is); 
    BufferedReader br=new BufferedReader(isr); 
    PrintWriter out=response.getWriter(); 
    while(true){ 
    String str=br.readLine(); 
    if(str==null)break; 
    out.print(str); 

    out.flush(); 
    out.close(); 

    }
    response.setContentType("Application/vnd.ms-excel;charset=GB2312"); 
    这个才是关键的代码
      

  7.   

    其实我写的只是把一个服务器上的xls用流的形式返回到用户的浏览器上ServletContext ctx = getServlet().getServletContext();获取当前部署项目的路径is = ctx.getResourceAsStream(
                                "/download/****.xls");//用流读取当前项目路径下的download文件夹下的xls文件剩下的就是返回类型和返回名字设置,接着用流response流输出出来