PageOfficeV4.0 動態生成WORD文件

PageOffice 組件提供的接口和對象都簡潔高效,開發效率很高。不只支持從一個空白的Word生成文件,還能夠對現有的word模板作數據填充,還能夠把多個word模板插入到一個word模板中不一樣的位置來組合生成文件,好比作一個試卷生成系統,甚至還能夠插入圖片和Excel文件到word模板中的指定位置去生成一個複合型的文檔報表,功能異常強大。下面列舉幾個生成文件的效果代碼:編程

  1. 從空白生成文件的代碼:
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);
  1. 在一個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);
  1. 操做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("張三");
  1. 給word添加一個水印,對於實現這個效果來講,PageOffice確實已經作到簡單到極致,若是用iText那個方案,須要寫至少十幾行代碼吧(因爲篇幅的限制,這裏就不寫了,有興趣的話能夠網上搜索一下相關的資料),但 PageOffice的代碼只用下面一句:
WordDocument doc =new WordDocument();
    //添加水印 ,設置水印的內容
    doc.getWaterMark().setText("北京某某公司");

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

相關文章
相關標籤/搜索