2011-07-24 14 views
0

C#Microsoft Word 12.0オブジェクトライブラリ .docファイルからデータを読み込み、これらの内容をテキストファイルに保存します(これは私のプロジェクトで必要です)。私の.docファイルにはいくつかのテーブルがあり、そのテーブルの各行とカラムを読み込む必要があります。 読み取り操作は、ここでC#でdocファイルを読むときに奇妙な文字を削除しますか?

enter image description here

を正常に実行されますが、データは添付画像のように(正方形のもののような)いくつかの奇妙な文字が含まれていた私が使用したコードは次のとおりです。

private void btnRead_Click(object sender, EventArgs e) 
{ 
    try 
    { 
     Microsoft.Office.Interop.Word.ApplicationClass wordObject = new ApplicationClass(); 
     object file = textBox1.Text; //this is the path 
     object nullobject = System.Reflection.Missing.Value; 
     Microsoft.Office.Interop.Word.Document docs = wordObject.Documents.Open 
      (ref file, ref nullobject, ref nullobject, ref nullobject, 
      ref nullobject, ref nullobject, ref nullobject, ref nullobject, 
      ref nullobject, ref nullobject, ref nullobject, ref nullobject, 
      ref nullobject, ref nullobject, ref nullobject, ref nullobject); 

     docs.ActiveWindow.Selection.WholeStory(); 
     docs.ActiveWindow.Selection.Copy(); 
     IDataObject data = Clipboard.GetDataObject(); 
     String allData = ""; 
     for (int t = 1; t < docs.Tables.Count; t++) 
     { 
      Table tbl = docs.Tables[t]; 
      for (int r = 1; r < tbl.Rows.Count; r++) 
      { 
       for (int c = 1; c < 3; c++) 
       { 
        allData += tbl.Cell(r, c).Range.FormattedText.Text.Trim() + Environment.NewLine; 
       } 
      } 
     } 
     txtData.Text = allData; 
     saveTextFile(allData); 

     docs.Close(ref nullobject, ref nullobject, ref nullobject); 
    } 
    catch (Exception j) 
    { 
     MessageBox.Show(j.Message); 
    } 
} 

private void saveTextFile(String data) 
{ 
    try 
    { 
     StreamWriter sw = new StreamWriter(txtOutput.Text.Trim()); 
     sw.WriteLine(data); 
     sw.Flush(); 
     sw.Close(); 
    } 
    catch (Exception ex) 
    { 
     MessageBox.Show(ex.StackTrace); 
    } 
} 

は誰もいどのように私はそのような奇妙な文字を削除することができます任意のアイデアがありますか?

答えて

0

まあ、私はあまりdoc形式にはあまりよく慣れていませんが、印刷可能な文字セットの外に文字が存在すると、これらのボックス(通常は "奇妙な文字")が表示されます。この場合、行末には常に2つあるので、\ r \ nのように、ドキュメント内の改行文字(またはいくつかの改行関連の解析エラー)に関連している可能性があります。 \ r \ nは多くのWindows形式の文書に共通して存在しますが、これは.doc文書の場合でも私の専門知識を超えています。

もちろん、それを削除するのは比較的簡単です。すべての行の最後の2文字を削除するだけで、簡単にチェックを追加することができます。それはかなりではない(と私はおそらくそれを原則だけで反対することをお勧めします)が、それは動作するように見えます。

関連する問題