<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    飛艷小屋

    程序--人生--哲學___________________歡迎艷兒的加入

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      52 Posts :: 175 Stories :: 107 Comments :: 0 Trackbacks
    曾有編程愛好者多次求我幫做Word模板,填寫資料。當時也找不到資料。只告訴他
    要寫資料的那一頁用EXCEL,因EXCEL的參考資料多。后見他在多個論壇求助,未見解決。
    剛好閑點,花點時間研究了一下WORD,終于知道怎樣如控制EXCEL一樣來控制WORD。
    寫成例子貼出來與大家共享,都有兩方法,一是直接用代碼編程創建文檔,另是在WORD或
    EXCEL中作好模板,用模板創建,添寫資料。我中意后者。
      另附 GRID 模仿DELPHI的顯示

    總結以下幾點,就可更加發揮:

    一、要實現的目的,先在WORD或EXCEL中錄制宏。然后根據宏來修改做成VFP的代碼。

    二、對象的屬性不同。
        a、WORD ,
          1、 凡有selection的為應用程序屬性
              OleWord=CREATEOBJECT('word.application')  &&創建word目標
              OleWord.Selection
             **** Word多數用它**********
              OleWord.quit &&退出word
           2、OleWord.Documents
              OleWord.Documents.add() &&增加新的word文檔,有路徑文件名是以它作模板打開
              OleWord.Documents.open("D:\test.doc") &&打開指定的文件
              OleWord.Documents.close(.F.) &&關閉所有打開的文檔不保存,不要.F.,調出對話框
           3、頁面設置OleWord.ActiveDocument.PageSetup
           4、OleWord.ActiveDocument
              OleWord.ActiveDocument.Save &&保存
              OleWord.ActiveDocument.SaveAs("D:\test.doc") &&最簡單的另存
              OleWord.ActiveDocument.close &&關閉當前word文檔

       b、EXCEL
          1、凡有selection的為應用程序屬性
             XLApp=CREATEOBJECT('Excel.application')
             XLApp.Selection
             XLApp.quit  &&退出Excel
          2、XLApp.WorkBooks
             XLApp.WorkBooks.Add( ) &&增加新的EXCEL,加有路徑文件名是以它作模板打開
             XLApp.Workbooks.Open("D:\test.xls")  && 打開指定工作簿
             XLApp.Workbooks.close(.F.)  &&關閉所有打開的工作簿不保存,不要.F.,調出對話框
          3、頁面設置 XLApp.ActiveSheet.PageSetup
          4、XLApp.ActiveSheet
           ********Excel多數用它與Word不同**********
          5、XLApp.ActiveWorkbook
             XLApp.ActiveWorkbook.Save  &&保存 
             XLApp.ActiveWorkbook.SaveAs("D:\ABC\22.xls") &&另存為
             XLApp.ActiveWorkbook.close   &&關閉當前工作簿
    三、WORD/EXCEL宏與VFP表示方法不同   

      a、WORD打開
       OleWord.Documents.open("D:\test.doc",.F.,.F.,.F.,'456','123',.F.,'','',.F.) &&根據宏函數改,與保存不同方式,456為打開密碼,123為只讀密碼

    *宏函數 Documents.Open FileName:="temp.doc", ConfirmConversions:=False, ReadOnly:= _
    *        False, AddToRecentFiles:=False, PasswordDocument:="456", PasswordTemplate _
    *        :="123", Revert:=False, WritePasswordDocument:="123", WritePasswordTemplate _
    *        :="", Format:=wdOpenFormatAuto
      b、EXCEL只讀保護
              XLApp.ActiveSheet.protect('123') &&用123密碼鎖起只讀 
              XLApp.ActiveSheet.unprotect('123')  &&用123密碼解鎖   

    *宏函數(用123密碼只讀鎖)  ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    * 用123密碼解鎖          ActiveSheet.Unprotect           

                                                 
                                              徐 軍        xj@meyerdyeing.com
                                        2005/11/06    

    示例:
    http://upload.programfan.com/upfile/20051122194626.rar

    發表時間:2005-11-5 14:34:00   

      1 樓  

    部分代碼:
    *用WORD創建新文檔,再根據DBF的資料創建自幾所需要的表格文檔

    Thisform.chnagedbf  &&轉表查詢生成新表、公用變量k,arrcolor[j,k],arrWash[1],arrCrock[1]
       WAIT windows("起動WORD制做文檔,請稍等....") NOWAIT AT MROW(Thisform.Name,3),MCOL(Thisform.Name,3)
    OleWord=CREATEOBJECT('word.application')  &&創建word目標
    OleWord.Visible=.F.  &&word隱藏,為.F.可在后臺操作
    OleWord.Documents.add() &&增加新的word文檔
    *-- 頁面設置
    WITH OleWord.ActiveDocument.PageSetup
    *1.設置頂邊距為2厘米
          .TopMargin=2/0.035
    *2.設置底邊距為4厘米
          .BottomMargin=4/0.035
    *3.設置左邊距為2厘米
         .LeftMargin=2/0.035
    *4.設置右邊距為2厘米
         .RightMargin=2/0.035
    *頁面0為縱向,1為橫向     
         .Orientation=1
       ENDWITH
    **********************************************************************************
    WITH OleWord.Selection
          .TypeParagraph  &&回車符
          .Text="致"  &&加完是選定狀態
          .Font.size=20   &&字體大小
          .Moveright(3,1) &&加完是選定狀態,移動一次才不覆蓋,3是右移參數,左移1字節。
          .TypeParagraph  
          .insertafter(SPACE(4)+"興啟")    
          .Font.size=20  
          .Moveright(3,1)
          .TypeParagraph
          .Moveright(3,1)  
          .insertafter(SPACE(6)+"多謝貴公司的支持,貴公司在我廠所配COT樣辦牢度如下:")    
          .Font.size=14    
          .Moveright(3,1)     
          .TypeParagraph
    ENDWITH       
    ******創建表格*******************************
      OleWord.Selection.TypeParagraph
      OleWord.Selection.TypeParagraph
      OleWord.Selection.Moveup(5,1)    &&第一個5是上移參數,第二個數字是上移1行,留一空行在格表下面
      otemp=OleWord.Selection.Range
      OleWord.ActiveDocument.Tables.Add(otemp,k+3,6,5,0) &&插入k+3行6列表格
      OleWord.Selection.SelectRow
      &&光標在第一格,要移動用Moveright() 等

    WITH OleWord.Selection
         .Tables(1).Rows.Height=0.77/0.035  &&選定表格所有行高0.77CM     
         .Tables(1).Columns.PreferredWidth=2.5/0.035 &&選定表格所有列寬 1.9cm
         .Tables(1).Columns(1).PreferredWidth=4.73/0.035 &&選定表格第一列寬 4.73cm
        *添加數據,表格合并后就不能用此方法加資料
        .Tables(1).rows(3).cells(3).range.insertafter("顏色變化")
        .Tables(1).rows(3).cells(4).range.insertafter("顏色沾色")  
        .Tables(1).rows(3).cells(5).range.insertafter("干 擦")
        .Tables(1).rows(3).cells(6).range.insertafter("濕 擦")  
      FOR i=1 TO k   
        FOR j=1 TO 6
         .Tables(1).rows(i+3).cells(j).range.insertafter(arrcolor[i,j])    
        ENDFOR
      ENDFOR

         **選定合并  
         .MoveLeft(3,1)  &&左移去掉選定.第一個3是左移參數,第二個數字是左移1字節
         .MoveDown(5,2,1) &&下移兩格,5是下移參數,2是移兩格,1是按SHIFT,選擇3格  
         .Cells.Merge  &&合并選定的三格

         .MoveRight(3,1) &&右移去掉選定.第一個3是右移參數,第二個數字是右移1格
         .MoveDown(5,2,1)
         .Cells.Merge  &&合并選定的三格

         .MoveRight(3,1) &&右移一格去掉選定
         .Moveright(3,2,1)   &&3是右移參數,右移1格,最后1是按SHIFT鍵,變成選定二格。
         .Cells.Merge  &&合并選定的兩格

         .MoveDown(5,1)
         .Moveright(3,2,1)   &&3是右移參數,左移1格,最后1是按SHIFT鍵,變成選定二格。
         .Cells.Merge  &&合并選定的兩格

         .Moveright(3,1) &&右移一格去掉選定
         .Moveright(3,2,1)   &&3是右移參數,左移1格,最后1是按SHIFT鍵,變成選定二格。
         .Cells.Merge  &&合并選定的兩格     
         
         .Moveup(5,1) &&上移一格,5是下移參數,2是移兩格,1是按SHIFT,選擇3格  
         .Moveright(3,2,1)
         .Cells.Merge
         ***加入資料,因要合并不方便操作,所以合并后加放標題資料
         .insertafter("摩  擦")
         .MoveDown(5,1)
         .insertafter(arrCrock[1])  
         .MoveLeft(3,2)
         .insertafter(arrWash[1])
         .Moveup(5,1)
         .insertafter("耐  洗")
         .MoveLeft(3,2)
         .insertafter("顏 色")
         .MoveLeft(3,2)
         .insertafter("色 號")
         .MoveDown(5,k,1) &&5是下移參數,下移k+2格,最后1是按SHIFT鍵,變成選定多格。
         .MoveRight(3,5,1)  &&3是右移參數,右移5格,最后1是按SHIFT鍵,變成選定多格。
         .ParagraphFormat.Alignment=1  && 1居中 2左對齊,3右對齊,4分散對齊
         .MoveDown(5,1)
         .TypeParagraph
         .insertafter(SPACE(4)+"祝")  
         .MoveRight(3,1)  
         .TypeParagraph      
         .insertafter("生意興隆!")  
         .MoveRight(3,1)  
         .TypeParagraph  
         .insertafter(SPACE(25)+"先科有限公司")   
         .Font.size=20  
         .Moveright(3,1)  
         .TypeParagraph  
         .insertafter(SPACE(30)+DTOC(DATE()))
         .Moveright(3,1)              
    ENDWITH
      MESSAGEBOX("制作文檔完畢!",64,"提示")

       OleWord.Visible=.T.
    posted on 2005-12-06 11:23 天外飛仙 閱讀(1259) 評論(0)  編輯  收藏 所屬分類: .net
    主站蜘蛛池模板: 亚洲日韩一区二区三区| 亚洲国产精品婷婷久久| 国产一卡二卡3卡四卡免费| 美女裸身网站免费看免费网站| 亚洲av日韩av天堂影片精品| 亚洲综合无码一区二区痴汉| 一级美国片免费看| 免费观看在线禁片| 国产成人精品免费视频大全麻豆| 免费播放特黄特色毛片| 亚洲AV日韩AV永久无码久久 | 在线亚洲97se亚洲综合在线| 亚洲AV午夜福利精品一区二区| 亚洲卡一卡二卡乱码新区| fc2成年免费共享视频18| 欧美在线看片A免费观看| 亚洲情a成黄在线观看| 亚洲欧洲国产精品久久| 一级做a爰片久久毛片免费看 | 精品成在人线AV无码免费看 | 人成免费在线视频| 歪歪漫画在线观看官网免费阅读| 亚洲日本一区二区三区在线不卡| 在线观看亚洲AV日韩A∨| 国产男女猛烈无遮挡免费网站| 亚洲国产精品久久久久网站| 99re6在线视频精品免费下载 | 成在线人永久免费视频播放| 亚洲最大中文字幕| 欧洲美熟女乱又伦免费视频| 亚洲av无码不卡| 免费毛片在线看片免费丝瓜视频 | 一边摸一边爽一边叫床免费视频| 久久久久久亚洲精品| 无码一区二区三区免费视频 | 亚洲自偷自偷图片| av大片在线无码免费| 亚洲欧洲校园自拍都市| 国产免费黄色大片| 久久久久se色偷偷亚洲精品av| 久草视频在线免费看|