2016-02-04 4 views
0

У меня проблема с некоторым текстом вокруг моего приложения, дело в том, что после добавления текста с форматированием я сохраняю этот тип форматирования (HTML) в своей базе данных для последующего использования. Поэтому, как только я показать его обратно пользователю, я все еще могу сохранить форматC# html decode перед экспортом в excel

Пример текста:

bla<br>bla<br>bla bla<br> 

И для показа моих управления, который работает, я использую:

Context.Server.HtmlDecode(e.Row.Cells[i].Text); 
Context.Server.HtmlEncode(e.Row.Cells[i].Text); 

Но проблема появляется, когда я хочу тот же текст, экспортировать в файл Excel ...

foreach (DataRow row in dr) 
{ 
    for (col = 0; col < dtMainSQLData.Columns.Count; col++) 
    { 
     rowData[rowCnt, col] = HttpUtility.HtmlEncode(row[col].ToString()); 
    } 
    rowCnt++; 
} 

oSheet.get_Range("A2", lastColumn + (rowCnt + 1).ToString()).Value2 = rowData; 

И когда я открываю отл эль-файл ... что текст показывает вверх, как это

bla&lt;br&gt;bla&lt;br&gt;bla bla&lt;br&gt; 

Кто-нибудь знает какой-то способ экспортировать этот текст в Excel файл, но сохранить форматирование текста?

Спасибо

+1

Вы не пробовали его кодировать? –

+0

Да, я сделал это, я хранил его в DB как nvarchar, он отображается как «bla
bla
bla bla
' – Veljko89

+0

Я имею в виду, когда вы экспортируете, чтобы сохранить его в Excel, попробовали ли вы просто' rowData [rowCnt, col] = row [col] .ToString(); ' –

ответ

0

Это, вероятно, не самое лучшее решение, но вы можете заменить текст строки:

foreach (DataRow row in dr) 
{ 
    for (col = 0; col < dtMainSQLData.Columns.Count; col++) 
    { 
     string outputData = row[col].ToString().Replace("&lt;", "<"); 
     outputData = outputData.Replace("&gt;", ">"); 
     rowData[rowCnt, col] = outputData; 
    } 
    rowCnt++; 
} 
+0

Спасибо за совет, я буду тестировать это исправить немного больше и дать вам знать, как это работает – Veljko89

0

Установка HTML Agility Pack.

Затем вы можете создать способ, подобный этому, для получения текстового значения.

HtmlDocument doc = new HtmlDocument(); 
    doc.LoadHtml("bla<br>bla<br>bla bla<br>"); 
    var buffer = new StringBuilder(); 
    foreach (var descendant in doc.DocumentNode.Descendants()) 
    { 
     buffer.Append(descendant.InnerHtml); 
    } 
    Console.WriteLine(buffer); 
+0

Спасибо за помощь человеку ... но мне не удалось включить HTML-пакет в мой проект, что-то плохое. Спасибо в любом случае – Veljko89

+0

Что вы имели в виду под «вы не смогли включить пакет маневренности»? Запустите эту команду в консоли диспетчера пакетов. 'Install-Package HtmlAgilityPack' –

+0

Я имею в виду, что я никогда не делал этого ... Я попытался включить его в качестве ссылки .NET, но плохо рассказал об этом немного больше и выяснил это – Veljko89

Смежные вопросы