所以我有这个HTML页面,通过MVC动作导出到Excel文件。该操作实际上将呈现此部分视图,然后将具有正确格式的呈现视图导出到Excel文件。但是,在导出之前,视图的呈现方式完全呈现,并且该视图包含“导出到Excel”按钮,因此当我导出它时,按钮图像在左上角显示为红色X. Excel文件。
我可以拦截包含此HTML的字符串以在ExcelExport操作中呈现,并且它看起来像这样一个例子:
<div id="summaryInformation" >
<img id="ExportToExcel" style=" cursor: pointer;" src="/Extranet/img/btn_user_export_excel_off.gif" />
<table class="resultsGrid" cellpadding="2" cellspacing="0">
<tr>
<td id="NicknameLabel" class="resultsCell">Nick Name</td>
<td id="NicknameValue" colspan="3">
Swap
</td>
</tr>
<tr>
<td id="EffectiveDateLabel" class="resultsCell">
<label for="EffectiveDate">Effective Date</label>
</td>
<td id="EffectiveDateValue" class="alignRight">
02-Mar-2011
</td>
<td id ="NotionalLabel" class="resultsCell">
<label for="Notional">Notional</label>
</td>
<td id="NotionalValue" class="alignRight">
<span>
USD
</span>
10,000,000.00
</td>
</tr>
<tr>
<td id="MaturityDateLabel" class="resultsCell">
<label for="MaturityDate">Maturity Date</label>
</td>
<td id="MaturityDateValue" class="alignRight">
02-Mar-2016
-
Modified Following
</td>
<td id="TimeStampLabel" class="resultsCell">
Rate Time Stamp
</td>
<td id="Timestamp" class="alignRight">
28-Feb-2011 16:00
</td>
</tr>
<tr >
<td id="HolidatCityLabel" class="resultsCell"> Holiday City</td>
<td id="ddlHolidayCity" colspan="3">
New York,
London
</td>
</tr>
</table>
</div>
<script>
$("#ExportToExcel").click(function () {
// ajax call to do the export
var actionUrl = "/Extranet/mvc/Indications.cfc/ExportToExcel";
var viewName = "/Extranet/Views/Indications/ResultsViews/SummaryInformation.aspx";
var fileName = 'SummaryInfo.xls';
GridExport(actionUrl, viewName, fileName);
});
</script>
顶部的<img id="ExportToExcel"
标记是我要为导出删除的标记。您看到的所有内容都包含在C#字符串中。我如何从字符串中删除该行,以便它不会尝试在Excel中渲染图像?
<script>
,但是因为这不会出现在Excel中我认为这不是一个巨大的交易现在
答案 0 :(得分:7)
删除所有img标记:
string html2 = Regex.Replace( html, @"(<img\/?[^>]+>)", @"",
RegexOptions.IgnoreCase );
包括参考:
using System.Text.RegularExpressions;
答案 1 :(得分:0)
如果它在C#字符串中,则只需:
myHTMLString.Replace(@"<img id="ExportToExcel" style=" cursor: pointer;" src="/Extranet/img/btn_user_export_excel_off.gif" />","");
答案 2 :(得分:0)
最安全的方法是使用HTML Agility Pack读取HTML,然后编写从HTML中删除图像节点的代码。
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);
HtmlNode image =doc.GetElementById("ExportToExcel"]);
image.Remove();
htmlString = doc.WriteTo();
您可以使用类似的代码删除script
代码和其他img
代码。
答案 3 :(得分:0)
我刚刚使用这个
private string RemoveImages(string html)
{
StringBuilder retval = new StringBuilder();
using (StringReader reader = new StringReader(html))
{
string line = string.Empty;
do
{
line = reader.ReadLine();
if (line != null)
{
if (!line.StartsWith("<img"))
{
retval.Append(line);
}
}
} while (line != null);
}
return retval.ToString();
}