.docx файлы в RichTextBox

Рейтинг: 2Ответов: 1Опубликовано: 13.03.2015

Посоветуйте, как можно корректно загрузить файл .docx в RichTextBox ? Чтоб нормально отображался текст.

Ответы

▲ 3

Если нужно сохранить форматирование, как в ворде, нужно перегнать из docx в формат Rtf

                Word.Application wordApp = new Word.Application();
                Object docxFileName = dialog.FileName;
                Object missing = Type.Missing;

                wordApp.Documents.Open(ref docxFileName, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing, ref missing, ref missing,
                    ref missing, ref missing);
                //путь к папке с временными файлами
                string temp = System.IO.Path.GetTempPath();
                //для передачи параметров при пересохранении
                Object lookComments = false;
                Object password = String.Empty;
                Object AddToRecentFiles = true;
                Object WritePassword = String.Empty;
                Object ReadOnlyRecommended = false;
                Object EmbedTrueTypeFonts = false;
                Object SaveFormsData = false;
                Object SaveAsAOCELetter = false;
                //имя файла без расширения
                Object rtfFileName = dialog.SafeFileName.Substring(0, dialog.SafeFileName.Length - ".docx".Length);
                //создали рандом
                Random random = new Random();
                //проверяем есть ли файл с таким именем
                while (System.IO.File.Exists(rtfFileName + ".rtf"))
                    //генерируем случайное имя файла
                    rtfFileName += random.Next(0, 9).ToString();
                //формат RTF
                Object wdFormatRTF = Word.WdSaveFormat.wdFormatRTF;
                //приписали расширение
                rtfFileName += ".rtf";
                //приписали путь к временным файлам
                rtfFileName = temp + rtfFileName;
                //пересохранили
                wordApp.ActiveDocument.SaveAs(ref rtfFileName,
                    ref wdFormatRTF, ref lookComments, ref password, ref AddToRecentFiles, ref WritePassword, ref ReadOnlyRecommended,
                    ref EmbedTrueTypeFonts, ref missing, ref SaveFormsData, ref SaveAsAOCELetter, ref missing,
                    ref missing, ref missing, ref missing, ref missing);

                Object @false = false;
                //закрыли текущий документ
                wordApp.ActiveDocument.Close(ref @false, ref missing, ref missing);
                //вышли из ворда
                wordApp.Quit(ref @false, ref missing, ref missing);

                TextRange tr = new TextRange(RichSource.Document.ContentStart, RichSource.Document.ContentEnd);
                using (FileStream fs = File.Open((String)rtfFileName, FileMode.Open))
                {
                    tr.Load(fs, DataFormats.Rtf);
                }