PageOffice動態生成WORD文件


從空白生成文件的代碼:

    WordDocument doc = new WordDocument();
    
    //設置內容標題
    //創建DataRegion對象,PO_title為自動添加的書簽名稱,書簽名稱需以“PO_”為前綴,切書簽名稱不能重復
    //三個參數分別為要新插入書簽的名稱、新書簽的插入位置、相關聯的書簽名稱(“[home]”代表Word文檔的頁首)
    DataRegion title = doc.createDataRegion("PO_title", DataRegionInsertType.After, "[home]");
    //給DataRegion對象賦值
    title.setValue("JAVA中編程實例\n");
    //設置字體:粗細、大小、字體名稱、是否是斜體
    title.getFont().setBold(true);
    title.getFont().setSize(20);
    title.getFont().setName("黑體");
    title.getFont().setItalic(false);
    //定義段落對象
    ParagraphFormat titlePara = title.getParagraphFormat();
    //設置段落對齊方式
    titlePara.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);
    //設置段落行間距
    titlePara.setLineSpacingRule(WdLineSpacing.wdLineSpaceMultiple);
 
    //設置內容
    //第一段
    //創建DataRegion對象,PO_body為自動添加的書簽名稱
    DataRegion body = doc.createDataRegion("PO_body", DataRegionInsertType.After, "PO_title");
    //設置字體:粗細、是否是斜體、大小、字體名稱、字體顏色
    body.getFont().setBold(true);
    body.getFont().setItalic(true);
    body.getFont().setSize(10);
    //設置中文字體名稱
    body.getFont().setName("楷體");
    //設置英文字體名稱
    body.getFont().setNameAscii("Times New Roman");
    body.getFont().setColor(Color.red);
    //給DataRegion對象賦值
    body.setValue("首先,我向大家介紹一下套接字的概念。\n");
    //創建ParagraphFormat對象
    ParagraphFormat bodyPara = body.getParagraphFormat();
    //設置段落的行間距、對齊方式、首行縮進
    bodyPara.setLineSpacingRule(WdLineSpacing.wdLineSpaceAtLeast);
    bodyPara.setAlignment(WdParagraphAlignment.wdAlignParagraphLeft);
    bodyPara.setFirstLineIndent(21);

 

在一個word模板的文件中插入一個圖片、word和Excel文檔的代碼:

    WordDocument doc = new WordDocument();
    //插入圖片
    // PO_body3是word模板中已存在的一個書簽
    DataRegion body4 = doc.createDataRegion("PO_body4", DataRegionInsertType.After, "PO_body3");
    body4.setValue("[image]doc/logo.png[/image]");
    //嵌入其他Word文件
    //body4.Value = "[word]doc/1.doc[/word]";
    //嵌入其他Excel文件
    //body4.Value = "[excel]doc/1.xls[/excel]";
    ParagraphFormat bodyPara4 = body4.getParagraphFormat();
    bodyPara4.setAlignment(WdParagraphAlignment.wdAlignParagraphCenter);

操作word中的表格代碼:

    WordDocument doc = new WordDocument();
    //打開數據區域
    DataRegion dataRegion = doc.openDataRegion("PO_regTable");
    //打開table,openTable(index)方法中的index代表Word文檔中table位置的索引,從1開始
    Table table = dataRegion.openTable(1);
    //給table中的單元格賦值, openCellRC(int,int)中的參數分別代表第幾行、第幾列,從1開始
    table.openCellRC(3, 1).setValue("A公司");
    table.openCellRC(3, 2).setValue("開發部");
    table.openCellRC(3, 3).setValue("李清");
    //插入一行,insertRowAfter方法中的參數代表第幾行,從1開始
    table.insertRowAfter(3);
    table.openCellRC(4, 1).setValue("B公司");
    table.openCellRC(4, 2).setValue("銷售部");
    table.openCellRC(4, 3).setValue("張三");

 

給word添加一個水印,對於實現這個效果來說,PageOffice確實已經做到簡單到極致,如果用iText那個方案,需要寫至少十幾行代碼吧(由於篇幅的限制,這里就不寫了,有興趣的話可以網上搜索一下相關的資料),但 PageOffice的代碼只用下面一句:

    WordDocument doc =new WordDocument();
    //添加水印 ,設置水印的內容
    doc.getWaterMark().setText("北京某某公司");

優點有以下幾點:不限制於Windows平台;接口和對象的設計就是針對Office文件生成專門優化設計的,代碼寫起來比較舒服可讀性強;編程的工作量更小,如果開發中也利用了Word模板,那開發量可以更低;生成的文件是地地道道的Word格式,生成的文件效果比較完美;也不需要像POI那樣必須對doc和docx格式分別寫代碼;最后一點:服務器端不需要安裝Office,不使用服務器端資源,所以不需要處理服務器端文件生成時的並發問題,也就是很多用戶同時訪問系統生成文件時服務器的壓力問題。請注意這點,采用這個方案的話,文件是在客戶端生成的,調用的是客戶端的資源,完全符合分布式計算的思想。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM