我有一个程序读取Microsoft Word 2010文档,并将从每个表的第一列读取的所有文本放入数据表中。但是,生成的文本还包含特殊的格式化字符(在原始Word文档中通常不可见)。通过C#将纯文本格式转换为纯文本格式?
有没有一种方法可以读取我读过的文本字符串,并从中删除所有格式化字符?
该程序非常简单,并使用Microsoft.Office.Interop.Word程序集。这里是我从文件抓取文本主循环:
// Loop through each table in the document,
// grab only text from cells in the first column
// in each table.
foreach (Table tb in docs.Tables)
{
for (int row = 1; row <= tb.Rows.Count; row++)
{
var cell = tb.Cell(row, 1);
var listNumber = cell.Range.ListFormat.ListString;
var text = listNumber + " " + cell.Range.Text;
dt.Rows.Add(text);
}
}
编辑:这里是文本(“1.导言”)看起来像在Word文档中:
这就是它看起来像在投入之前,我的数据表:
这是个什么样子,当放到数据表所示:
所以,我想弄清楚一个简单的方法来摆脱似乎出现的控制字符(\ r,\ a,\ n等)。
编辑:这是我正在尝试使用的代码。我创建了一个新的方法将字符串转换:
private string ConvertToText(string rtf)
{
using (RichTextBox rtb = new RichTextBox())
{
rtb.Rtf = rtf;
return rtb.Text;
}
}
当我运行程序时,它的炸弹,出现以下错误:
变量RTF,在这一点上,看起来是这样的:
解决方案:在将它们写入数据表之前,我修剪了不需要的字符。
// Loop through each table in the document,
// grab only text from cells in the first column
// in each table.
foreach (Table tb in docs.Tables)
{
for (int row = 1; row <= tb.Rows.Count; row++)
{
var charsToTrim = new[] { '\r', '\a', ' ' };
var cell = tb.Cell(row, 1);
var listNumber = cell.Range.ListFormat.ListString;
var text = listNumber + " " + cell.Range.Text;
text = text.TrimEnd(charsToTrim);
dt.Rows.Add(text);
}
}
什么字符你需要剥离? –
根据[Range.Text]文档(http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.range.text.ASPX),文本是* plain,无格式文本的选择或范围*,所以我不确定你在说什么格式。 –
http://stackoverflow.com/questions/188545/regular-expression-for-extracting-text-from-an-rtf-string – slfan