我有一個程序讀取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