집 >
기사 > 웹 프론트엔드 > ActiveXObject 컨트롤을 사용하여 javascript에서 단어 책갈피를 바꾸고 내용을 단어로 내보내고 it_javascript 기술을 인쇄합니다.
ActiveXObject 컨트롤을 사용하여 javascript에서 단어 책갈피를 바꾸고 내용을 단어로 내보내고 it_javascript 기술을 인쇄합니다.
PHP中文网원래의
2016-05-16 19:03:391665검색
시간이 빡빡해서 위의 툴킷을 공부할 시간이 많지 않습니다. 이제 javascript를 사용하여 ActiveXObject 컨트롤을 작동하고 단어 템플릿의 북마크를 교체합니다.
최근에는 데이터를 워드로 내보낸 후 편집, 인쇄해야 하는 경우가 있습니다. 여러 가지 옵션을 생각해 보았습니다. 1. Jacob을 사용합니다. 2. 아파치의 poi를 사용하세요. 3. itext를 사용하세요. 시간이 빡빡해서 위의 툴킷을 공부할 시간이 많지 않습니다. 이제 javascript를 사용하여 ActiveXObject 컨트롤을 작동하고 단어 템플릿의 북마크를 교체합니다.
전제조건: 1. 브라우저 보안 수준이 낮아지고 ActiveXObject 컨트롤을 사용할 수 있습니다.
2. 오피스 워드가 설치됩니다.
현재 단일 책갈피, 여러 줄 표 책갈피, 그림 교체가 가능하며 기본적으로 요구 사항을 충족합니다. 그러나 아직 명확하지 않은 Word 사용 방법이 많이 있습니다. 인터넷상의 대부분의 사람들은 VB를 사용합니다. 불분명한 것이 있으면 누구나 공유할 수 있습니다.
아래에서 저의 디자인 구현 아이디어에 대해 이야기하겠습니다.
먼저 단어 템플릿을 정의하고 교체해야 할 곳에 태그를 추가합니다. 메뉴-삽입-북마크에서 연도, 날짜, pic1, voList 등과 같은 속성 이름을 입력합니다. 페이지 인쇄: 인쇄된 데이터를 배경에서 꺼내서 단일 vo(개체)로 그룹으로 구성하거나 voList(개체 목록 모음)를 사용하여 페이지를 구성해야 합니다. 그런 다음 데이터를 가져옵니다. 데이터는 다음과 같이 구성됩니다.
< form name="mxvoForm">
🎜> 사용: 🎜>
참고: 이미지 교체 값에 대한 설명이 필요합니다. 1.../zbgl/abc.png와 같이 이 페이지와 관련된 경로로 설정할 수 있습니다. 🎜>2. 출력 스트림인 경우 출력 스트림을 요청하는 URL을 이미지 형식으로 매핑해야 합니다. 예를 들어, /.../abc.do?id=123은 /../abc.png?id=123으로 대체됩니다. *.png 요청을 다음으로 변환하는 등 web.xml에서 서블릿을 구성할 수 있습니다. .do of. 예:
public class PngDispatcherServlet은 HttpServlet을 확장합니다. {
private static final long serialVersionUID = 6230740581031996144L;
* @author zhu * @version 1.0 */ var baseVoListObj = function (){ this.volist = new Array(); this.cols = new Array() this.widths = new Array(); var WordApp = function(wordTplPath){ var wordObj = new ActiveXObject("Word.Application"); if(wordObj==null){ Alert( "Word 개체를 만들 수 없습니다! "); } wordObj.visible=false; this.wordObj = wordObj; this.docObj = this.wordObj.Documents.Open(getRootPath() wordTplPath); }
WordApp.prototype.closeApp = function(){ if (this.wordObj !=null){ this.wordObj.Quit() } }
WordApp.prototype.replaceBookmark = function(strName,content,type){ if (this.wordObj.ActiveDocument.BookMarks.Exists(strName)) { if (type != null && type = = "pic") {//그림 var objDoc = this.wordObj.ActiveDocument.BookMarks(strName).Range.Select() var objSelection = this.wordObj.Selection;objSelection.TypeParagraph(); //alert(getRootPath() content); var objShape = objSelection.InlineShapes.AddPicture(getRootPath() content) } else { .wordObj.ActiveDocument.BookMarks(strName).Range.Select(); this.wordObj.Application.selection.Text = content; } }else{ //alert("tag 존재하지 않음"); } }
WordApp.prototype.replaceBookmarkUsevo = function(voObj){ if(typeof voObj != "object"){ 경고( " 올바른 vo 개체를 입력하세요."); }else{ for(var i in voObj){ this.replaceBookmark(i,voObj[i]); }
WordApp.prototype.replaceBookmarkUsepicvo = function(voObj){ if(typeof voObj !="object"){ Alert("올바른 vo 개체를 입력하세요"); }else{ for(var i in voObj){ this.replaceBookmark(i,voObj[i],"pic") } } }
WordApp.prototype.replaceBookmarkUsevolist = function(strName,voListObj){ if(typeof voListObj != "object"){ Alert("매개변수는 배열 유형이어야 합니다.") }else{ var row = voListObj.volist.length; var col = voListObj.cols.length; var objDoc = this.wordObj.ActiveDocument.BookMarks(strName).Range; objTable = this .docObj.Tables.Add(objDoc,row,col);//테이블 삽입 for (var i = 0; i < row; i ) { for(var j=0; j< ;col; j ){ //할일 목록에 지원되지 않는 이미지 유형이 있는 경우 objTable.Cell(i 1,j 1).Range.InsertAfter(voListObj. volist[i][voListObj.cols[j ]]); var width = voListObj.widths[j] if(width.indexOf("px")!=-1){ objTable .Cell(i 1,j 1). 너비 = (width.substr(0,width.length-2)/100) * 28.35; //1cm = 28.35파운드 } } } //objTable.AutoFormat(16 ; //두 번째 매개변수는 비어 있을 수 있습니다. 채워지지 않으면 기본적으로 양식의 모든 요소가 사용됩니다. var formObj = document.forms[formName]; if(formObj!=null){ if(arrayObj !=null){ if(arrayObj instanceof Array){ var vo = {} for(var i=0;i< arrayObj.length;i ){ if(formObj.elements[arrayObj[i]]!= 정의되지 않음 ){ eval("vo." arrayObj[i] " = formObj.elements[arrayObj[i]] .value;"); } } //alert(objToString(vo)); return vo; }else{ Alert("두 매개변수는 다음과 같아야 합니다. 배열 유형"); } } else{ var vo = {}; for(var i=0;i eval( "vo." formObj.elements[i].name " = formObj.elements[i].value;") } return vo } }else ("첫 번째 매개변수가 나타내는 양식이 존재하지 않습니다.") ; return null } }
WordApp.prototype.getVoList = function(formName, arrayObj){// 양식 이름, 속성 배열(비어 있을 수 있음) / /var formArray = document.forms[formName]; var formArray = document.getElementsByName(formName) if (formArray != null) { if (arrayObj instanceof Array) { var voListObj = new baseVoListObj(); for(var i=0;i var vo = {}; for(var j=0;j if(formArray[i].elements[arrayObj[j]]!= 정의되지 않음 ){ eval("vo." arrayObj[j] " = formArray[i].elements[arrayObj[j]].value;"); voListObj.widths.push(formArray[i].elements[arrayObj[j]].style.width); } } } voListObj.volist.push(vo); } voListObj를 반환합니다. }else{ var voListObj = new baseVoListObj(); for(var i=0;i var vo = {}; for(var j=0;j eval("vo." formArray[i].elements[j].name " = formArray[i] .elements[j].value;"); voListObj.widths.push(formArray[i].elements[j].style.width); } } voListObj.volist.push(vo); } voListObj를 반환합니다. } }else{ return null; } }
function objToString(obj){ if(obj instanceof Array){ var str=""; for(var i=0;i str ="["; for(var j in obj[i]){ str =j "=" obj[i][j] " "; } str ="]n"; } return str; }else if(obj instanceof Object){ var str=""; for(var i in obj){ str =i "=" obj[i] " "; } return str; } }
function getRootPath() { var location=document.location; if ("file:" == location.protocol) { var str = location.toString(); return str.replace(str.split("/").reverse()[0], ""); } var pathName=location.pathname.split("/"); return location.protocol "//" location.host "/" pathName[1] "/"; } 先说到这里吧,以后有更好的再更新,希望对大家有限。
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.