<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>excel下載 &#8211; 記下來</title>
	<atom:link href="https://noter.tw/tag/excel%E4%B8%8B%E8%BC%89/feed/" rel="self" type="application/rss+xml" />
	<link>https://noter.tw</link>
	<description>一路上踩到的坑、遇到的問題，一點一滴記下來，希望能幫助到需要的人~</description>
	<lastBuildDate>Fri, 11 Mar 2022 06:10:56 +0000</lastBuildDate>
	<language>zh-TW</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.3</generator>

<image>
	<url>https://noter.tw/wp-content/uploads/cropped-old-1130742_1920-1-32x32.jpg</url>
	<title>excel下載 &#8211; 記下來</title>
	<link>https://noter.tw</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>JSP將資料匯出成Excel直接下載 by JExcelApi (jxl)</title>
		<link>https://noter.tw/1732/jsp%e5%b0%87%e8%b3%87%e6%96%99%e5%8c%af%e5%87%ba%e6%88%90excel%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bc%89-by-jexcelapi-jxl/</link>
					<comments>https://noter.tw/1732/jsp%e5%b0%87%e8%b3%87%e6%96%99%e5%8c%af%e5%87%ba%e6%88%90excel%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bc%89-by-jexcelapi-jxl/#respond</comments>
		
		<dc:creator><![CDATA[黃小蛙]]></dc:creator>
		<pubDate>Wed, 28 Dec 2011 15:42:01 +0000</pubDate>
				<category><![CDATA[網頁後端]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[excel]]></category>
		<category><![CDATA[JExcelApi]]></category>
		<category><![CDATA[jxl]]></category>
		<category><![CDATA[excel下載]]></category>
		<category><![CDATA[html to excel]]></category>
		<category><![CDATA[JSP]]></category>
		<guid isPermaLink="false">http://wazai.net/?p=1732</guid>

					<description><![CDATA[<p>這篇文章小蛙要記錄如何在JSP中使用JExcelApi(jxl)操作Excel並且提供下載的功能，例如查詢完的列表讓使用者可以直接下載存成Excel。小蛙原本寫了一種透過File的方法產生，不過缺點就&#46;&#46;&#46;</p>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/1732/jsp%e5%b0%87%e8%b3%87%e6%96%99%e5%8c%af%e5%87%ba%e6%88%90excel%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bc%89-by-jexcelapi-jxl/" data-wpel-link="internal">JSP將資料匯出成Excel直接下載 by JExcelApi (jxl)</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></description>
										<content:encoded><![CDATA[
<p>這篇文章小蛙要記錄如何在JSP中使用JExcelApi(jxl)操作Excel並且提供下載的功能，例如查詢完的列表讓使用者可以直接下載存成Excel。小蛙原本寫了一種透過File的方法產生，不過缺點就是時間久了會有很多廢棄的檔案(因為每次下載都會存成一個xls)，必須透過crontab或是手動定期清理。之後在<a rel="noreferrer noopener nofollow external" href="http://blog.xuite.net/syang.phon/photobox/19700170" target="_blank" data-wpel-link="external" class="wpel-icon-right"><strong>Jsp利用jxl匯出資料至Excel並下載 @ Ken™ KM</strong><span class="wpel-icon wpel-image wpel-icon-6"></span></a>看到更好的方法，可以動態產生並且直接提供下載，也就不會有上述的問題了。</p>



<span id="more-1732"></span>



<p><a rel="noreferrer noopener nofollow external" href="http://wazai.net/1569/java-excel-jxl" target="_blank" data-wpel-link="external" class="wpel-icon-right">Java + Excel = JXL<span class="wpel-icon wpel-image wpel-icon-6"></span></a>小蛙在這篇文章中記錄了在Java中如何透過jxl讀取Excel檔案，這篇文章則是記錄如何寫入Excel檔案。會出現這篇文章完全是一個意外，原本這個工作是由另一位同事負責，結果那位同事連續請假兩天，而恰好小蛙是他的組長，另一個原因是，晚上快六點的時候，小蛙的組長才跟小蛙說隔天中午前要處理好，下午對方要做驗收的動作，所以小蛙只好回到家繼續趕工。累了，不囉嗦直接進正題，老規矩只記錄用到的部份，對jxl有興趣的網友們，請見諒，可能要自行查找jxl document喔！</p>



<h2 class="para wp-block-heading">操作寫入Excel檔案(不含直接下載)</h2>



<p>這邊必須先有一個 WritableWorkbook 物件公我們操作(讀取的時候我們使用的是 Workbook 物件)，接著是 WritableSheet(讀取的時候是 Sheet)，建立完 WritableWorkbook 及 WritableSheet 之後就開始一個 cell 一個 cell 塞資料，這邊小蛙只有用到字串類型的文字，所以只採用 Label 即可。</p>


<pre>&lt;%@ page language="java" contentType="text/html; charset=utf-8" %&gt;
&lt;%@ page import="java.util.*" %&gt;
&lt;%@ page import="java.io.*" %&gt;
&lt;%@ page import="java.text.*" %&gt;
&lt;%@ page import="jxl.*" %&gt;
&lt;%@ page import="jxl.write.*" %&gt;
&lt;%@ page import="jxl.write.biff.RowsExceededException" %&gt;
&lt;%!
// 參考資料 http://www.blogjava.net/chenlb/archive/2007/10/29/156613.html
private void putRow(WritableSheet ws, int rowNum, ArrayList cells) throws RowsExceededException, WriteException {
    for(int j=0; j &lt; cells.size(); j++) {
      // 建立每個cell物件，這邊只用了Label
      Label cell = new Label(j, rowNum, ""+cells.get(j));
        // 塞入Cell中
        ws.addCell(cell);
      }
}
%&gt;
&lt;%
File f = null;
try{
    // 只是用來產生檔名
    long sysTime = System.currentTimeMillis();
    java.util.Date date = new java.util.Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    String dateString = sdf.format(date) + sysTime + ".xls";
    String path = application.getRealPath("");
    f = new File(path + "/upload/" + dateString);
    if(!f.exists()){
        // 建立excel檔案(空檔案，供jxl操作)
        f.createNewFile();
    }
    WritableWorkbook workbook = Workbook.createWorkbook(f);
    WritableSheet sheet = workbook.createSheet("Sheet1", 0);
    int rowNum = 0;
    // ... 資料庫讀取部份略過 ...
    while(rs.next()){
        // 建立一個ArrayList儲存每個Record的資料
        ArrayList list = new ArrayList();
        list.add(rs.getString("name");
        ...
        // 實際塞資料
        putRow(sheet, rowNum, list);
        // 用來控制行數
        rowNum++;
    }
    // 這兩行一定不能少，不然寫的資料會消失
    workbook.write();
    workbook.close();
}catch(Exception e){
  out.print(e);
}
%&gt;</pre>
<p> </p>
<ul>
<li><span style="color: #ff0000;"><strong>操作寫入Excel並直接下載</strong></span></li>
</ul>
<p style="padding-left: 30px;">這邊是透過將Excel直接輸出到OutputStream，再透過response.setHeader達到下載的目的，直接看code。</p>
<pre>&lt;%@ page language="java" contentType="text/html; charset=utf-8" %&gt;
&lt;%@ page import="java.util.*" %&gt;
&lt;%@ page import="java.io.*" %&gt;
&lt;%@ page import="jxl.*" %&gt;
&lt;%@ page import="jxl.write.*" %&gt;
&lt;%@ page import="jxl.write.biff.RowsExceededException" %&gt;
&lt;%!
    private void putRow(WritableSheet ws, int rowNum, ArrayList cells) throws RowsExceededException, WriteException {
        for(int j=0; j&amp;lt;cells.size(); j++) {
            Label cell = new Label(j, rowNum, ""+cells.get(j));
            ws.addCell(cell);
        }
    }
%&gt;
&lt;%
try{
    // 直接下載最重要的兩行
    response.reset();     
    response.setHeader("Content-disposition","attachment; filename=fileName.xls");
    OutputStream os = response.getOutputStream();
    WritableWorkbook workbook = Workbook.createWorkbook(os);
    WritableSheet sheet = workbook.createSheet("Sheet1", 0);
    // ... 資料庫操作省略 ...
    int rowNum = 0;
    while(rs.next()){
        ArrayList list = new ArrayList();
        list.add(rs.getString("name"));
        ....
        putRow(sheet, rowNum, list);
        rowNum++;
    }
    workbook.write();
    workbook.close();
    os.flush();
    os.close();
}catch(Exception e){
    out.print(e);
}
%&gt;</pre>


<p><strong>Excel 相關文章：</strong></p>



<ul class="my-li bg-darkblue wp-block-list"><li><a href="https://noter.tw/9117/excel-filter-and-validation/" data-wpel-link="internal">加入篩選器及下拉選單 (資料驗證)</a></li><li><a href="https://noter.tw/9063/excel-auto-search-and-fill-data-by-vlookup-index-match/" data-wpel-link="internal">搜尋表格 填入資料 強大的 VLOOKUP, INDEX, MATCH</a></li><li><a href="https://noter.tw/9061/split-a-excel-to-files/" data-wpel-link="internal">分拆 Excel 成多個檔案 ( Split A Excel to Files)</a></li><li><a href="https://noter.tw/6550/excel-%e4%bd%bf%e7%94%a8-poi-%e8%ae%80%e5%8f%96%e6%96%87%e5%ad%97%e6%a0%bc%e5%bc%8f%e6%97%a5%e6%9c%9f%e5%8d%bb%e8%ae%8a%e6%88%90%e6%95%b8%e5%ad%97%e7%9a%84%e5%95%8f%e9%a1%8c/" data-wpel-link="internal">Excel 使用 POI 讀取文字格式日期卻變成數字的問題</a></li><li><a href="https://noter.tw/4300/java-%e8%ae%80%e5%8f%96-excel-%e6%96%87%e4%bb%b6xls-xlsx-%e4%bd%bf%e7%94%a8-apache-poi/" data-wpel-link="internal">Java 讀取 Excel 文件(xls, xlsx) – 使用 Apache POI</a></li><li><a href="https://noter.tw/2711/oracle-%e5%8c%af%e5%85%a5%e5%8c%af%e5%87%ba-excel-%e9%80%8f%e9%81%8e-sql-developer/" data-wpel-link="internal">Oracle 匯入/匯出 Excel (透過 SQL Developer)</a></li><li><a href="https://noter.tw/1732/jsp%e5%b0%87%e8%b3%87%e6%96%99%e5%8c%af%e5%87%ba%e6%88%90excel%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bc%89-by-jexcelapi-jxl/" data-wpel-link="internal">JSP將資料匯出成Excel直接下載 by JExcelApi (jxl)</a></li><li><a href="https://noter.tw/1569/java-excel-jxl/" data-wpel-link="internal">Java + Excel = JXL</a></li><li><a href="https://noter.tw/119/ncr-%e8%99%95%e7%90%86%e6%96%b9%e5%bc%8f%ef%bc%9ajava-vba/" data-wpel-link="internal">NCR &amp;#xxxxx; 處理方式：Java &amp; VBA</a></li></ul>
<p>這篇文章 <a rel="nofollow" href="https://noter.tw/1732/jsp%e5%b0%87%e8%b3%87%e6%96%99%e5%8c%af%e5%87%ba%e6%88%90excel%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bc%89-by-jexcelapi-jxl/" data-wpel-link="internal">JSP將資料匯出成Excel直接下載 by JExcelApi (jxl)</a> 最早出現於 <a rel="nofollow" href="https://noter.tw" data-wpel-link="internal">記下來</a>。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://noter.tw/1732/jsp%e5%b0%87%e8%b3%87%e6%96%99%e5%8c%af%e5%87%ba%e6%88%90excel%e7%9b%b4%e6%8e%a5%e4%b8%8b%e8%bc%89-by-jexcelapi-jxl/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
