package com.report;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.apache.poi.POIXMLDocument;
import org.apache.poi.openxml4j.opc.OPCPackage;

public class PoiTest {
	private static Map getDataMap() {
		Map dataMap = new HashMap();
		dataMap.put("companyName", "上海吉贝克信息技术有限公司");
		dataMap.put("address", "上海市杨浦区翔殷路1088号15层");
		dataMap.put("column1", "非动态表格第一列");
		dataMap.put("column2", "非动态表格第二列");
		dataMap.put("column3", "非动态表格第三列");
		dataMap.put("table.table1", getTable1Data());
		dataMap.put("table.table2", getTable2Data());
		
		dataMap.put("no1", "123");
		dataMap.put("node2", "eee");
		return dataMap;
	}
	private static List getTable1Data() {
		List list = new LinkedList();
		for (int i = 0; i < 4; i++) {
			list.add(new String[]{i+"行一列",i+"行二列",i+"行三列",i+"行四列"});
		}
		return list;
	}
	private static List getTable2Data() {
		List list = new LinkedList();
		for (int i = 0; i < 2; i++) {
			list.add(new String[]{i+"行一列",i+"行二列",i+"行三列",i+"行四列","",i+"abc6"});
		}
		return list;
	}
	/**
	public static void main(String[] args) {
		try {
			String path = System.getProperty("user.dir") + File.separator + "src/resource/";
			System.out.println("path="+path);
			OPCPackage pack = POIXMLDocument.openPackage(path+ "wordtest.docx");
			CustomXWPFDocument doc = new CustomXWPFDocument(pack);
			Map dataMap = getDataMap();
			PoiUtil.processTable(doc, dataMap);
			//PoiUtil.addImage(doc, dataMap);
			PoiUtil.replaceText(doc, dataMap);
			//注：此处可再继续扩展页眉和页脚的处理
			
			//将处理好的Word写到文件中
			FileOutputStream output = new FileOutputStream(path+"test_out1.docx");
			doc.write(output);
			output.flush();
			output.close();
			System.out.println("处理完成");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	**/
	public static void main1(String[] args) {
		try {
			String path = System.getProperty("user.dir") + File.separator + "src/resource/";
			OPCPackage pack = POIXMLDocument.openPackage(path+ "wordtest.docx");
			CustomXWPFDocument doc = new CustomXWPFDocument(pack);
			Map dataMap = getDataMap();
			PoiUtil.processTable(doc, dataMap);
			//PoiUtil.addImage(doc, dataMap);
			PoiUtil.replaceText(doc, dataMap);
			//注：此处可再继续扩展页眉和页脚的处理
			
			//将处理好的Word写到文件中
			ByteArrayOutputStream baos = new ByteArrayOutputStream();
			doc.write(baos);
			byte [] dataBytes = baos.toByteArray();
			FileOutputStream fos = new FileOutputStream(path+"test_out2.docx");
    	    fos.write(dataBytes);
    	    fos.close();
    	    System.out.println("处理完成");
    	    
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		try {
    	    System.out.println("处理完成");
    	    
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}