Удалить странные символы при чтении файла документа в C #? - PullRequest
0 голосов
/ 24 июля 2011

Я использую 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 голосов
/ 24 июля 2011

Ну, я не очень хорошо знаком с форматом doc, но эти поля («странные символы») обычно отображаются, когда присутствует символ, который находится за пределами набора символов для печати.В этом случае, поскольку в конце строки всегда их два, это может быть связано с символами новой строки в документе (или некоторой ошибкой синтаксического анализа, связанной с новой строкой), например, \ r \ n.\ r \ n обычно присутствует во многих документах, отформатированных в Windows, хотя я не могу сказать, так ли это в документах .doc.

Конечно, удаление их должно быть относительно простым, если вы счастливывзломать это.Вы можете просто добавить проверку, которая просто удаляет последние два символа каждой строки.Это не красиво (и я, вероятно, рекомендую против этого просто в принципе), но, похоже, это будет работать.

...