将纯文本导出为纯文本c#
好日子到Stackoverflow社区,将纯文本导出为纯文本c#
我需要一些专家帮助。我有一个MVC4网络应用程序,它有一些由TinyMCE支持的富文本框字段。到目前为止,该系统运行良好。上周,我的客户告诉我他们想要将存储在Microsoft SQL中的数据导出到Excel中以运行自定义报告。
我可以导出数据,以提供的代码优秀。但是,它以RTF格式导出数据,而不是纯文本格式。当他们尝试阅读内容时,这会造成问题。
由于缺乏知识和或理解,我无法弄清楚这一点。我读过,可以使用正则表达式来做到这一点,但我不知道如何实现这一点。所以我转向你寻求帮助。
public ActionResult ExportReferralData()
{
GridView gv = new GridView();
gv.DataSource = db.Referrals.ToList();
gv.DataBind();
Response.ClearContent();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment; filename=UnderwritingReferrals.xls");
Response.ContentType = "application/ms-excel";
Response.AddHeader("Content-Type", "application/vnd.ms-excel");
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);
gv.RenderControl(htw);
Response.Output.Write(sw.ToString());
Response.Flush();
Response.End();
return RedirectToAction("Index");
}
我真的很感激任何帮助。并提前感谢你。
我已经在YouTube和网络论坛上寻找解决方案,取得任何成功。 亲切的问候 Francois Muller
您可以执行的一个选项是按摩您写入XML文件的数据。
例如,在您的字符串中标识
并将其替换为string.Empty。
同理
可以用string.Empty替换。确定Rich Text HTML标签的所有变体后,您可以创建一个标签列表,并在for循环中用合适的字符串替换它们中的每一个。
非常感谢您花时间回复。总是很高兴看到个人帮助..请原谅我的无知,但你有可能有一个示例代码,你可以分享? –
您是否尝试将文件保存为.xslx并发送到客户端。
较新的Excel格式可能更优雅地处理数据?
我做到了。这个问题不在数据中。这正如SQL表中显示的那样。出于某种原因,他们希望进行报告并使用(RTF)中的注释部分,因为他们希望能够从Word,Outlook和Excel文档中复制和过去。所以当他们尝试阅读这些信息时,他们会得到所有的HTML标签,并且由于不了解HTML而导致客户端迷惑了。所以要解决这个问题,我想将文本转换为纯文本,然后导出到Excel。 –
如果您可以添加一个没有公司数据的SAMPLE文本,它会给出一个想法什么是预期的输入和输出数据。 –
美好的一天,我希望利用文本: 客户取消有覆盖 并将其转换为: 客户取消有覆盖 我再次只需要这样做。我需要原始数据保持原样,以便在通过应用程序编辑数据时能够正确显示。我只需要纯文本部分将其导出到Excel中,以便客户端可以轻松读取内容。 –
将此函数添加到您的代码中,然后您可以调用将函数传递给HTML字符串的函数。返回输出将是HTML免费的。
警告:这不适用于所有情况,不应该用于处理不可信用户输入。请用您的输入字符串的变体进行测试。
public static string StripTagsCharArray(string source)
{
char[] array = new char[source.Length];
int arrayIndex = 0;
bool inside = false;
for (int i = 0; i < source.Length; i++)
{
char let = source[i];
if (let == '<')
{ inside = true; continue; }
if (let == '>') { inside = false; continue; }
if (!inside) { array[arrayIndex] = let; arrayIndex++; }
}
return new string(array, 0, arrayIndex);
}
谢谢大家帮助我解决这个问题。我设法通过更改我的代码来解决问题。我想我会补充我的发现来帮助任何有同样问题的人。我改变了这一行: Response.Output.Write(sw.ToString()); 有: 的Response.Write(HttpUtility.HtmlDecode(sw.ToString()) 请注意,我发现问题了拉空值时,在Excel中它是由以下字符表示:A 我会更新这个帖子一旦我找到了工作解决方案 –
不知道这会有所帮助,但在桌面应用程序中,您可以在代码中创建richtext控件(不必须可见)。将richtext加载到控件中,然后将计划文本从控件中取出。您可以查看TinyMCE是否可以选择将计划文本取消并尝试类似的方法。 – Durus