【发布时间】:2023-03-11 17:25:02
【问题描述】:
我需要将带有样式的 HTML 表格转换为 .XLSX 文件。
我设法使用GemBox.Spreadsheet 的免费版本做到了这一点,现在我不介意免费版本的限制,但问题是当我打开 Excel 文件时数字被视为文本。 如果不手动打开 Excel 文件并自己转换它们,是否有任何解决方案?甚至是 GemBox 库的免费替代品?
File.WriteAllText("Table.html", html);
ExcelFile.Load("Table.html", LoadOptions.HtmlDefault).Save("Test.xlsx");
我的 HTML 看起来像这样
<html>
<body>
<center>
<table border="1" cellpadding="0" cellspacing="0">
<tr>
<td>Crimson Witch</td>
<td>HP</td>
<td>ATK</td>
<td>DEF</td>
</tr>
<tr>
<td>Flower</td>
<td>10</td>
<td style="background-color: #808080"></td>
<td style="background-color: #808080"></td>
</tr>
<tr>
<td>Plume</td>
<td style="background-color: #808080"></td>
<td>10</td>
<td style="background-color: #808080"></td>
</tr>
</table>
</center>
</body>
</html>
解决方案:
File.WriteAllText("Table.html", html.Replace("<center>", string.Empty).Replace("</center>", string.Empty));
ExcelFile.Load("Table.html", LoadOptions.HtmlDefault).Save("Test.xlsx");
【问题讨论】:
-
如果您要提及您正在使用的工具,最好将其设为链接,以便人们可以尝试找出您所指的内容。无论如何,我不知道 GemBox.Spreadsheet 做了什么,但我会先查看原始 CSV 文件(你应该在此处发布)。如果该工具没有插入正确的数据,我会使用轻量级 HTML 解析器(例如我自己的 SoftCircuits.HtmlMonkey)并以这种方式提取表格列。
-
@JonathanWood 我没有任何 CSV 文件。你是说 XSLX 文件吗?
-
有几个公共领域的 Excel 电子表格库,例如无处不在的 NPOI,它们允许您进行单元级访问以做任何您想做的事情。
-
@Yox:抱歉,您正在直接创建 XSLX 文件。如果我要这样做,我会用我的 HTML 解析器解析 HTML,然后将其写入 CSV 文件,或者使用 Excel 构建器库(我也有一个开源的其中一个 - 以及一个CSV 编写器)来创建 Excel 文件。这是您可以对流程进行微调控制的唯一方法。
标签: c# html winforms export-to-excel gembox-spreadsheet