vue实现导出word
Vue 实现导出 Word 文档
在 Vue 项目中实现导出 Word 文档的功能,可以通过以下几种方法实现:
使用 docx 库生成 Word 文档
docx 是一个用于生成 Word 文档的 JavaScript 库,支持在浏览器和 Node.js 环境中使用。
安装依赖:
npm install docx file-saver
示例代码:
import { Document, Paragraph, TextRun, Packer } from "docx";
import { saveAs } from "file-saver";
export default {
methods: {
exportToWord() {
const doc = new Document({
sections: [{
children: [
new Paragraph({
children: [
new TextRun("Hello World"),
new TextRun({
text: "Foo Bar",
bold: true,
}),
],
}),
],
}],
});
Packer.toBlob(doc).then((blob) => {
saveAs(blob, "example.docx");
});
},
},
};
使用 html-docx-js 将 HTML 转换为 Word
这种方法适合将现有的 HTML 内容转换为 Word 文档。

安装依赖:
npm install html-docx-js file-saver
示例代码:
import htmlDocx from "html-docx-js";
import { saveAs } from "file-saver";
export default {
methods: {
exportToWord() {
const html = "<h1>Hello World</h1><p>This is a paragraph</p>";
const converted = htmlDocx.asBlob(html);
saveAs(converted, "document.docx");
},
},
};
使用模板文件替换内容
如果有现成的 Word 模板文件,可以通过替换模板中的占位符来生成新的 Word 文档。

安装依赖:
npm install docxtemplater file-saver
示例代码:
import Docxtemplater from "docxtemplater";
import PizZip from "pizzip";
import { saveAs } from "file-saver";
export default {
methods: {
exportToWord() {
fetch("/template.docx")
.then((response) => response.arrayBuffer())
.then((content) => {
const zip = new PizZip(content);
const doc = new Docxtemplater(zip, {
paragraphLoop: true,
linebreaks: true,
});
doc.setData({
name: "John",
age: 30,
});
try {
doc.render();
} catch (error) {
console.error(error);
}
const out = doc.getZip().generate({
type: "blob",
mimeType: "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
});
saveAs(out, "output.docx");
});
},
},
};
使用 Office JavaScript API(仅限 Office 插件)
如果开发的是 Office 插件,可以使用 Office JavaScript API 来操作 Word 文档。
示例代码:
export default {
methods: {
exportToWord() {
Word.run(function (context) {
const body = context.document.body;
body.insertParagraph("Hello World", Word.InsertLocation.end);
return context.sync();
});
},
},
};
注意事项
- 使用 docx 或 html-docx-js 时,生成的文档格式可能有限制,复杂格式可能需要手动调整。
- 模板文件方法适合需要保持固定格式的场景,但需要提前准备模板文件。
- Office JavaScript API 仅适用于 Office 插件开发,不能在普通网页中使用。
- 所有方法都需要考虑浏览器兼容性,特别是较旧的浏览器可能不支持某些功能。






