Удалить строку из строки, где найден определенный тег HTML - PullRequest
0 голосов
/ 02 марта 2011

Итак, у меня есть эта HTML-страница, которая экспортируется в файл Excel с помощью действия MVC.Действие фактически выполняется и выполняет визуализацию этого частичного представления, а затем экспортирует это визуализированное представление с правильным форматированием в файл 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, я не думаю, что сейчас это огромная сделка.

Ответы [ 4 ]

7 голосов
/ 02 марта 2011

Удалить все теги img:

string html2 = Regex.Replace( html, @"(<img\/?[^>]+>)", @"",
    RegexOptions.IgnoreCase );

Включить ссылку:

using System.Text.RegularExpressions;
0 голосов
/ 02 марта 2011

Я просто использую это

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();
        }
0 голосов
/ 02 марта 2011

Самый безопасный способ сделать это - использовать HTML Agility Pack для чтения в HTML, а затем написать код, который удаляет узел изображения из HTML.

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(htmlString);
HtmlNode image =doc.GetElementById("ExportToExcel"]);
image.Remove();
htmlString = doc.WriteTo();

Вы можете использовать аналогичный код для удаления тега script и других тегов img.

0 голосов
/ 02 марта 2011

Если это в строке C #, просто:

myHTMLString.Replace(@"<img id="ExportToExcel" style=" cursor: pointer;" src="/Extranet/img/btn_user_export_excel_off.gif" />","");
...