최근 프로젝트는 워드 문서를 내보내야합니다. 나는 오랫동안 열심히 일해 왔습니다. 프리 마커 템플릿을 사용하는 것이 더 편리하고 편리하다는 것을 알았습니다. 귀하의 참조의 주요 단계를 요약하겠습니다. 다음은 테스트 용지 생성의 간단한 예입니다.
1. 템플릿 생산
먼저 아래 그림과 같이 단어를 사용하여 템플릿을 만듭니다.
(위의 표가 있고 테두리를 보이지 않게 설정 한 다음 XML 파일로 저장 한 다음 도구를 사용하여 XML 파일을 열십시오. 누군가 FirstObject XML 편집기를 사용하여 메모장 ++만큼 좋지 않다고 생각합니다. 나는 여기에 메모장 ++를 사용합니다. 주로 요소와 강조 표시되고 자동으로 쌍을 이루기 때문입니다. 효과는 다음과 같습니다.
위의 검은 장소는 기본적으로 우리가 나중에 교체하고 싶은 곳입니다. 예를 들어, Xytitle이 $ {xytitle}으로 대체되면 테이블에 큰주의를 기울여야합니다. 예를 들어, 객관식 질문을 검색하여 객관식 질문 아래 표는 배치 될 수 있습니다. <w : tr> </w : tr> 쌍은 행을 나타냅니다. 즉, 레코드 (질문). 여기에서 데이터를 채우기 위해 <#list> </#list> 한 쌍을 사용해야합니다. 자세한 내용은 프리 마커 페이지의 문법을 참조하십시오. 예를 들어, 여기에 객관식 질문과 하나의 레코드가 있으므로 다음과 같이 두 개의 행을 포함하려면 <#list> </#list>가 필요합니다. $ {plan1.xzn}, $ {plan1.xztest}, $ {plan1.ans1}, $ {plan1.ans2}, $ {plan1.ans3}, $ {plan1.ans4}, table1 및 plan1이 여기에 명명된다는 점이 있습니다. 표 1 및 후속 충전 데이터를 사용해야합니다. 다른 교체는 동일하며 결과는 다음과 같습니다.
저장 후 접미사 이름을 FTL로 수정하면 템플릿이 완료됩니다.
2. 프로그래밍 구현
Freemarker-2.3.13.jar 패키지는 여기에서 사용되며 코드는 다음과 같습니다.
패키지 공통; java.io.bufferedwriter import; import java.io.file; import java.io.filenotfoundException; import java.io.fileoutputStream; import java.io.ioexception; import java.io.outputStreamwriter; java.io.unsupportedencodingException 가져 오기; import java.io.writer; java.util.map import; Freemarker.template.configuration 가져 오기; Freemarker.template.template 가져 오기; Freemarker.template.template 가져 오기; import freemarker.template.templateException; 공개 클래스 DocumentHandler {개인 구성 구성 = NULL; public DocumentHandler () {configuration = new configuration (); configuration.setDefaultEncoding ( "UTF-8"); } public void createoc (map <string, object> dataMap, string filename)는 unsupportedencodingexception {// datamap을 modulo script의 데이터 파일을 채우기 위해 {// dataMap을 만들어 modulo 스크립트 장치 메소드와 경로를 설정하면 여러 템플릿로드 메소드를 지원합니다. 다시 서비스, 클래스 경로 및 데이터베이스로드를 할 수 있습니다. // 여기에서 템플릿은 템플릿 패키지 구성에 배치됩니다. 템플릿 t = null; try {//test.ftl은로드 할 템플릿입니다 t = configuration.getTemplate ( "fctestpaper.ftl"); } catch (ioexception e) {e.printstacktrace (); } // 출력 문서 경로 및 이름 파일 Outfile = 새 파일 (filename); 작가 out = null; fileoutputStream fos = null; try {fos = new FileOutputStream (Outfile); OutputStreamWriter Owriter = New OutputStreamWriter (FOS, "UTF-8"); //이 장소는 스트리밍 인코딩에 없어서는 안될 것입니다. main ()을 사용하여 별도로 호출하면 괜찮을 것입니다. 그러나 내보내기 후에 Word 문서가 열리지 않으며 패키지 XML 파일이 올바르지 않습니다. 주된 이유는 인코딩 형식이 잘못되어 구문 분석 할 수 없기 때문입니다. // out = new BufferedWriter (new outputStreamWriter (new FileOutputStream (outFile))); out = new bufferedwriter (owriter); } catch (filenotfoundException e1) {e1.printstacktrace (); } try {t.process (datamap, out); out.close (); fos.close (); } catch (TemplateException e) {e.printstacktrace (); } catch (ioexception e) {e.printstacktrace (); } //System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 그런 다음 데이터 호출을 준비하면 코드는 다음과 같습니다.
패키지 com.havenliu.document; java.io.unsupportedencodingException 가져 오기; java.util.arraylist 가져 오기; java.util.hashmap import; Java.util.list 가져 오기; java.util.map import; 공개 클래스 메인 { / ** * @param args * @throws UnSupportedEncodingException * / public static void main (String [] args)은 unsupportedencodingException {; map <string, object> datamap = new Hashmap <string, object> (); datamap.put ( "xytitle", "시험지"); int index = 1; // 객관식 목록 <map <string, object >> list1 = new ArrayList <map <string, object >> (); // 질문 목록 <map <string, object >> list11 = new ArrayList <map <String, Object >> (); // Answer Index = 1; for (int i = 0; i <5; i ++) {map <string, object> map = new Hashmap <String, object> (); map.put ( "xzn", index + "); Map.put ( "XzTest", "() 운영 체제는 여러 터미널이 동시에 하나의 호스트에 연결할 수 있으며 여러 사용자가 동시에 각 단자를 통해 컴퓨터를 대화식으로 사용할 수 있습니다."); map.put ( "ans1", "a" + index); map.put ( "ans2", "b" + index); map.put ( "ans3", "c" + index); map.put ( "ans4", "d" + index); List1.add (지도); map <string, object> map1 = new Hashmap <String, Object> (); map1.put ( "fuck", index + "."); map1.put ( "abc", "a" + index); list11.add (map1); 색인 ++; } datamap.put ( "table1", list1); Datamap.put ( "표 11", List11); // 빈 목록을 채우십시오 <map <string, object >> list2 = new ArrayList <map <String, Object >> (); list <map <string, object >> list12 = new ArrayList <map <String, Object >> (); 색인 = 1; for (int i = 0; i <5; i ++) {map <string, object> map = new Hashmap <String, object> (); map.put ( "tkn", index + "); map.put ( "tktest", "운영 체제는 컴퓨터 시스템의 ___ 시스템 소프트웨어 ________이며 컴퓨터 시스템에서 _________를 관리하고 제어합니다."); list2.add (지도); map <string, object> map1 = new Hashmap <String, Object> (); map1.put ( "fill", index + "); map1.put ( "def", "중간 스케줄링" + 인덱스); list12.add (map1); 색인 ++; } datamap.put ( "table2", list2); Datamap.put ( "표 12", List12); // 판단 질문 목록 <map <String, Object >> list3 = new ArrayList <map <String, Object >> (); list <map <string, object >> list13 = new ArrayList <map <String, Object >> (); 색인 = 1; for (int i = 0; i <5; i ++) {map <string, object> map = new Hashmap <String, object> (); map.put ( "pdn", index + "); Map.put ( "pdtest", "Composite 방화벽 방화벽은 내부 네트워크와 외부 네트워크 간의 격리 지점이며, 애플리케이션 계층의 통신 흐름을 모니터링하고 분리하는 역할을 수행하며 종종 필터의 기능과 결합됩니다."); list3.add (지도); map <string, object> map1 = new Hashmap <String, Object> (); map1.put ( "judge", index + "); map1.put ( "hij", "v" + index); list13.add (map1); 색인 ++; } datamap.put ( "table3", list3); Datamap.put ( "표 13", List13); // 짧은 답변 질문 목록 <map <String, Object >> list4 = new ArrayList <map <String, Object >> (); list <map <string, object >> list14 = new arraylist <map <String, object >> (); 색인 = 1; for (int i = 0; i <5; i ++) {map <string, object> map = new Hashmap <String, object> (); map.put ( "jdn", index + "); map.put ( "JDTest", "작업 일정, 중간 일정 및 프로세스 스케줄링의 차이점을 설명하고 다음과 같은 문제에 대한 스케줄러 수준을 분석하십시오."); list4.add (지도); map <string, object> map1 = new Hashmap <String, Object> (); map1.put ( "답", 색인 + "); map1.put ( "xyz", "작업 일정, 중간 일정 및 프로세스 스케줄링의 차이점을 설명하고 다음과 같은 문제를 담당 해야하는 스케줄러 수준을 분석하십시오."); list14.add (map1); 색인 ++; } datamap.put ( "표 4", list4); Datamap.put ( "표 14", List14); mdoc mdoc = new Mdoc (); mdoc.createdoc (datamap, "e :/outfile.doc"); }} 위의 맵의 키는 템플릿에 해당해야합니다. 그렇지 않으면 오류 가보고됩니다. 효과는 다음과 같습니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.