用JavaScript导出当前页面的word文档怎么做

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用JavaScript导出当前页面的word文档怎么做相关的知识,希望对你有一定的参考价值。

具体方法如下:
<html>
<HEAD>
<title>WEB页面导出为EXCEL文档的方法
</title>
</HEAD>
<body>
<BR>
<table id = "PrintA" width="100%" border="1" cellspacing="0"
cellpadding="0" bgcolor = "#61FF13">
<TR style="text-align : center;">
<TD>单元格A</TD>
<TD>单元格A</TD>
<TD>单元格A</TD>
<TD>单元格A</TD>
</TR>
<TR>
<TD colSpan=4 style="text-align : center;">
<font color="BLUE" face="Verdana">单元格合并行A</FONT>
</TD>
</TR>
</TABLE>
<BR>
<table id="PrintB" width="100%" border="1" cellspacing="0"
cellpadding="0">
<TR style="text-align : center;">
<TD>单元格B</TD>
<TD>单元格B</TD>
<TD>单元格B</TD>
<TD>单元格B</TD>
</TR>
<TR>
<TD colSpan=4 style="text-align : center;">单元格合并行B</TD>
</TR>
</TABLE>
<br><br><br>
<input type="button" onclick="javascript:AllAreaWord();"
value="导出页面指定区域内容到Word">
<input type="button" onclick="javascript:AllAreaExcel();"
value="导出页面指定区域内容到Excel">
<input type="button" onclick="javascript:CellAreaExcel();"
value="导出表单单元格内容到Excel">
<SCRIPT LANGUAGE="javascript">
//指定页面区域内容导入Excel
function AllAreaExcel()

var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var sel=document.body.createTextRange();
sel.moveToElementText(PrintA);
sel.select();
sel.execCommand("Copy");
oSheet.Paste();
oXL.Visible = true;

//指定页面区域“单元格”内容导入Excel
function CellAreaExcel()

var oXL = new ActiveXObject("Excel.Application");
var oWB = oXL.Workbooks.Add();
var oSheet = oWB.ActiveSheet;
var Lenr = PrintA.rows.length;
for (i=0;i<Lenr;i++)

var Lenc = PrintA.rows(i).cells.length;
for (j=0;j<Lenc;j++)

oSheet.Cells(i+1,j+1).value = PrintA.rows(i).cells(j).innerText;


oXL.Visible = true;


//指定页面区域内容导入Word
function AllAreaWord()

var oWD = new ActiveXObject("Word.Application");
var oDC = oWD.Documents.Add("",0,1);
var oRange =oDC.Range(0,1);
var sel = document.body.createTextRange();
sel.moveToElementText(PrintA);
sel.select();
sel.execCommand("Copy");
oRange.Paste();
oWD.Application.Visible = true;
//window.close();

</SCRIPT>
</body>
</html>
参考技术A jsp页面导出为word文件需要利用apache的POI来完成。
核心代码如下:

<%@ page contentType="application/msword; charset=gb2312" %>
其实如果用框架做就方便多了,比如Struts2。在Action里直接写如下代码:
if(out!=null)
String fileName="";
fileName+="评价报告.doc";
try
HttpServletResponse response = ServletActionContext.getResponse();
response.setHeader("Content-disposition","attachment; filename="+new String(fileName.getBytes("GB2312"), "8859_1"));
catch (UnsupportedEncodingException e)
e.printStackTrace();

out是jsp页面表单元素,一个button,用于提交表单到相应Action进行Word下载。Action设置jsp页面头文件。这样每次点击button就可以把相应jsp页面的内容保存到Word中并且支持下载,Word中内容并且是可编辑状态。本回答被提问者采纳

如何通过更改页面方向从 JavaScript 生成 Word 文档? (纵向到横向)

【中文标题】如何通过更改页面方向从 JavaScript 生成 Word 文档? (纵向到横向)【英文标题】:How do i generate a Word Document from JavaScript with changing page orientations? (portrait to landscape) 【发布时间】:2018-09-21 04:22:53 【问题描述】:

是否可以从 JavaScript 创建包含 2 个不同方向的页面(在同一个文档中)的 Word 文档? IE。第 1 页 = 纵向,第 2 页 = 横向?这几乎正​​是我所追求的。我已经尝试了很多东西.. 比如 mso-break-type:section-break; mso 特殊字符:换行符;分页前:总是;等等,但没有运气。先感谢您!这是我目前所拥有的:

<script>
function export_to_word() 
   var link, blob, url;
   blob = new Blob(['\ufeff', document.getElementById("docx").innerHTML], 
         type: 'application/msword'
   );
   url = URL.createObjectURL(blob);
   link = document.createElement('A');
   link.href = url;
   link.download = 'Document';  // default name without extension 
   document.body.appendChild(link);
   if (navigator.msSaveOrOpenBlob )
        navigator.msSaveOrOpenBlob( blob, 'Document.doc'); // IE10-11
   else link.click();  // other browsers
   document.body.removeChild(link);
 ;
</script>

<html xmlns:office="urn:schemas-microsoft-com:office:office"
      xmlns:word="urn:schemas-microsoft-com:office:word"
      xmlns="http://www.w3.org/TR/REC-html40">

<br>
<button onclick="export_to_word()">Export</button>

<div id="docx">

    <style>
        @page portrait_A4_page 
            size:595.45pt 841.7pt;
            margin:1.0in 1.25in 1.0in 1.25in;
            mso-header-margin:.5in;
            mso-footer-margin:.5in;
            mso-paper-source:0;
        

        div.portrait_A4_page  page:portrait_A4_page; 

        @page landscape_A4_page 
            size:841.7pt 595.45pt;
            mso-page-orientation: landscape;
            margin:1.25in 1.0in 1.25in 1.0in;
            mso-header-margin:.5in;
            mso-footer-margin:.5in;
            mso-paper-source:0;
       

        div.landscape_A4_page  page:landscape_A4_page; 

    </style>


    <div class=portrait_A4_page>
        <p>standard A4 portrait page information</p>
    </div>    

    <div class=landscape_A4_page>
        <table border=1>
          <tr>
            <td>a table that goes really wide</td>  
          </tr>
        </table>
    </div>

</div>

【问题讨论】:

有可能,但我不确定使用您展示的方法...这似乎是 Word 的往返 HTML 文件格式?这是未记录的,因此您最好的选择是在 Word 中创建一个具有所需功能的简单文档,将其保存为完整的 HTML 格式,然后查看 HTML 以了解它如何处理 更改页面方向所需的分节符 谢谢您-您的解决方案有效! :) 您应该回滚对问题的编辑并将信息作为答案发布。 Stack Overflow 是一个问答网站,而不是论坛。问题应包含问题,并且答案应放在答案中 - 您可以回答自己的问题并将其标记为此类(单击答案左侧的复选标记)。就目前而言,经过一定时间后,问题将从网站上消失。如果有答案,它将保留给可能搜索相同信息的其他人。 【参考方案1】:

找到解决方案!下面的代码在同一个 JavaScript 生成的 Word 文档中从纵向(第 1 页)变为横向(第 2 页)。它可能可以进一步简化,但这有效:

<script>
function export_to_word() 
   var link, blob, url;
   blob = new Blob(['\ufeff', document.getElementById("docx").innerHTML], 
         type: 'application/msword'
   );
   url = URL.createObjectURL(blob);
   link = document.createElement('A');
   link.href = url;
   link.download = 'Document';  // default name without extension 
   document.body.appendChild(link);
   if (navigator.msSaveOrOpenBlob )
        navigator.msSaveOrOpenBlob( blob, 'Document.doc'); // IE10-11
   else link.click();  // other browsers
   document.body.removeChild(link);
 ;
</script>

<html xmlns:office="urn:schemas-microsoft-com:office:office"
      xmlns:word="urn:schemas-microsoft-com:office:word"
      xmlns="http://www.w3.org/TR/REC-html40">

<br>
<button onclick="export_to_word()">Export</button>

<div id="docx">

<style>
    table, tr, td, th
        border: 1px solid black;
        border-collapse: collapse;
        padding: 5px;
        text-align: left;
    

    .normal 
        font-family:"Calibri",sans-serif; 
        line-height:107%;
        font-size:11.0pt;
        mso-ascii-font-family:Calibri;
        mso-ascii-theme-font:minor-latin;
    

    @page portrait_A4_page  
        size:595.3pt 841.9pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;
        mso-header-margin:35.4pt;
        mso-footer-margin:35.4pt;
        mso-paper-source:0;
    

    div.portrait_A4_page  page:portrait_A4_page; 

    @page landscape_A4_page 
        size:841.9pt 595.3pt;
        mso-page-orientation:landscape;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;
        mso-header-margin:35.45pt;
        mso-footer-margin:35.45pt;
        mso-paper-source:0;
    

    div.landscape_A4_page  page:landscape_A4_page; 

</style>

<div class=portrait_A4_page>
  <span class=normal>
    <p>standard A4 portrait page information</p>
  </span>
    <br clear=all style='mso-special-character:line-break; page-break-before:always'>        
</div>    

<br clear=all style='page-break-before:always; mso-break-type:section-break'>

<div class=landscape_A4_page>
    <table class=normal>
        <tr>
            <td>a table that goes really wide</td>  
        </tr>
    </table>
</div>

</div>

【讨论】:

以上是关于用JavaScript导出当前页面的word文档怎么做的主要内容,如果未能解决你的问题,请参考以下文章

怎用用java导入、导入word形式的考试题目?

用C#实现WORD文档导出

C#怎监控例似WORD这样用临时文档记录修改过的文件,并复制修改后的文件?

Java 用Freemarker完美导出word文档(带图片)

js导出word

java中如何导出word