java下載excel
㈠ java下載excel為什麼走兩次方法
下載的輸出流沒有正常釋放和關閉
㈡ java 動態下載 excel 文檔,統統都是亂碼!希望哪位大蝦幫我提出解決方案。謝謝! 在線等答案!
不知道具體原因是什麼,不過可以給你提個小小的建議,建議你把代碼寫成這樣:
response.setContentType("application/vnd.ms-excel; charset=GB2312");
去掉response.setCharacterEncoding("GB2312"); 這一行
你試試吧
㈢ 用java下載一個excel文件,在Response.setContentType()參數中
response.setContentType(MIME)的作用是使客戶端瀏覽器,區分不同種類的數據,並根據不同的MIME調用瀏覽器內不同的程序嵌入模塊來處理相應的數據。
例如web瀏覽器就是通過MIME類型來判斷文件是GIF圖片。通過MIME類型來處理json字元串。
Tomcat的安裝目錄\conf\web.xml
中就定義了大量MIME類型
,可以參考。
response.setContentType("text/html;
charset=utf-8");
html
.setContentType("text/plain;
charset=utf-8");
文本
text/javascript
json數據
application/xml
xml數據
這
個方法設置發送到客戶端的響應的內容類型,此時響應還沒有提交。給出的內容類型可以包括字元編碼說明,例
如:text/html;charset=UTF-8.如果該方法在getWriter()方法被調用之前調用,那麼響應的字元編碼將僅從給出的內容類型
中設置。該方法如果在getWriter()方法被調用之後或者在被提交之後調用,將不會設置響應的字元編碼,在使用http協議的情況中,該方法設
置
Content-type實體報頭。
一般在Servlet中,習慣性的會首先設置請求以及響應的內容類型以及編碼方式:
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("UTF-8");
response.setContentType()的String參數及對應類型
value="image/bmp">BMP
value="image/gif">GIF
value="image/jpeg">JPEG
value="image/tiff">TIFF
value="image/x-dcx">DCX
value="image/x-pcx">PCX
value="text/html">HTML
value="text/plain">TXT
value="text/xml">XML
value="application/afp">AFP
value="application/pdf">PDF
value="application/rtf">RTF
value="application/msword">MSWORD
value="application/vnd.ms-excel">MSEXCEL
value="application/vnd.ms-powerpoint">MSPOWERPOINT
value="application/wordperfect5.1">WORDPERFECT
value="application/vnd.lotus-wordpro">WORDPRO
value="application/vnd.visio">VISIO
value="application/vnd.framemaker">FRAMEMAKER
value="application/vnd.lotus-1-2-3">LOTUS123
MIME映射策略就是在網頁中使用哪個應用程序(即插件),打開哪種文件。另外還有使用許可權問題。比如對PDF文檔,用「application/pdf
「策略。這在動態網頁中很常見。出現這種現象,有兩種情形:一是使用一個應用程序去打開它不能打開的文檔,比如用在標簽中定義「DWG」文檔用
「application/pdf
」,就會出現無法打開的問題。二是文件擴展名符合要求,但文件內容(格式)不符合要求。你可以檢查你瀏覽的網頁源代碼,獲得出錯信息。檢查方法是:查看—
源文件。尋找類似於「application/pdf
「的字元串,就可以看到,要打開的文件是否與應用程序匹配。
追問
如果不相匹配
如何解決回答
這通常是由網頁編寫人來更改。比如:你在源文件裡面找到你要打開的文件的HTML標簽,在裡面加上應用程序即可。比如,你要在網頁上打開一個PDF文檔,
找到PDF文檔那一行,在HTML標簽里加上
type=「application/pdf
「
就可以了
㈣ java如何實現從伺服器下載已經生成好的excel文件
使用 HttpURLConnection 去下載 ,按二進制保存文件 ~~~~~~~~~
㈤ java寫了一個下載excel的功能,我想把用戶下載的模版的所有單元格都變成文本格式。該如何寫呢
public void export(List<PSbLnode> li, String dateString,String[] title) throws WriteException, IOException {
// 准備設置excel工作表的標題
// 創建Excel工作薄
WritableWorkbook wwb = null;
try {
// 輸出的excel的路徑
String filePath1 = Const.pathStr+Const.pathStr4+Const.pathStr3;
File file = new File(filePath1);
if(!file.exists()){
file.mkdir();
}
String filePath=filePath1+Const.pathStr4+Const.pathStr6+dateString+Const.pathStr5;
// 新建立一個jxl文件,即在C盤下生成testJXL.xls
OutputStream os = new FileOutputStream(filePath);
wwb = Workbook.createWorkbook(os);
// 添加第一個工作表並設置第一個Sheet的名字
WritableSheet sheet = wwb.createSheet("設備清單", 0);
Label label;
for (int i = 0; i < title.length; i++) {
// Label(x,y,z) 代表單元格的第x+1列,第y+1行, 內容z
// 在Label對象的子對象中指明單元格的位置和內容
label = new Label(i, 0, title[i]);
// 將定義好的單元格添加到工作表中
sheet.addCell(label);
}
for (int i = 0; i < li.size(); i++) {
int j = 0;
j = i + 1;
//填充單元格
//獲取區域名稱
label = new Label(0, j, li.get(i).getQyName());
sheet.addCell(label);
//獲取區域名稱
label = new Label(1, j, li.get(i).getJzName());
sheet.addCell(label);
//獲取設備名稱
label = new Label(2, j, li.get(i).getLnodeName());
sheet.addCell(label);
// //獲取設備類型名稱
label = new Label(3, j, li.get(i).getSbxh());
sheet.addCell(label);
//獲取運行狀態
label = new Label(4, j, li.get(i).getYxzh());
sheet.addCell(label);
//獲取刪除狀態
label = new Label(5, j, li.get(i).getDeleteFlag());
sheet.addCell(label);
//獲取啟用狀態
label = new Label(6, j, li.get(i).getQyzt());
sheet.addCell(label);
//獲取設備投運日期
label = new Label(7, j, li.get(i).getSbtyri());
sheet.addCell(label);
//獲取使用年限
jxl.write.Number numb1 = new jxl.write.Number(8, j, li.get(i).getSynx());
sheet.addCell(numb1);
//獲取區域名稱
label = new Label(9, j, li.get(i).getAddUser());
sheet.addCell(label);
//獲取區域名稱
label = new Label(10, j, li.get(i).getUpdUser());
sheet.addCell(label);
//獲取區域名稱
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String newdate = sdf.format(li.get(i).getUpdTime());
label = new Label(11, j, newdate);
sheet.addCell(label);
//獲取區域名稱
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd");
String newdate2 = sdf2.format(li.get(i).getAddTime());
label = new Label(12, j, newdate2);
sheet.addCell(label);
//獲取區域名稱
label = new Label(13, j, li.get(i).getZcbh());
sheet.addCell(label);
//獲取區域名稱
label = new Label(14, j, li.get(i).getSbcs());
sheet.addCell(label);
//獲取區域名稱
jxl.write.Number numb2 = new jxl.write.Number(15, j, li.get(i)
.getSbll());
sheet.addCell(numb2);
//獲取區域名稱
label = new Label(16, j, li.get(i).getRldw());
sheet.addCell(label);
//獲取區域名稱
label = new Label(17, j, li.get(i).getWxghjl());
sheet.addCell(label);
}
// 寫入數據
wwb.write();
} catch (Exception e) {
e.printStackTrace();
}finally{
// 關閉文件
wwb.close();
}
}
Const文件:
/**路徑:C盤*/
public static String pathStr = "C:";
/**路徑://*/
public static String pathStr2 = "//";
/**文件夾:workspace*/
public static String pathStr3 = "exportFile";
/**文件名:world*/
public static String pathStr6 = "Equipment";
/**路徑:/*/
public static String pathStr4 = "/";
/**路徑:.xls*/
public static String pathStr5 = ".xls";
㈥ java下載excel 不預覽
第一:檢查導入包是否完整(poi-3.5-beta4-20081128.jar poi的核心架包,poi-contrib-3.5-beta4-20081128.jar 可選poi-ooxml-3.5-beta4-20081128.jar 可選poi-scratchpad-3.5-beta4-20081128.jar 可選)
第二:創建視圖(主要檢查輸出函數是否正確)
第三:servlet創建
1.導入servlet相關包
第四:創建service(poiservice),導入包
希望能幫到你,謝謝!
㈦ 請問下,我想用java實現下載excel表格,思路是先在臨時文件里生成臨時excel文件,但是不知
你的意思是 導出excel表格吧。 導出的時候會創建臨時文件 但是導出後要刪除臨時文件吧
㈧ java如何將導出的excel下載到客戶端
packagecom.mr;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.ServletOutputStream;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
/**
*利用Servlet導出Excel
*@authorCHUNBIN
*
*/
{
publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
doPost(request,response);
}
publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)
throwsServletException,IOException{
request.setCharacterEncoding("UTF-8");//設置request的編碼方式,防止中文亂碼
StringfileName="導出數據";//設置導出的文件名稱
StringBuffersb=newStringBuffer(request.getParameter("tableInfo"));//將表格信息放入內存
StringcontentType="application/vnd.ms-excel";//定義導出文件的格式的字元串
StringrecommendedName=newString(fileName.getBytes(),"iso_8859_1");//設置文件名稱的編碼格式
response.setContentType(contentType);//設置導出文件格式
response.setHeader("Content-Disposition","attachment;filename="+recommendedName+""");//
response.resetBuffer();
//利用輸出輸入流導出文件
ServletOutputStreamsos=response.getOutputStream();
sos.write(sb.toString().getBytes());
sos.flush();
sos.close();
}
}
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html;charset=UTF-8">
<title>導出Excel</title>
<scripttype="text/javascript">
functiontest(){
document.getElementById("tableInfo").value=document.getElementById("table").innerHTML;
}
</script>
<style>
body{font-family:宋體;font-size:11pt}
</style>
</head>
<body>
<formaction="<%=request.getContextPath()%>/servlet/ExportExcelServlet"method="post">
<spanid="table">
<tablebgcolor="#EEECF2"bordercolor="#A3B2CC"border="1"cellspacing="0">
<tr><th>學號</th><th>姓名</th><th>科目</th><th>分數</th></tr>
<tr><td>10001</td><td>趙二</td><td>高數</td><td>82</td></tr>
<tr><td>10002</td><td>張三</td><td>高數</td><td>94</td></tr>
<tr><td>10001</td><td>趙二</td><td>線數</td><td>77</td></tr>
<tr><td>10002</td><td>張三</td><td>線數</td><td>61</td></tr>
</table>
</span><br/>
<inputtype="submit"name="Excel"value="導出表格"onclick="test()"/>
<inputtype="hidden"id="tableInfo"name="tableInfo"value=""/>
</form>
</body>
</html>
以上代碼來自網路:http://jtlyuan.iteye.com/blog/1322097
㈨ 怎麼使用Java完成下載excel文件,伺服器上excel文件是直接存在的而不是導出的(必須使用action)
寫個文件專門提供下載文件也可以,但那樣對於你這種情況明顯多餘了,把伺服器端Excel文件的MIME類型映射信息改成application/octet-stream即可。這個映射可以在web.xml中定義。