Web頁面導出Excel表格


需要將html網頁上的table中的數據導出為excel表格,網上雖然方法一大堆,

但是有的后台報錯,有的導出來的有缺陷。還好最好找出來一種。記錄下:

首先使用poi的jar包:http://files.cnblogs.com/files/ysj4428/excelExport.rar

貼代碼:

package com.pers.demo;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * Servlet implementation class DownExcel
 */
@WebServlet("/DownExcel")
public class DownExcel extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public DownExcel() {
        super();
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        @SuppressWarnings("resource")
        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet("table");  //創建table工作薄
        Object[][] datas = {{"區域", "總銷售額(萬元)", "總利潤(萬元)簡單的表格"}, {"江蘇省" , 9045,  2256}, {"廣東省", 3000, 690}};
        HSSFRow row;
        HSSFCell cell;
        for(int i = 0; i < datas.length; i++) {
            row = sheet.createRow(i);//創建表格行
            for(int j = 0; j < datas[i].length; j++) {
                cell = row.createCell(j);//根據表格行創建單元格
                cell.setCellValue(String.valueOf(datas[i][j]));
            }
        }
           ByteArrayOutputStream os = new ByteArrayOutputStream();
           wb.write(os);
           byte[] content = os.toByteArray();
           InputStream is = new ByteArrayInputStream(content);
           response.reset();
           response.setContentType("application/vnd.ms-excel;charset=utf-8");
           response.setHeader("Content-Disposition", "attachment;filename=table.xls");
           
           ServletOutputStream out = response.getOutputStream();
              BufferedInputStream bis = null;
              BufferedOutputStream bos = null;
         
              try {
                bis = new BufferedInputStream(is);
                bos = new BufferedOutputStream(out);
                byte[] buff = new byte[2048];
                int bytesRead;
                while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
                  bos.write(buff, 0, bytesRead);
                }
              } catch (Exception e) {
                e.printStackTrace();
              } finally {
                if (bis != null)
                  bis.close();
                if (bos != null)
                  bos.close();
              }
       // wb.write(new FileOutputStream("D:/迅雷下載/table.xls"));//這行是直接寫到本地的
    }

}

如果要測試你只需要新建一個Web項目,調用servlet即可。放一個截圖

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM