台灣最大程式設計社群網站
線上人數
807
 
會員總數:246209
討論主題:189782
歡迎您免費加入會員
討論區列表 >> ASP >> asp產生word檔,第二次產生內容卻是空白
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
asp產生word檔,第二次產生內容卻是空白
價值 : 500 QP  點閱數:1532 回應數:13
樓主

聖暉
初學者
262 16
1071 76
發送站內信

捐贈 VP 給 聖暉
各位asp的前輩們好,小弟遇到一個問題如下:

在某一個asp的網站頁面搜尋出結果後,會產生表格清單(asp),前面有Radio Button供選擇.
選取後按下產生Word檔的按鈕,即將該資料(serialNo)帶入產生Word檔的asp;
該asp即把表頭,內容帶入已有的Doc檔取代部份內容(用Replace)
但因為客戶是用IE8,會出現我選了第一筆輸出正常,再點第二筆,輸出卻是內容空白的囧境..
不過我用IE11之後的版本都不會有這個問題.

asp產Word檔的程式如下:


請問有人遇過嗎?能不能解決?
謝謝!

搜尋相關Tags的文章: [ asp ] , [ word ] , [ doc ] , [ 空白 ] ,
本篇文章發表於2015-07-27 14:37
1樓
回應

香帥
檢舉此回應
這要分為兩段來除錯
也不知您的空白是指例如
aaa{0}bbb{1}括號裡面的字沒有被代換
還是連 aaa bbb 不必代換的字都被清除成空白。
最簡單的測試是,程式碼16-26行全部刪除
然後在27行前面加一行
response.write content
執行後再告訴我結果,看點第二筆時,原來檔案都沒動,會不會被清除成空白。
本篇文章回覆於2015-07-27 18:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

聖暉
捐贈 VP 給 聖暉 檢舉此回應
先謝謝香帥大大的回覆..
原本的情況是會變成,除了表格的框還存在,其餘文字都會變成空白.

依香帥大大的建議,測試的結果依然相同,除了表格的框還存在,其餘文字都會變成空白.
本篇文章回覆於2015-07-28 11:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

香帥
檢舉此回應
您的程式碼放在我server試,每次執行都一樣錯誤,word開啟後都變形(只有前面亂碼三個字,後面空白)錯誤,不會像您說的第一次對,請改用以下程式碼

測試網址在
http://ap.a168a.com/test/writeword2.asp
推其原因,word有控制碼,你當成一般文字來讀會發生錯誤。
本篇文章回覆於2015-07-28 13:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

聖暉
捐贈 VP 給 聖暉 檢舉此回應
先謝謝香帥大大提供的參考!
但小弟在測試時發現,原來sample_A.Doc是html檔.

由於該html檔太大無法直接Post上來,所以提供以下連結供下載:
sample_A.Doc

我有懷疑是編碼造成的問題,但試過幾個方式一樣會變空白,
再麻煩香帥大大或其他有解決方式的大大們幫我看看能不能找出問題點或解決方式..
謝謝!
本篇文章回覆於2015-07-29 12:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

香帥
檢舉此回應
這還是要分兩段解決
請先跟我說,我三樓程式碼,及doc檔案,放到您server,您的第的2次顯示會不會空白。
若您回答是正常的,才來解決您的第2個問題
還有建議您的那個doc打包成.zip再幫您下載試看看,看用甚麼方法解決。
本篇文章回覆於2015-07-29 12:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

聖暉
捐贈 VP 給 聖暉 檢舉此回應
回香帥大大:
三樓的程式碼測試是可以使用的.

我那個DOC有壓縮供下載了,麻煩香帥大大試試看.
sample_A.zip
本篇文章回覆於2015-07-30 09:11
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

香帥
檢舉此回應
剛有下載發現與你四樓說
但小弟在測試時發現,原來sample_A.Doc是html檔
是不一樣的喔,解壓縮後是word檔案,請確認是word檔案還是html檔案
本篇文章回覆於2015-07-30 09:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

聖暉
捐贈 VP 給 聖暉 檢舉此回應
香帥大大,副檔名是Doc檔,
但是用記事本/NotePad++/UltraEdit 等軟體打開才會發現它是html檔.
本篇文章回覆於2015-07-30 10:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

小羊窒息
捐贈 VP 給 缺氧的羊:窒息 檢舉此回應
不錯不錯, google終於願意開始支援【html相容格式】了。。。

以後會更方便了。。。

-------------------------
拉回正題。。。

word本身有所謂的。。。【表頭】【內文】【表尾】。。。有的沒的,
(如同html網頁,有著 <html>.... <body> .... </body> ... </html>

在單純只有1頁(或是固定頁數)的情況下,通常會事先做好每一頁的畫面,然後再去設定每一頁的變數值
{1}{2}{3}{4}{5}....

然而,當你打算把【1頁】重複使用時,
是不能把整個word檔(html格式)讀進來用的...

有些版本的word程式,
可以容錯(就如同你在1個網頁裡面放好幾個<html>...好幾個<body>, 甚至標籤沒有對應, 他依然可以顯示頁面)

但更多數是不願意容錯的...只讀完第1個之後就不再往下讀了...


-------------------------

簡單來說,
sample_A.Doc

第618行之前的內容, 屬於文件格式(含css, class, 列印格式等等)

第619行...<body lang=ZH-TW style='tab-interval:24.0pt;text-justify-trim:punctuation'>
這一行開始才是word的內頁.....
...
一直到940行...</body>
最後是941行的</html>


(要重複頁面, 最簡單的方式就是把620行~939行一再的重複輸出...自然就是有很多頁的word了)
講到這裡相信你應該懂了...........


(我比較難想像的是, 你都注意到它是html了, 怎麼沒有去研究一下裡面的標籤長什麼樣子呢)
-------------------------


(再補個題外話, 我個人會選擇從 623行開始~928行一直重複...
621行的內容我不會讓他重複出現......
想知道理由的話, 你自己事先用word做幾個空白頁面, 分別在每一頁放2~3個文字,
最後再另存成html格式, 然後再去看網頁標籤的差異, 大概就會明白了)
本篇文章回覆於2015-07-30 18:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
最有價值解答

香帥
檢舉此回應
我分析它的html,原來的架構,應該是先製作一個word表格檔,然後另存html檔案,
這會有一個缺點,當您替換字串的時候若有牽涉到html結構的語法,就會產生錯誤
且維護的人還要去除錯數百行的html資料是非常不妥的
我幫您改過來
將該doc改為word的doc
程式碼改為如下(callword5ok.asp檔案)

我僅作一個{0}改為輸入的名字,其他您參考您資料庫自己修改
測試的程式碼(getdoc.htm檔案)

測試網址在http://ap.a168a.com/blueshop/aspwriteword/getdoc.htm
輸入姓名送出後會將{0}改為輸入的姓名,並回傳word的Sample_A.doc給使用者。
本篇文章回覆於2015-07-31 01:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

聖暉
捐贈 VP 給 聖暉 檢舉此回應
謝謝香帥大大花時間幫小弟解惑..
目前就是以香帥大大最後的那個方式解決的..
本篇文章回覆於2015-08-04 09:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

小實
檢舉此回應
香帥大大~我為什麼下載出來的DOC是亂碼呢?
求解一下~謝謝
本篇文章回覆於2015-08-04 13:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
回應

香帥
檢舉此回應
to 12#
請參考
http://www.blueshop.com.tw/board/FUM200410061525290EW/BRD20120209004522NOC.html
我花了十多天用teamviewer進入他的電腦,最後才幫他解決中文亂碼。
我不知您是何原因,若有問題,請另起新案,因為本案樓主已經解決。
本篇文章回覆於2015-08-06 23:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.