Как мне прочитать документ Word с помощью StreamReader? - PullRequest
0 голосов
/ 21 августа 2009

У меня есть приложение asp.net 2.0. Я пытаюсь загрузить файл и прочитать строки и отобразить их в текстовом поле. Это прекрасно работает для файла .txt. Но если я сделаю слово doc, я получу всевозможные неровности (похоже на форматирование на основе xml), окружающие текст. Вот мой код ...

    Dim s As New StringBuilder
    Dim rdr As StreamReader

    If FileUpload1.HasFile Then

        rdr = New StreamReader(FileUpload1.FileContent)

        Do Until rdr.EndOfStream
            s.Append(rdr.ReadLine() & ControlChars.NewLine)
        Loop

        TextBox1.Text = s.toString()

    End If

Ответы [ 3 ]

1 голос
/ 21 августа 2009

Но если я сделаю слово doc, я получу всевозможные неровности (похоже на форматирование на основе XML), окружающие текст.

Это потому, что файл документа Word содержит форматирование на основе xml. То же самое вы увидите, если будете использовать тупое средство чтения текста (например, Notepad.exe или, например, type из командной строки), чтобы увидеть, что находится в файле.

Чтобы извлечь текст из окружающего форматирования, вам необходимо использовать программное обеспечение (например, само слово, winword.exe) для сохранения или получения документа в текстовом формате.

1 голос
/ 21 августа 2009

StreamReader не поддерживает файлы в формате Word. Он просто читает потоки символов. Вам нужно использовать какую-то библиотеку с поддержкой Word. Это совсем не простая проблема - не всегда понятно, как конвертировать любую часть документа Word в открытый текст.

0 голосов
/ 21 августа 2009

Вы можете использовать класс "Word.ApplicationClass"

Однако вы должны прочитать Особенности серверной автоматизации Office

Освобожден от другого донора:

 Word.ApplicationClass wordApp=new ApplicationClass();

    object file=path;

    object nullobj=System.Reflection.Missing.Value;  

    Word.Document doc = wordApp.Documents.Open(

    ref file, ref nullobj, ref nullobj,

                                          ref nullobj, ref nullobj, ref nullobj,

                                          ref nullobj, ref nullobj, ref nullobj,

                                          ref nullobj, ref nullobj, ref nullobj);

    doc.ActiveWindow.Selection.WholeStory();

    doc.ActiveWindow.Selection.Copy();

    IDataObject data=Clipboard.GetDataObject();

    txtFileContent.Text=data.GetData(DataFormats.Text).ToString();

    doc.Close();

Как упомянуто в моем комментарии ниже, это может работать для вас как ell: http://npoi.codeplex.com/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...