加载中

参考https://blog.csdn.net/xdocs/article/details/50190555,处理代码如下

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>XDOC Server</title>
    </head>
    <body>
        <script type="text/javascript" src="http://www.xdocin.com/xdoc.js"></script>
        <script type="text/javascript">

            var html = '<html><table style="width: 100%;"><thead><tr style="background-color: #c3d9ff;"><th>序号</th><th>编码</th>'
                + '<th>名称</th><th>值</th></tr></thead>'
                + '<tbody><tr><td rowspan="2">1</td><td rowspan="2">code1</td><td>name1</td><td>0.1</td></tr>'
                + '<tr><td>name2</td><td>0.2</td></tr>'
                + '<tr><td>3</td><td colspan="2">code3(name3)</td><td>0.1</td></tr></tbody></table></html>';
            XDoc.run(html,"docx");

        </script>
    </body>
</html>

表格添加背景色样式无用,加了宽度为100%无用,右侧有空白。

后续试过两个table,再放上来。

@bohe2005
前段时间学习 nodejs,需要生成word,找了freemarker,生成了 ftl 文件,但无法写入word。...
@XDOC_OSC:请问能给类似demo吗?谢谢
@bohe2005
前段时间学习 nodejs,需要生成word,找了freemarker,生成了 ftl 文件,但无法写入word。...

@XDOC_OSC : 使用 报表调用指南 中的传值,将html表格放入传值示例链接中,生成如下图

docx效果

请问,如何在nodejs中,根据动态数据拼成的html代码,如何生成word?群里面的人说,要生成word模板,问题是,数据是动态的,html也是动态的,我如何在代码里面实现word生成和下载?

 

附:

报表调用指南:

http://api.xdocin.com/xdoc?_func=to&_format=html&_cache=1&_source=true&_xdoc=http://www.xdocin.com/doc/InvokeReport.docx

报表调用指南 —— 传值示例地址:

http://www.xdocin.com/xdoc?_func=pdoc&_format=html&_key=ifso37dalvcbbmo7wm337t6vra&_xdoc=./hello.docx

@bohe2005
前段时间学习 nodejs,需要生成word,找了freemarker,生成了 ftl 文件,但无法写入word。...
回复 @XDOC_OSC : js动态创建html表格嘛?
@bohe2005
前段时间学习 nodejs,需要生成word,找了freemarker,生成了 ftl 文件,但无法写入word。...
回复 @XDOC_OSC : 请问有相应的技术支持嘛?
@bohe2005
前段时间学习 nodejs,需要生成word,找了freemarker,生成了 ftl 文件,但无法写入word。...
回复 @XDOC_OSC : 示例看过了 需要实现的导出word,里面的表格有好几种,截图只是示例,不是固定的。 比如同一个表格,不同数据,有些数据第二列几行合并,有些数据第三列几行合并,有些数据第几行合并。
@bohe2005
前段时间学习 nodejs,需要生成word,找了freemarker,生成了 ftl 文件,但无法写入word。...

@XDOC_OSC

请问,支持下列动态word嘛?根据数据动态合并行或者列。

一个word里面包含不同table,且有些页的页面设置是横向,有些则是纵向

@bohe2005
前段时间学习 nodejs,需要生成word,找了freemarker,生成了 ftl 文件,但无法写入word。...

嗯,等会试试。

项目要求是不要写sql,有办法处理吗?

另外一个问题:https://www.oschina.net/question/2362544_2276453 烦请也看看呢。

@bohe2005
环境:win10,NodeJS + express4.x + sqlite3 + sequelize 情况描述:A...

引用来自“TigaPile”的评论

https://github.com/open-xml-templating/docxtemplater 这个看看

请问,您用这个处理过图片吗?我用 https://docxtemplater.com/modules/html/#changelog 处理图片,提示 module 不存在。如果屏蔽这段代码,word显示undefined。而相同的模板、数据放到 https://docxtemplater.com/demo/#image 可以生成word

router.get('/test3',function(req,res,next){
    //Load the docx file as a binary
    var content = fs.readFileSync(path.resolve(__dirname, 'template/inputXML3.docx'), 'binary');
    var zip = new JSZip(content);
    var doc = new Docxtemplater();
    doc.loadZip(zip);

    //set the templateVariables
    doc.setData({
        first_name: 'John',
        last_name: 'Doe',
        phone: '0652455478',
        description: 'New Website',
        //imgXml: '<p>Hello</p><img src="data:image/gif;base64,R0lGODlhDAAMAIQZAAAAAAEBAQICAgMDAwQEBCIiIiMjIyQkJCUlJSYmJigoKC0tLaSkpKampqenp6ioqKurq66urrCwsPb29vr6+vv7+/z8/P39/f7+/v///////////////////////////yH+EUNyZWF0ZWQgd2l0aCBHSU1QACwAAAAADAAMAAAFSiCWjRmViVVmZRWWjiurXrBI2uMkFcdjrRfaJQIQCAKQTDBmKAYACAwuswAABoBEDMUgYAkOpWiFeRgUDZIKNnqpLaJLXM2KjaYhADs=" alt="">',
        imgXml: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QIJBywfp3IOswAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAkUlEQVQY052PMQqDQBREZ1f/d1kUm3SxkeAF/FdIjpOcw2vpKcRWCwsRPMFPsaIQSIoMr5pXDGNUFd9j8TOn7kRW71fvO5HTq6qqtnWtzh20IqE3YXtL0zyKwAROQLQ5l/c9gHjfKK6wMZjADE6s49Dver4/smEAc2CuqgwAYI5jU9NcxhHEy60sni986H9+vwG1yDHfK1jitgAAAABJRU5ErkJggg==',
        rawXml: '<w:p><w:pPr><w:rPr><w:color w:val="FF0000"/></w:rPr></w:pPr><w:r><w:rPr><w:color w:val="FF0000"/></w:rPr><w:t>My custom</w:t></w:r><w:r><w:rPr><w:color w:val="00FF00"/></w:rPr><w:t>XML</w:t></w:r></w:p>'
    });

    //start: 屏蔽代码,生成word图片标签显示为undefined
    const HTMLModule = require("docxtemplater-html-module");
    const ImageModule = require("docxtemplater-image-module");
    const htmlModule = new HTMLModule({
        img: {
            Module: ImageModule,
            // By default getSize returns the width and height attributes if both are present, or 200x200px as a default value.
            getSize: function(data) {
                // The html element, for example, if the data is :
                // '<img height="20" src="...">'
                // you will have data.element.attribs.width = '20'
                console.log(data.element);
                // The arraybuffer of your image
                // (you could use https://github.com/image-size/image-size to calculate the size)
                console.log(data.src);
                // You return an array in pixel (here we have width 50px and height 100px)
                return [50, 100];
            }
        }
    });
    doc.attachModule(htmlModule);
    //end: 屏蔽代码,生成word图片标签显示为undefined

    try {
    // render the document (replace all occurences of {first_name} by John, {last_name} by Doe, ...)
        doc.render();
    }
    catch (error) {
        var e = {
            message: error.message,
            name: error.name,
            stack: error.stack,
            properties: error.properties,
        }
        console.log(JSON.stringify({error: e}));
        // The error thrown here contains additional information when logged with JSON.stringify (it contains a property object).
        throw error;
    }

    var buf = doc.getZip().generate({type: 'nodebuffer'});
    // buf is a nodejs buffer, you can either write it to a file or do anything else with it.
    fs.writeFileSync(path.resolve(__dirname, '../../outfiles/outputXMLtest3.docx'), buf);
    res.render('docxtemplater/docx1', { msg: '创建doc结束(xml的test示例3)(测试xm基础上增加img替换)'});
});

模板截图

使用上述 module 后,错误截图

vscode 里面install时,提示找不到 “docxtemplater-html-module”

@bohe2005
环境:win10,Sublime Text,nodejs + express4.x(命令行运行)需求:待生成wor...
bohe2005 2018/03/07 09:00 回答了问题: node.js中生成word文档

问题解决了吗?我也碰到类似问题,想请教下。

@都忠刚
在node.js中的使用说明库或者工具可以生成word文档

https://github.com/ijse/freemarker.js

没有看到app.js,请问如何运行

@清凌渡
最近有个想法,不想写静态页面,而是直接写freemarker语法的模板文件,在nodejs环境下开发页面,然后交给...
bohe2005 2016/01/07 19:12 评论了博客:【实例教程】Echarts 的 Java 封装类库
楼主,我碰到的是和“六月心悸”一样的问题,echarts没有定义,要怎样定义,还是引入什么js就可以了。如果能有一个完整的示例代码版本就好了,osc上只有一些java代码,下载后都不能直接运行。
@Liuzh_533
Echarts 的 Java 封装类库:[http://www.oschina.net/p/echarts-jav...
谢谢。
@bohe2005
2天前发布的帖子今天进去看的时候,发现有重复的,想进行编辑或删除,发现没有相应的按钮,请问如何处理。(1)待删除,...

刚查找ECharts官网实例的时候,看到一个例子http://echarts.baidu.com/doc/example/line.html,里面的y轴的type为value,“直接访问”的数据,部分为‘-’,其他都是数字。按这样修改,可以实现功能。

总结:刚开始以为type为category,数值就必须要加上引号。如果type为value,数值部分不能包含'-',实际是没有必然关系的。

@bohe2005
@Kener-林峰 你好,想跟你请教个问题:这两天刚开始使用ECharts(版本2.2.7)想实现类似下图效果的时...

没有更多内容

加载失败,请刷新页面

返回顶部
顶部