将HTML响应转换为WORD

时间:2015-11-12 09:08:39

标签: html vba ms-word word-vba

在MS Word中,我有一个宏,它将请求发送到Web服务器,然后返回数据html 我的宏

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
    <title>Результат поиска</title>
    <link href="css/print.css" rel="stylesheet" type="text/css">
</head>
<body>
    <div style="text-align: center;">
        <span style="font-weight: bold; font-size: 110%;">Search result</span>
    </div>
    <table id=result>
        <tr>
            <th>Some text</th>
            <th>Some text</th>
            <th>Some text</th>
            <th>Some text</th>
            <th>Some text</th>
            <th>Some text</th>
        </tr>
        <tr>
            <td>Some text</td>
            <td class='leftAlign'>Some text<br>Some textSome textSome text</td>
            <td>Some text</td>
            <td class='leftAlign'>Some text<br>Some textSome textSome textSome textSome text</td>
            <td>Some text</td>
            <td></td>
        </tr>
    </table>
</body>

现在在Word文档中,我的宏插入响应为简单文本

public InputStream getBlob(Long id) throws SQLException {
    PreparedStatement stmt = null;
    ResultSet rs = null;
    try {
        stmt = connection.prepareStatement("select blob_contents from some_table where id = ?");
        stmt.setLong(1, id);

        rs = stmt.executeQuery();
        if (rs.next()) {
            return rs.getBinaryStream("blob_contents");
        } else {
            return null;
        }
    } finally {
        if (stmt != null) {
            stmt.close();
        }
        if (rs != null) {
            rs.close();
        }
    }
}

请帮助我,如何在正常的WORD表中转换我的响应(table id =&#34; result&#34;)?像这样 普通的Word表 enter image description here

2 个答案:

答案 0 :(得分:0)

实际上,Mike指出的帖子是一个很好的起点:将HTML表格字符串转换为Word可以处理的内容。 Word有一个Range.ConvertToTable函数,它将分隔文本格式的数据转换为表格。记录(行)分隔符必须是ANSI 13(vbCr);字段(列)分隔符可以是您喜欢的任何内容。

所以:1)删除&lt; tr&gt;从表定义; 2)替换&lt; / tr&gt;使用ANSI 13(vbCr)并删除最后一个标签; 3)删除&lt; td&gt;从表定义; 4)替换&lt; / td&gt;使用您选择的字段分隔符(不在字段内容中的内容)并删除最后一个标记。

结果将是一个字符串,您将其写入您希望文档中的表格的Range,然后将其转换为表格:

rng.Text = stringTableDef
Dim tbl as Word.Table
Set tbl = rng.ConvertToTable('Params here)

您肯定要设置第一个参数 - 字段分隔符。检查其他参数是否需要它们,它们都是可选的。供您参考,请参阅方法文档:https://msdn.microsoft.com/en-us/library/office/ff835980.aspx

答案 1 :(得分:-1)

This should work for Microsoft Word and it also contains examples written in VBA.

I guess you've then got to find a way of parsing the HTML into the table cells.