1. 程式人生 > >Java建立寫入word文件圖片和文字

Java建立寫入word文件圖片和文字

需要的jar

<!-- 寫word -->
			<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext</artifactId>
			<version>2.1.7</version>
			</dependency>
			<dependency>
			<groupId>com.lowagie</groupId>
			<artifactId>itext-rtf</artifactId>
			<version>2.1.7</version>
			</dependency>
			<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itext-asian</artifactId>
			<version>5.2.0</version>
			</dependency>

package com.test;

import java.awt.Color;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;

import com.lowagie.text.BadElementException;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.FontFactory;
import com.lowagie.text.Image;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.rtf.RtfWriter2;

public class WordTest {
	public static void main(String[] args) {
		exportDoc();
	}

	/**
	 *
	 * @Description: 將網頁內容匯出為word @param @param file @param @throws
	 *               DocumentException @param @throws IOException 設定檔案 @return void
	 *               返回型別 @throws
	 */
	public static String exportDoc() {
		try {
			// 設定紙張大小
			Document document = new Document(PageSize.A4);
			// 建立一個書寫器(Writer)與document物件關聯,通過書寫器(Writer)可以將文件寫入到磁碟中
			// ByteArrayOutputStream baos = new ByteArrayOutputStream();
			// C:\\Users\\orion\\Desktop\\home.jpg
			File file = new File("C:\\Users\\orion\\Desktop\\qwe.doc");
			RtfWriter2.getInstance(document, new FileOutputStream(file));
			document.open();
			// 設定中文字型
			BaseFont bfChinese = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED);
			// 標題字型風格
			// Font titleFont = new Font(bfChinese, 12, Font.BOLD);
			// Paragraph title = new Paragraph("測試結果");
			// 設定標題格式對齊方式
			// title.setAlignment(Element.ALIGN_CENTER);
			// title.setFont(titleFont);
			// document.add(title);
			// 正文字型風格
			Font contextFont = new Font(bfChinese, 12, Font.BOLD);
			// Font contextFont = new Font(bfChinese, 11, Font.NORMAL);
			List<String> list = new ArrayList<>();
			list.add("a");
			list.add("a");
			list.add("a");
			list.add("a");
			list.add("a");
			list.add("a");
			list.add("a");
			list.add("a");
			list.add("a");
			for (String string : list) {
				// code
				String code = "code :  ";
				Paragraph codeStyle = new Paragraph(code);
				// 正文格式左對齊
				codeStyle.setAlignment(Element.ALIGN_LEFT);
				codeStyle.setFont(contextFont);
				// 離上一段落(標題)空的行數
				codeStyle.setSpacingBefore(20);
				// 設定第一行空的列數
				// context.setFirstLineIndent(0);
				document.add(codeStyle);
				// 操作
				String codeContent = "點選";
				Paragraph codeContentStyle = new Paragraph(codeContent, FontFactory
						.getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 11, Font.UNDERLINE, new Color(0, 0, 255)));
				// 離上一段落(標題)空的行數
				codeContentStyle.setSpacingBefore(5);
				document.add(codeContentStyle);
				// result
				String result = "result :";
				Paragraph resultStyle = new Paragraph(result);
				// 正文格式左對齊
				resultStyle.setAlignment(Element.ALIGN_LEFT);
				resultStyle.setFont(contextFont);
				// 離上一段落空的行數
				resultStyle.setSpacingBefore(10);
				// 設定第一行空的列數
				// context.setFirstLineIndent(0);
				document.add(resultStyle);
				// 利用類FontFactory結合Font和Color可以設定各種各樣字型樣式
				// 結果
				String resultContent = "成功";
				Paragraph resultContentStyle = null;
				if (resultContent.equals("成功")) {
					resultContentStyle = new Paragraph(resultContent, FontFactory
							.getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 11, Font.UNDERLINE, new Color(0, 255, 0)));
				} else {
					resultContentStyle = new Paragraph(resultContent, FontFactory
							.getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 11, Font.UNDERLINE, new Color(255, 0, 0)));
				}
				// 離上一段落空的行數
				resultContentStyle.setSpacingBefore(5);
				document.add(resultContentStyle);
				// 新增圖片 Image.getInstance即可以放路徑又可以放二進位制位元組流
				String imgPath = "C:\\Users\\orion\\Desktop\\home.jpg";
				Image img = Image.getInstance(imgPath);
				img.setAbsolutePosition(0, 0);
				img.setAlignment(Image.ALIGN_CENTER);// 設定圖片顯示位置
				img.scalePercent(30);// 表示顯示的大小為原尺寸的50%
				// img.scaleAbsolute(60, 60);// 直接設定顯示尺寸
				// img.scalePercent(25, 12);//影象高寬的顯示比例
				// img.setRotation(30);//影象旋轉一定角度
				document.add(img);
				String log = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
				if (log != null && !"".equals(log)) {
					Paragraph exceptionStyle = new Paragraph("異常資訊 :");
					// 正文格式左對齊
					exceptionStyle.setAlignment(Element.ALIGN_LEFT);
					exceptionStyle.setFont(contextFont);
					// 離上一段落空的行數
					exceptionStyle.setSpacingBefore(20);
					document.add(exceptionStyle);
					document.add(new Paragraph(log,
							FontFactory.getFont(FontFactory.HELVETICA_BOLDOBLIQUE, 10, Font.NORMAL)));
				}
			}

			document.close();
			// 得到輸入流
			// wordFile = new ByteArrayInputStream(baos.toByteArray());
			// baos.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (BadElementException e) {
			e.printStackTrace();
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (DocumentException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		return "";

	}
}