Re: [請益] PHP如何匯出多個EXCEL檔?

看板PHP作者 (ChrisLiu)時間15年前 (2010/08/17 13:12), 編輯推噓11(11019)
留言30則, 6人參與, 最新討論串3/5 (看更多)
※ 引述《TaiKeDa (科科)》之銘言: : 請照著箭頭走流程 : Client Server : 我要下載 → 開始產生檔案 : ↓ : 存入資料夾 : ↓ : 開始下載 ← 壓縮成單一檔案 : ↓ : 解壓縮 我原本也以為是要作成這樣↑↑↑↑↑…既然都寫了,那就乾脆騙騙 P 幣… 1. 按[按鈕]送出所需要的資料給後端 php 2. 後端 php 根據你送出的資料,產生 n 個檔案到該資料夾底下 3. 透過 exec / system function 執行 tar / zip 資料夾 4. 壓縮完得到檔案之後,送出 header, readfile 讓使用者直接下載 後端 php <?php // get something from previous page $_REQUEST / $_GET / $_POST foreach / for ($i=0;$i<=$size;$i++) { // 讀取你的 csv 資料 $csv = some_function_load_csv_data(); $fp = fopen("data/file{$i}.csv", "w+"); fwrite($fp, $csv); fclose($fp); } // 壓縮資料夾 exec('tar -zcvf /somepath/filename.tgz /path/to/your/folder/data'); // 送出下載的 header 與指定 file name header('Content-Disposition: attachment; filename="cvs.tgz"'); // 讀檔 readfile('/somepath/filename.tgz'); ?> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.145.202.67

08/17 13:17, , 1F
檔案名稱或資料夾名稱盡量要避免重複 :p
08/17 13:17, 1F

08/17 13:17, , 2F
我不得不說 提供真相 真的有差
08/17 13:17, 2F

08/17 13:17, , 3F
不然多人同時使用可能會出現問題 ... XD
08/17 13:17, 3F

08/17 13:18, , 4F
推推推~
08/17 13:18, 4F

08/17 13:22, , 5F
推 chrisQQ 也推原PO XD
08/17 13:22, 5F

08/17 13:28, , 6F
所以要從前一頁取得資訊囉~再加在檔名中,如果檔名一樣
08/17 13:28, 6F

08/17 13:28, , 7F
代表要壓縮的資料一樣,那就直接跳過產生與壓縮的步驟
08/17 13:28, 7F

08/17 13:29, , 8F
直接丟檔案~ 不過這只是精簡版啦… 就意思意思…
08/17 13:29, 8F

08/17 13:29, , 9F
不過我沒點開真相… ˇˇ
08/17 13:29, 9F

08/17 13:35, , 10F
我知道是精簡版,只是提醒一下原PO這樣 XD
08/17 13:35, 10F

08/17 13:36, , 11F
雖然我覺得原po可能不是要走這個箭頭…
08/17 13:36, 11F

08/17 13:40, , 12F
不好意思 想問一下 假設這樣產生 那n個檔案產生後會消失
08/17 13:40, 12F

08/17 13:40, , 13F
嗎?其實我就是直接卡在產生n個檔案到資料夾這段...
08/17 13:40, 13F

08/17 13:41, , 14F
應該這麼說 我的CSV檔案也是由PHP產生出來的 一開始沒有
08/17 13:41, 14F

08/17 13:41, , 15F
那就看 chrisQQ 的 foreach / for ... 那段
08/17 13:41, 15F

08/17 13:42, , 16F
不會消失,如果你想要他消失,可以在用 exec('rm data/*')
08/17 13:42, 16F

08/17 13:42, , 17F
有正妹真相大家都回的好認真....
08/17 13:42, 17F

08/17 13:43, , 18F
只是剛好最近的問題都不怎麼好玩… 是巧合@@
08/17 13:43, 18F

08/17 13:43, , 19F
exec()函數需要下載什麼嗎?還是PHP就可以直接用了@@?
08/17 13:43, 19F

08/17 13:44, , 20F
不用,exec 是 php 內建。話說,你的 php 主機環境是?
08/17 13:44, 20F

08/17 13:44, , 21F
unix-like or windows ?
08/17 13:44, 21F

08/17 13:45, , 22F

08/17 13:45, , 23F
我的 code 是以在 unix-like os 下的環境寫的~
08/17 13:45, 23F

08/17 13:49, , 24F
刪除也可以用 unlink(), rm()
08/17 13:49, 24F

08/17 14:01, , 25F
我是windows
08/17 14:01, 25F

08/17 14:01, , 26F
unlink 只能刪除單一檔案吧~ 當然是 rm * 最快 XD
08/17 14:01, 26F

08/17 14:02, , 27F
windows 的話用 7z 好像比較方便,他有 console 版
08/17 14:02, 27F

08/17 14:03, , 28F
所以我必須要先設一個tmp資料夾 專門用來存這些檔案嗎?
08/17 14:03, 28F

08/17 14:59, , 29F
是的~
08/17 14:59, 29F

08/17 15:09, , 30F
寫出來了 真的很感謝chrisQQ 版上果然神手超多XDD
08/17 15:09, 30F
文章代碼(AID): #1CQXertv (PHP)
文章代碼(AID): #1CQXertv (PHP)