如何将包含大量表格的 HTML 文档转换为 Word 文档?

How to convert an HTML document with lots of tables into a Word document?

我创建了一个包含许多表的 HTML 文档。如何将文档转换为 Word?

问题是,如果我用 Word 打开 HTML 文档,出于某种原因,我会得到非标准的双行表格。

<table border="1" color="#000000" cellpadding="0" cellspacing="0" width=100%>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td width = 15%>0</td>
<td width = 15%>0</td>
<td width = 40%>0</td>
<td> - </td>
</tr>
</table>

您可以使用 altChunk,前提是要在 Word 中打开文档。 Word只需要打开它。

就微软的 OpenXML SDK 类 而言: 你会想要 AlternativeFormatImportPart 类型 AlternativeFormatImportPartType.Html

有关示例,请参阅 this or this

最简单的解决方案:在浏览器中打开 HTML,select table(或整个文档)并复制然后粘贴到 Word 中。如果首先粘贴到 Excel,然后从那里复制并粘贴到 Word,您可能会得到更好的结果(感谢 Josiah 的这个技巧)。这通常效果很好,特别是如果 table 在 IE 中看起来 good/correct。

还有其他解决方案,但它们要复杂得多:您需要一个 HTML 解析器和可以创建 OOXML 文件的东西。如果你想尝试这个,使用 Python 和 Beautiful Soup as HTML parser. Writing OOXML is explained in this question: How can I create a Word document using Python?

请注意,此解决方案的工作量可能需要 1-2 周。

解决了使用 css 样式将大量表格转换为 Word 文档的问题。用 Word 打开 Generate.html 后所有表格正常

文件CSSTable.css

table.CSSTable {
border-width: 1px;
border-spacing: 0px;
border-style: solid;
border-color: black;
border-collapse: collapse;
background-color: white;
}
table.CSSTable th {
    border-width: 1px;
    padding: 0px;
    border-style: solid;
    border-color: black;
    background-color: white;
    -moz-border-radius: ;
}
table.CSSTable td {
    border-width: 1px;
    padding: 0px;
    border-style: solid;
    border-color: black;
    background-color: white;
    -moz-border-radius: ;
}

Generate.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf8">
<link rel="stylesheet" href="CSSTable.css" type="text/css">
</head>
<body>
<table class="CSSTable" width=100%>
<tr>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td width = 15%>0</td>
<td width = 15%>0</td>
<td width = 40%>0</td>
<td> - </td>
</tr>
</table>

来自http://www.wordbanter.com/showthread.php?t=105850

“你必须进入 table, select "Table",然后是 Table 属性,然后是选项。在 "default cell spacing" deselect "allow spacing between cells."