javascript下用ActiveXObject控件替换word书签,将内容导出到word后打印_javascript技巧
由于时间比较紧,没多的时候去学习研究上述工具包,现在用javascript操作ActiveXObject控件,用替换word模板中的书签方式解决。
最近有需求将数据导出到word里,然后编辑打印。
想过几种方案:
1.使用jacob。
2.使用apache的poi。
3.使用itext。
由于时间比较紧,没多的时候去学习研究上述工具包,现在用javascript操作ActiveXObject控件,用替换word模板中的书签方式解决。
前提条件:
1.浏览器安全级别降低,可以使用ActiveXObject控件。
2.装有office word。
目前实现了替换单个书签,多行表格书签,和图片,基本上满足需求。不过还有很多操作word的使用方法不太清楚,网上大部分都使用的VB,有不清楚的地方,大家可以交流。
下面说一下我的设计实现思路:
首先当然是定义word模板,在需要替换的地方加上标签。 菜单-插入-书签,输入属性名,如year,date,pic1,voList等等。
打印页面:
需要把打印的数据从后台取出,以单个vo(一个对象)为一组,或以voList(对象的列表集合)为一组 组织好页面上 再得到这些数据后进行替换。
数据组织形式如下:
使用:
注意:
替换图片的值需要解释一下:
1.可以设为相对本页面的路径如../zbgl/abc.png
2.如果是输出流,则需要把请求输出流的url映射成以图片格式结尾的。如/.../abc.do?id=123换成/../abc.png?id=123
可以在web.xml里配一个servlet,如以*.png的请求转成.do的。如:
public class PngDispatcherServlet extends HttpServlet {
private static final long serialVersionUID = 6230740581031996144L;
public void init() throws ServletException {
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
doGet(request, response);
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
//StringBuffer url = request.getRequestURL();
StringBuffer url = new StringBuffer(request.getRequestURI());
if(request.getQueryString() != null) {
url.append('?');
url.append(request.getQueryString());
}
String newUrl = url.toString().replaceAll(".png", ".do");
ServletContext sc = getServletContext();
RequestDispatcher rd = sc.getRequestDispatcher(newUrl); //定向的页面
rd.forward(request, response);
}
}
export2word.js代码:
/**
*
Title: 用word书签替换的方式将内容导出到word
*
Description: **
*
Copyright: Copyright (c) 2007-2010
*
Company: **
* @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 {
this.wordObj.ActiveDocument.BookMarks(strName).Range.Select();
this.wordObj.Application.selection.Text = content;
}
}else{
//alert("标签不存在");
}
}
WordApp.prototype.replaceBookmarkUsevo = function(voObj){
if(typeof voObj != "object"){
alert("请输入正确的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;
var objTable = this.docObj.Tables.Add(objDoc,row,col) ;//插入表格
for (var i = 0; i < row; i++) {
for(var j=0; 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 = (width.substr(0,width.length-2)/100) * 28.35;//1厘米=28.35磅
}
}
}
//objTable.AutoFormat(16);
objTable.Borders.InsideLineStyle = 1
objTable.Borders.OutsideLineStyle = 0;
}
}
WordApp.prototype.getSingleVo = function(formName,arrayObj){//第二个参数可以为空,不填时默认为表单里的所有元素
var formObj = document.forms[formName];
if(formObj!=null){
if(arrayObj!=null){
if(arrayObj instanceof Array){
var vo = {};
for(var i=0;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
}
return vo;
}
}else{
alert("第一个参数表示的表单不存在");
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
for(var j=0;j
eval("vo."+arrayObj[j]+" = formArray[i].elements[arrayObj[j]].value;");
if(i==0){//第一次的时候定义有效属性和宽度
voListObj.cols.push(arrayObj[j]);
voListObj.widths.push(formArray[i].elements[arrayObj[j]].style.width);
}
}
}
voListObj.volist.push(vo);
}
return voListObj;
}else{
var voListObj = new baseVoListObj();
for(var i=0;i
for(var j=0;j
if(i==0){//第一次的时候定义宽度
voListObj.cols.push(formArray[i].elements[j].name);
voListObj.widths.push(formArray[i].elements[j].style.width);
}
}
voListObj.volist.push(vo);
}
return voListObj;
}
}else{
return null;
}
}
function objToString(obj){
if(obj instanceof Array){
var str="";
for(var i=0;i
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]+"/";
}
先说到这里吧,以后有更好的再更新,希望对大家有用。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Beim Bearbeiten von Inhalten in einem Word-Dokument werden Zeilen möglicherweise automatisch umgebrochen. Wenn zu diesem Zeitpunkt keine Anpassung vorgenommen wird, hat dies große Auswirkungen auf unsere Bearbeitung und bereitet den Leuten große Kopfschmerzen. Tatsächlich handelt es sich um ein Problem mit dem Lineal. Im Folgenden werde ich die Lösung zum Aufheben des automatischen Zeilenumbruchs in Word vorstellen. Nachdem Sie ein Word-Dokument geöffnet und Text eingegeben haben, springt der Text beim Kopieren und Einfügen möglicherweise in eine neue Zeile. In diesem Fall müssen Sie die Einstellungen anpassen, um dieses Problem zu lösen. 2. Um dieses Problem zu lösen, müssen wir zunächst die Ursache dieses Problems kennen. Zu diesem Zeitpunkt klicken wir in der Symbolleiste auf „Ansicht“. 3. Klicken Sie dann unten auf die Option „Lineal“. 4. Zu diesem Zeitpunkt werden wir feststellen, dass über dem Dokument ein Lineal mit mehreren konischen Markierungen darauf erscheint.

Wenn wir Word verwenden, verwenden wir oft Lineale, um den Inhalt schöner zu bearbeiten. Sie sollten wissen, dass zu den Linealen in Word horizontale und vertikale Lineale gehören, mit denen Sie die Seitenränder, Absatzeinzüge, Tabulatoren usw. des Dokuments anzeigen und anpassen können. Wie zeigt man also das Lineal in Word an? Als Nächstes zeige ich Ihnen, wie Sie die Linealanzeige einstellen. Studierende in Not sollten es schnell abholen! Die Schritte sind wie folgt: 1. Zuerst müssen wir das Word-Lineal aufrufen. Das Standard-Word-Dokument zeigt das Word-Lineal nicht an. Wir müssen nur auf die Schaltfläche [Ansicht] in Word klicken. 2. Dann finden wir die Option [Lineal] und überprüfen sie. Auf diese Weise können wir das Wortlineal anpassen! ja oder nein

Word-Dokumente sind aufgrund ihrer leistungsstarken Funktionen weit verbreitet und können nicht nur verschiedene Formate wie Bilder und Tabellen usw. in Word einfügen, sondern für die Integrität und Authentizität der Dateien erfordern viele Dateien am Ende eine manuelle Signatur des Dokuments. Es klingt wie folgt: Wie löst man komplexe Probleme? Heute werde ich Ihnen beibringen, wie man einem Word-Dokument eine handschriftliche Unterschrift hinzufügt. Scannen oder fotografieren Sie die handschriftliche Unterschrift mit einem Scanner, einer Kamera oder einem Mobiltelefon und nehmen Sie dann mit PS oder einer anderen Bildbearbeitungssoftware den erforderlichen Zuschnitt am Bild vor. 2. Wählen Sie „Einfügen – Bild – Aus Datei“ im Word-Dokument an der Stelle, an der Sie die handschriftliche Unterschrift einfügen möchten, und wählen Sie die zugeschnittene handschriftliche Unterschrift aus. 3. Doppelklicken Sie auf das Bild der handschriftlichen Unterschrift (oder klicken Sie mit der rechten Maustaste auf das Bild und wählen Sie „Bildformat festlegen“). Daraufhin wird „Bildformat festlegen“ angezeigt.

Unter den Bürosoftwares ist Word eine unserer am häufigsten verwendeten Software. Die von uns erstellten Textdokumente müssen bei Bedarf in Papierform eingereicht werden. Vor dem Drucken muss das Layout festgelegt werden . bessere Ergebnisse erzielen. Die Frage ist also: Wie legt man Seitenränder in Word fest? Wir haben spezifische Kurserklärungen, die Ihnen helfen, Ihre Zweifel auszuräumen. 1. Öffnen oder erstellen Sie ein neues Word-Dokument und klicken Sie in der Menüleiste auf das Menü „Seitenlayout“. 2. Klicken Sie auf die Schaltfläche „Ränder“ der Option „Seite einrichten“. 3. Wählen Sie in der Liste einen häufig verwendeten Seitenrand aus. 4. Wenn in der Liste keine passenden Ränder vorhanden sind, klicken Sie auf „Benutzerdefinierte Ränder“. 5. Das Dialogfeld „Seite einrichten“ wird angezeigt. Geben Sie jeweils die Option „Ränder“ ein.

Word ist eine Software, die wir häufig in unserem Büro verwenden. Sie verfügt über viele Funktionen, die uns die Arbeit erleichtern können. Bei einem großen Artikel können wir beispielsweise die darin enthaltene Suchfunktion verwenden, um herauszufinden, dass ein bestimmtes Wort im Volltext falsch ist , damit wir es direkt ersetzen können. Wenn Sie das Dokument an Ihre Vorgesetzten senden, können Sie das Dokument verschönern, damit es besser aussieht usw. Nachfolgend wird Ihnen der Herausgeber die Schritte zum Zeichnen mitteilen Gepunktete Linie in Word. Lasst uns gemeinsam lernen! 1. Zuerst öffnen wir das Word-Dokument auf dem Computer, wie in der Abbildung unten gezeigt: 2. Geben Sie dann eine Textzeichenfolge in das Dokument ein, wie im roten Kreis in der Abbildung unten gezeigt: 3. Drücken Sie anschließend und Halten Sie [Strg+A] gedrückt. Wählen Sie den gesamten Text aus, wie im roten Kreis in der Abbildung unten dargestellt: 4. Klicken Sie oben in der Menüleiste auf [Start].

Wir verwenden oft Word für Büroarbeiten, aber wissen Sie, wo sich die Schattierungseinstellungen in Word befinden? Heute werde ich Ihnen die spezifischen Operationsschritte mitteilen, schauen Sie sich das an, Freunde! 1. Öffnen Sie zunächst das Word-Dokument, wählen Sie einen Absatz mit Textabsatzinformationen aus, der mit einer Schattierung hinzugefügt werden soll, klicken Sie dann auf die Schaltfläche [Start] in der Symbolleiste, suchen Sie den Absatzbereich und klicken Sie auf die Dropdown-Schaltfläche rechts (wie im roten Kreis in der Abbildung unten dargestellt) ). 2. Nachdem Sie auf die Dropdown-Box-Schaltfläche geklickt haben, klicken Sie in den Optionen des Popup-Menüs auf die Option [Rand und Schattierung] (wie im roten Kreis in der Abbildung unten dargestellt). 3. Klicken Sie im Popup-Dialogfeld [Rand und Schattierung] auf die Option [Schattierung] (wie im roten Kreis in der Abbildung unten dargestellt). 4. Wählen Sie in der gefüllten Spalte eine Farbe aus

Wenn Sie im Büroalltag einen Text von einer Website kopieren und direkt in Word einfügen, sehen Sie häufig einen [Abwärtspfeil], der durch Auswählen gelöscht werden kann, wenn es jedoch zu viele sind solche Symbole. Gibt es also eine schnelle Möglichkeit, alle Pfeile zu löschen? Deshalb werde ich Ihnen heute die spezifischen Schritte zum Löschen des Abwärtspfeils in Word mitteilen! Zunächst einmal steht der [Abwärtspfeil] in Word tatsächlich für [Manueller Zeilenumbruch]. Wir können alle [Abwärtspfeile] durch [Absatzmarkierung]-Symbole ersetzen, wie in der Abbildung unten gezeigt. 2. Dann wählen wir die Option [Suchen und Ersetzen] in der Menüleiste (wie im roten Kreis in der Abbildung unten dargestellt). 3. Klicken Sie dann auf den Befehl [Ersetzen]. Es erscheint ein Popup-Fenster. Klicken Sie auf [Sondersymbole].

Die Technologie zur Gesichtserkennung und -erkennung ist bereits eine relativ ausgereifte und weit verbreitete Technologie. Derzeit ist JS die am weitesten verbreitete Internetanwendungssprache. Die Implementierung der Gesichtserkennung und -erkennung im Web-Frontend hat im Vergleich zur Back-End-Gesichtserkennung Vor- und Nachteile. Zu den Vorteilen gehören die Reduzierung der Netzwerkinteraktion und die Echtzeiterkennung, was die Wartezeit des Benutzers erheblich verkürzt und das Benutzererlebnis verbessert. Die Nachteile sind: Es ist durch die Größe des Modells begrenzt und auch die Genauigkeit ist begrenzt. Wie implementiert man mit js die Gesichtserkennung im Web? Um die Gesichtserkennung im Web zu implementieren, müssen Sie mit verwandten Programmiersprachen und -technologien wie JavaScript, HTML, CSS, WebRTC usw. vertraut sein. Gleichzeitig müssen Sie auch relevante Technologien für Computer Vision und künstliche Intelligenz beherrschen. Dies ist aufgrund des Designs der Webseite erwähnenswert
