用ASP建立Microsoft Word 檔案(轉)

來源:互聯網
上載者:User
word|建立 隨著人們對資料庫及動態HTML (DHTML)的應用和對XML的興趣的增加,所以在商業網站的資料中使用動態內容變得越來越普遍。這裡我們就成功運用了一則最新的技巧——用ASP建立 Word 檔案,我想您看後肯定會受到很大的啟發。
原文出處:http://www.asptoday.com/articles/19990825.htm

   背景

   BuildDoc.asp是一個ASP檔案,它讀入一個網頁表單的輸出,並建立一個Microsoft Word檔案作為輸出, 其中包含根據表單內資料改變產生的一個表格。表單內容不再局限於靜態資訊。也就是說, 表單中所顯示的內容可能隨著使用者的互動作用而改變。




  
   BuildDoc所滿足的商業需求是:根據銷售人員網頁列表變化的記錄,建立表單信件。只有被銷售人員修改過的資料才被發送到Word, 在那裡這些資料被格式化到表格中。

   BuildDoc讀入表單上的所有資訊,識別被改變的行,然後用被改變的行中包含的資訊來建立一個 Microsoft Word檔案。BuildDoc使用一個模板檔案(buildDoc.dot),其中包含地址頭和一些預先格式化的文本。然後向檔案中寫入一個表格,其中的每一行都對應與網頁表單中被修改過的一行。




  
   怎麼做?

   開始時,將所有的網頁表單域讀入接收網頁的隱含表單域中。在下面的原始碼中,請注意在Body標記中對“onLoad”的調用。它調用buildDoc VB指令碼子程式,向它傳遞3個參數:頁面中表單的內容(所有的隱含域)、Word模板檔案的位置、從輸入表單中收到的行數。讀所有的輸入表單域,然後當頁面裝載後調用buildDoc子程式。為了簡短起見,這裡假定所有變數在使用之前都已被聲明:

   buildDoc.asp中裝載輸入表單域的代碼如下:


〈!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 3.2 Final//EN">
〈HEAD>
    〈TITLE>Build Document〈/TITLE>
    〈META HTTP-EQUIV="Refresh" CONTENT="30;URL='orderForm.asp'">
〈/HEAD>
〈%
    dotLocation="'servernamedirectory    heTemplate.dot'"
    intRowCount = Request.Form("rowCount")   'initialize a row counter
%>
〈BODY Language="VBScript" onLoad="buildDoc document.theForm,
〈%=dotLocation%>,intRowCount>
〈FORM NAME="theForm">
〈%
    itemCount = 0                            'set field counter to zero
    For Each Item in Request.Form            'count up the form fields
    itemCount = itemCount + 1             'using For..Next loop
%>
    〈INPUT TYPE="hidden" NAME="〈%=Item%>" VALUE="〈%=Request(Item)%>">
〈% Next %>
    〈INPUT TYPE="hidden" NAME="numbRows"   VALUE="〈%=intRowCount%>">
    〈INPUT TYPE="hidden" NAME="fieldCount" VALUE="〈%=itemCount%>">
〈/FORM>
〈/BODY>
〈/HTML>
   用下面例子中的代碼來建立一個Word 檔案對象。請注意在Internet Explorer 4+中,要將瀏覽器的安全性設定為Low或 Custom,以能使應用程式運行成功。


〈%
Set objWordDoc = CreateObject("Word.Document")
ObjWordDoc.Application.Documents.Add theTemplate, False
ObjWordDoc.Application.Visible=True
%>
   調整數組的維數使它與網頁表單所包含的行數相同。這時,將Y軸設為4個常量,這是輸出檔案中所需要 的欄數。X軸包含從表單中接收的行數。

〈% Redim Preserve theArray(4,intTableRows) %>

   現在開始檢查所有的表單行。在所有輸入的網頁表單域中迴圈,收集每個表單網域名稱及其相應的值。逐個檢查以決定將其放入哪個數列元素內,然後將其放入。以下舉例代碼中的SELECT CASE命令很重要,這決定表單域屬於哪一列。為了方便,使用不確定編碼的CASE選擇。


〈%
For intCount = 0 to frmData.fieldCount.value
   strOkay = "Y"
   strSearch = frmData.elements(intCount).name   'load the field name
   strValue = frmData.elements(intCount).value   'load the field value
   strPosition = Instr(1,strSearch,"_")          'get pos val of "_"
   intStringLen=strPosition-1
   If intStrLen > 0 Then
      strLeft = Left(strSearch,intStringLen)
      strRight = Right(strSearch,(Len(strSearch)-Len(strLeft)-1))
      Select Case strLeft
         Case "SKU"                          intArrayY=0
         Case "description"                  intArrayY=1
         Case "price"                        intArrayY=2
         Case "quantity&



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。