在C#中读取doc文件时删除奇怪的字符?

时间:2011-07-24 06:41:04

标签: c# ms-word ms-office

我正在使用 C# Microsoft Word 12.0对象库从.doc文件中读取数据,然后将这些内容保存到文本文件中(这是我的项目所必需的) )。我的.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);
    }
}

有没有人有任何想法,我怎么能删除这些奇怪的字符?

1 个答案:

答案 0 :(得分:0)

嗯,我不是特别熟悉doc格式,但是当存在可打印字符集之外的字符时,通常会显示这些框(“奇怪字符”)。在这种情况下,由于它们总是在一行的末尾有两个,它可能与文档中的换行符(或一些与换行相关的解析错误)有关,如\ r \ n。 \ r \ n通常存在于许多Windows格式的文档中,但是.doc文档中的情况是否属于我的专业知识。

当然,如果你乐意破解它们,删除它们应该是相对微不足道的。您只需添加一个检查,只删除每行的最后两个字符。它不漂亮(我可能会建议原则上反对它),但看起来它会起作用。