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]+"/";
}
先说到这里吧,以后有更好的再更新,希望对大家有用。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Apabila menyunting kandungan dalam dokumen perkataan, baris secara automatik boleh membalut Jika tiada pelarasan dibuat pada masa ini, ia akan memberi kesan yang besar pada penyuntingan kami dan membuat orang sangat sakit kepala. Sebenarnya, ia adalah masalah dengan pembaris Di bawah, saya akan memperkenalkan penyelesaian kepada cara membatalkan pembungkusan perkataan secara automatik. Saya harap ia dapat membantu semua orang. Selepas membuka dokumen Word dan memasukkan teks, apabila anda cuba menyalin dan menampal, teks mungkin melompat ke baris baharu Dalam kes ini, anda perlu melaraskan tetapan untuk menyelesaikan masalah ini. 2. Untuk menyelesaikan masalah ini, kita mesti tahu dahulu punca masalah ini. Pada masa ini kami mengklik Lihat di bawah bar alat. 3. Kemudian klik pilihan "Pembaris" di bawah. 4. Pada masa ini, kita akan mendapati bahawa pembaris muncul di atas dokumen, dengan beberapa penanda kon di atasnya.

Apabila kami menggunakan Word, untuk mengedit kandungan dengan lebih cantik, kami sering menggunakan pembaris. Anda harus tahu bahawa pembaris dalam Word termasuk pembaris mendatar dan pembaris menegak, yang digunakan untuk memaparkan dan melaraskan jidar halaman dokumen, inden perenggan, tab, dsb. Jadi, bagaimana anda memaparkan pembaris dalam Word? Seterusnya, saya akan mengajar anda cara menetapkan paparan pembaris. Pelajar yang memerlukan perlu segera mengumpulnya! Langkah-langkahnya adalah seperti berikut: 1. Mula-mula, kita perlu memaparkan perkataan pembaris Dokumen perkataan lalai tidak memaparkan perkataan pembaris Kita hanya perlu mengklik butang [Lihat] dalam perkataan. 2. Kemudian, kita cari pilihan [Pembaris] dan semaknya. Dengan cara ini, kita boleh menyesuaikan perkataan pembaris! Ya atau tidak

Dokumen Word digunakan secara meluas kerana fungsinya yang berkuasa bukan sahaja pelbagai format boleh dimasukkan ke dalam Word, seperti gambar dan jadual, dsb., tetapi kini untuk integriti dan ketulenan fail, banyak fail memerlukan tandatangan manual pada penghujungnya. daripada dokumen. Bunyinya seperti ini Bagaimana untuk menyelesaikan masalah yang rumit Hari ini saya akan mengajar anda cara menambah tandatangan tulisan tangan pada dokumen perkataan. Gunakan pengimbas, kamera atau telefon bimbit untuk mengimbas atau mengambil gambar tandatangan tulisan tangan, dan kemudian gunakan PS atau perisian penyuntingan imej lain untuk melakukan pemangkasan yang diperlukan pada imej. 2. Pilih "Sisipkan - Gambar - Dari Fail" dalam dokumen Word yang anda mahu masukkan tandatangan tulisan tangan dan pilih tandatangan tulisan tangan yang dipangkas. 3. Klik dua kali pada gambar tandatangan tulisan tangan (atau klik kanan pada gambar dan pilih "Tetapkan Format Gambar"), dan "Tetapkan Format Gambar" muncul.

Antara perisian pejabat, Word ialah salah satu perisian yang paling biasa digunakan. Dokumen teks yang kami hasilkan biasanya dikendalikan dengan Word Beberapa dokumen perlu diserahkan dalam versi kertas sebelum dicetak, susun atur mesti ditetapkan . Jadi persoalannya, bagaimana anda menetapkan margin halaman dalam Word? Kami mempunyai penjelasan kursus khusus untuk membantu anda menyelesaikan keraguan anda. 1. Buka atau cipta dokumen perkataan baharu dan klik menu "Layout Halaman" pada bar menu. 2. Klik butang "Margins" pada pilihan "Page Setup". 3. Pilih margin halaman yang biasa digunakan dalam senarai. 4. Jika tiada margin yang sesuai dalam senarai, klik "Pinggir Tersuai". 5. Kotak dialog "Persediaan Halaman" muncul, masukkan pilihan "Margins" masing-masing.

Word adalah perisian yang sering kita gunakan di pejabat kita Ia mempunyai banyak fungsi yang boleh memudahkan operasi kita Contohnya, untuk artikel yang besar, kita boleh menggunakan fungsi carian di dalam untuk mengetahui bahawa perkataan dalam teks penuh adalah salah. jadi kami boleh menggantikannya secara terus Buat perubahan satu persatu; apabila menyerahkan dokumen kepada pihak atasan anda, anda boleh mencantikkan dokumen itu untuk menjadikannya lebih baik, dan lain-lain. baris dalam Word. 1. Mula-mula, kita membuka dokumen perkataan pada komputer, seperti yang ditunjukkan dalam rajah di bawah: 2. Kemudian, masukkan rentetan teks dalam dokumen, seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah: 3. Seterusnya, tekan dan tahan [ctrl+A] Pilih semua teks, seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah: 4. Klik [Mula] pada bahagian atas bar menu

Kami sering menggunakan perkataan untuk kerja pejabat, tetapi adakah anda tahu di mana tetapan teduhan dalam perkataan? Hari ini saya akan berkongsi dengan anda langkah-langkah operasi khusus. Datang dan lihat, kawan-kawan! 1. Mula-mula, buka dokumen perkataan, pilih perenggan maklumat perenggan teks yang perlu ditambah dengan lorekan, kemudian klik butang [Mula] pada bar alat, cari kawasan perenggan, dan klik butang lungsur di sebelah kanan (seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah) ). 2. Selepas mengklik butang kotak lungsur, dalam pilihan menu timbul, klik pilihan [Border and Shading] (seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah). 3. Dalam kotak dialog pop timbul [Border and Shading], klik pilihan [Shading] (seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah). 4. Dalam lajur yang diisi, pilih warna

Dalam kerja pejabat harian, jika anda menyalin sekeping teks dari tapak web dan menampalnya terus ke Word, anda akan sering melihat [anak panah ke bawah] ini boleh dipadamkan dengan memilihnya, tetapi jika terdapat terlalu banyak simbol sedemikian, Jadi adakah terdapat cara cepat untuk memadam semua anak panah? Jadi hari ini saya akan berkongsi dengan anda langkah-langkah khusus untuk memadamkan anak panah ke bawah dalam Word! Pertama sekali, [Anak Panah Bawah] dalam Word sebenarnya mewakili [Pemotongan Baris Manual]. Kita boleh menggantikan semua [Anak Panah Bawah] dengan simbol [Markah Perenggan], seperti yang ditunjukkan dalam rajah di bawah. 2. Kemudian, kami memilih pilihan [Cari dan Ganti] pada bar menu (seperti yang ditunjukkan dalam bulatan merah dalam rajah di bawah). 3. Kemudian, klik arahan [Ganti], kotak pop timbul akan muncul, klik [Simbol Khas]

Teknologi pengesanan dan pengecaman muka adalah teknologi yang agak matang dan digunakan secara meluas. Pada masa ini, bahasa aplikasi Internet yang paling banyak digunakan ialah JS Melaksanakan pengesanan muka dan pengecaman pada bahagian hadapan Web mempunyai kelebihan dan kekurangan berbanding dengan pengecaman muka bahagian belakang. Kelebihan termasuk mengurangkan interaksi rangkaian dan pengecaman masa nyata, yang sangat memendekkan masa menunggu pengguna dan meningkatkan pengalaman pengguna termasuk: terhad oleh saiz model, ketepatannya juga terhad. Bagaimana untuk menggunakan js untuk melaksanakan pengesanan muka di web? Untuk melaksanakan pengecaman muka di Web, anda perlu biasa dengan bahasa dan teknologi pengaturcaraan yang berkaitan, seperti JavaScript, HTML, CSS, WebRTC, dll. Pada masa yang sama, anda juga perlu menguasai visi komputer yang berkaitan dan teknologi kecerdasan buatan. Perlu diingat bahawa kerana reka bentuk bahagian Web
