本文目錄一覽:
- 1、java : 一個excel文件以二進制的形式存在數據庫中 如何將它導出並下載到本地
- 2、java 將頁面內容寫入excel文件中並可以將其下載到本地任意位置
- 3、java如何將導出的excel下載到客戶端
java : 一個excel文件以二進制的形式存在數據庫中 如何將它導出並下載到本地
從數據庫中得到Blob/Clob,然後得到InputStream,直接給response.getOutputStream() 輸出就可以
java 將頁面內容寫入excel文件中並可以將其下載到本地任意位置
java本身要生成excel文件必然是在後台做的,通過poi庫生成excel文件並製作表格。
無法直接通過網頁保存生成excel。
至於下載到本地任意位置,也是後台生成了excel文件發送到前台(瀏覽器),由用戶選擇要存在哪兒,不能直接存儲(這是web沙箱限制,不允許網頁直接訪問本地硬盤,不然你想想,如果你打開一個網頁,網頁代碼可以任意訪問你的硬盤,你還敢開網頁嗎)。
要繞過沙箱限制必須裝插件,也就是,你必須開發一個com或plugin插件,可以訪問本地硬盤,但這需要用戶手工安裝(比如flash的插件,你之所以能用網頁看flash是因為裝了它的插件,但這是你手工裝的,它不能繞過你直接給你裝,它必須詢問你行不行,你要手工點了OK,才能裝)
java如何將導出的excel下載到客戶端
package com.mr;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 利用Servlet導出Excel
* @author CHUNBIN
*
*/
public class ExportExcelServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding(“UTF-8”);//設置request的編碼方式,防止中文亂碼
String fileName =”導出數據”;//設置導出的文件名稱
StringBuffer sb = new StringBuffer(request.getParameter(“tableInfo”));//將表格信息放入內存
String contentType = “application/vnd.ms-excel”;//定義導出文件的格式的字符串
String recommendedName = new String(fileName.getBytes(),”iso_8859_1″);//設置文件名稱的編碼格式
response.setContentType(contentType);//設置導出文件格式
response.setHeader(“Content-Disposition”, “attachment; filename=” + recommendedName + “\””);//
response.resetBuffer();
//利用輸出輸入流導出文件
ServletOutputStream sos = response.getOutputStream();
sos.write(sb.toString().getBytes());
sos.flush();
sos.close();
}
}
%@ page language=”java” contentType=”text/html; charset=UTF-8″
pageEncoding=”UTF-8″%
!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “”
html
head
meta http-equiv=”Content-Type” content=”text/html; charset=UTF-8″
title導出Excel/title
script type=”text/javascript”
function test(){
document.getElementById(“tableInfo”).value=document.getElementById(“table”).innerHTML;
}
/script
style
body{font-family:宋體;font-size:11pt}
/style
/head
body
form action=”%=request.getContextPath()%/servlet/ExportExcelServlet” method=”post”
span id=”table”
table bgcolor=”#EEECF2″ bordercolor=”#A3B2CC” border=”1″ cellspacing=”0″
trth學號/thth姓名/thth科目/thth分數/th/tr
trtd10001/tdtd趙二/tdtd高數/tdtd82/td/tr
trtd10002/tdtd張三/tdtd高數/tdtd94/td/tr
trtd10001/tdtd趙二/tdtd線數/tdtd77/td/tr
trtd10002/tdtd張三/tdtd線數/tdtd61/td/tr
/table
/spanbr/
input type=”submit” name=”Excel” value=”導出表格” onclick=”test()”/
input type=”hidden” id=”tableInfo” name=”tableInfo” value=””/
/form
/body
/html
以上代碼來自網絡:
原創文章,作者:KRTSE,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/128658.html