Microsoft Word 2010 ドキュメントを読み取り、すべてのテーブルの最初の列から読み取ったすべてのテキストをデータテーブルに入れるプログラムがあります。ただし、結果のテキストには特殊な書式設定文字も含まれます (通常、元の Word 文書では表示されません)。
読んだテキストの文字列からすべての書式設定文字を取り除く方法はありますか?
プログラムは非常に単純で、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);
}
}
編集: Word 文書のテキスト (「1. はじめに」) は次のようになります。
これは、データテーブルに入れる前の様子です。
これは、データテーブルに入れると次のようになります。
そこで、表示されているように見える制御文字 (\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);
}
}