【发布时间】:2018-09-19 01:25:17
【问题描述】:
我是这个领域的新手。
我在 Excel 文件 (xlsx) 中有一个表格。使用 C#,我将其保存为 html:
`worksheet.SaveToHtml("the html file path destination");`
然后我阅读了html文件:
`String htmlCode = File.ReadAllText("the html file path", Encoding.Default);`
然后我就这样把它放到邮件正文中:
mail.Body = "<BR/><font size=2 ...." + htmlCode + ".... </body>";
表格应该是这样的:
但是当邮件在 Outlook 中打开时,它看起来像这样:
列的宽度明显变小。
如何解决这个问题?我不想直接在 C# 中编写 html。
更新
这就是使用 WorkSheet.SaveToHtml 的 html 的样子。我需要找到要更改/添加的内容以使此表在 Outlook 中看起来正确。
<html>
<head>
<style type="text/css">table{border-collapse:collapse;table-layout:fixed;border-spacing:0;empty-cells:show}
.X0{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(218,238,243);border-top-color:000000;border-top-style:solid;border-top-width:2;border-bottom-color:000000;border-bottom-style:solid;border-bottom-width:2;border-left-color:000000;border-left-style:solid;border-left-width:2;border-right-color:000000;border-right-style:solid;border-right-width:2;font-weight:bold;vertical-align:center;text-align:center;word-wrap:break-word;height:21;}
.X1{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(218,238,243);border-right-style:solid;border-right-width:2;border-right-color:000000;border-top-color:000000;border-top-style:solid;border-top-width:2;border-bottom-color:000000;border-bottom-style:solid;border-bottom-width:2;border-left-color:000000;border-left-style:solid;border-left-width:2;font-weight:bold;vertical-align:center;text-align:center;word-wrap:break-word;height:21;}
.X2{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(218,238,243);border-top-color:000000;border-top-style:solid;border-top-width:2;border-bottom-color:000000;border-bottom-style:solid;border-bottom-width:2;border-right-color:000000;border-right-style:solid;border-right-width:2;font-weight:bold;vertical-align:center;text-align:center;word-wrap:break-word;height:21;}
.X3{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(218,238,243);border-bottom-style:solid;border-bottom-width:2;border-bottom-color:000000;border-top-color:000000;border-top-style:solid;border-top-width:2;border-left-color:000000;border-left-style:solid;border-left-width:2;border-right-color:000000;border-right-style:solid;border-right-width:2;font-weight:bold;vertical-align:center;text-align:center;word-wrap:break-word;height:21;}
.X4{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(218,238,243);border-bottom-color:000000;border-bottom-style:solid;border-bottom-width:2;border-left-color:000000;border-left-style:solid;border-left-width:2;border-right-color:000000;border-right-style:solid;border-right-width:2;font-weight:bold;vertical-align:center;text-align:center;word-wrap:break-word;height:21;}
.X5{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(218,238,243);border-bottom-color:000000;border-bottom-style:solid;border-bottom-width:2;border-right-color:000000;border-right-style:solid;border-right-width:2;font-weight:bold;vertical-align:center;text-align:center;word-wrap:break-word;height:21;}
.X6{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(255,255,255);border-bottom-color:000000;border-bottom-style:solid;border-bottom-width:2;border-left-color:000000;border-left-style:solid;border-left-width:2;border-right-color:000000;border-right-style:solid;border-right-width:2;vertical-align:center;text-align:general;word-wrap:break-word;height:21;}
.X7{color:rgb(0,32,96);font-family:Calibri;font-size:11pt;background-color:rgb(255,255,255);border-bottom-color:000000;border-bottom-style:solid;border-bottom-width:2;border-right-color:000000;border-right-style:solid;border-right-width:2;vertical-align:center;text-align:right;word-wrap:break-word;height:21;}</style>
</head>
<body>
<table cellspacing="0">
<Col width="167" />
<Col width="109" />
<Col width="104" />
<Col width="91" />
<Col width="85" />
<Col width="65" />
<tr>
<td class="X0">
<div style="width:163px !Important;width:167px;" />
</td>
<td COLSPAN="2" class="X1">11 11 11</td>
<td ROWSPAN="2" class="X3">11 11</td>
<td COLSPAN="2" class="X1">11 11</td>
</tr>
<tr>
<td class="X4">
<div style="width:163px !Important;width:167px;" />
</td>
<td class="X5">11</td>
<td class="X5">11</td>
<td class="X5">11</td>
<td class="X5">11</td>
</tr>
<tr>
<td class="X6">a aa</td>
<td class="X7">b</td>
<td class="X7">b</td>
<td class="X7">b</td>
<td class="X7">b</td>
<td class="X7">b</td>
</tr>
<tr>
<td class="X6">c cc ccc</td>
<td class="X7">d</td>
<td class="X7">d</td>
<td class="X7">d</td>
<td class="X7">d</td>
<td class="X7">d</td>
</tr>
<tr>
<td class="X6">e ee eee</td>
<td class="X7">f</td>
<td class="X7">f</td>
<td class="X7">f</td>
<td class="X7">1f</td>
<td class="X7">f</td>
</tr>
</table>
</body>
</html>
【问题讨论】:
-
这可能只是它们呈现 html 的本质。如果您对此有任何直接控制权,我会感到惊讶。
-
@mjwills gilliduck 感谢 cmets。这些链接不能解决我的问题。我刚刚尝试使用 Interop Excel 使用 xls.SaveAs("html file path", Microsoft.Office.Interop.Excel.XlFileFormat.xlHtml); 将 Excel 文件保存为 html;但是当我将 html 文件放到电子邮件正文中时,它什么也没显示。
-
But when I put the html file to email body it doesn't show anythingThe columns are significantly smaller in width.我正在努力协调这两个陈述。您是否遇到第一个问题?还是第二个? -
@mjwills 我在您的评论中的第一句话是当我使用另一种类型的 html-save (XlFileFormat.xlHtml) 时。我尝试使用它,现在我又开始使用 SaveToHtml。所以现在的问题在于较小的宽度。很抱歉造成混乱。
-
无论如何,简短的回答是这样的 - 您不能将其保存为 HTML 并将其作为 HTML 电子邮件发送并期望它在 Outlook 中很好地呈现。这是因为 Outlook 在 html 电子邮件呈现方面通常表现不佳。 litmus.com/blog/… 。 除非您自己专门生成 HTML,并且是生成 Outlook 将正确呈现的 HTML 的专家,否则这里没有简单的解决方案。
标签: c# html html-email spire