Показ текста doc-овского документа на форме. Далее, печать. C#

 
0
 
.NET

Всем привет.
Прошу вас о помощи и совете.
Реализовываю приложение в котором вывожу в RichTextBox текст из .doc документа.


using Word = Microsoft.Office.Interop.Word;//добавить в ссылки
    public partial class Form1 : Form
    {
        Button button;
        RichTextBox richTextBox;
        public Form1()
        {
            InitializeComponent();
            richTextBox = new RichTextBox();
            richTextBox.Size = new Size(400, 400);
            button = new Button();
            button.Text = "Открыть";
            button.Location = new Point(10, 10);
            this.Size = new Size(500, 500);
            richTextBox.Location = new Point(10, button.Bottom + 10);
            richTextBox.Anchor = AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top;
            this.Controls.AddRange(new Control[] { button, richTextBox });
            button.Click += new EventHandler(button_Click);
        }

        void button_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "MS Word dosuments (*.docx)|*.docx|Rich text format (*.rtf)|*.rtf";
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                if (openFileDialog.FilterIndex == 1)//если формат документа Word 2007
                {
                    Word.Application app = new Microsoft.Office.Interop.Word.Application();//процесс ворда
                    Object docxFileName = openFileDialog.FileName;//имя файла
                    Object missing = Type.Missing;
                    //открыли дркумент
                    app.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 = openFileDialog.SafeFileName.Substring(0, openFileDialog.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;
                    //пересохранили
                    app.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;
                    //закрыли текущий документ
                    app.ActiveDocument.Close(ref @false, ref missing, ref missing);
                    //вышли из ворда
                    app.Quit(ref @false, ref missing, ref missing);
                    //прочли файл
                    richTextBox.LoadFile((String)rtfFileName);
                }
                if (openFileDialog.FilterIndex == 2)
                    richTextBox.LoadFile(openFileDialog.FileName);
            }
        }
    }

(Код взял с другого форума).
Помогите сделать его короче, мне openDialog не нужен, нужно чтобы doc-овский файл программа открывала из ресурсов проекта.
С ресурсами также беда, объясню. Открываю в VS Resources.resx, добавляю doc-овский файл FileType указан Binary. Подскажите пожалуйста, как правильно обращаться к ресурсу.
-----------------------------------------------------------------------------------------
Еще пробовал делать так, в папку Debug бросал 2 вордовских документа, создавал две кнопки и прописывал для каждой кнопки код:

System.Diagnostics.Process.Start("1.docx");

// для второй
System.Diagnostics.Process.Start("2.doc");

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

задан 20:28, 01.12.2016
ava 

Ответы (1)

Добрый день.
Файлы Оффиса не какого отношения не имеют к проекту. Посему файлы *.doc не переносятся при публикации.

Для копирования при публикации нужно добавить файлы в проект и в свойствах выставить Копирование в выходной каталог в Копировать всегда. Так же в Действие при сборке выбрать Содержание.

отвечен 15:19, 08.12.2016
ava 
solowey
60


Зарегистрируйтесь или войдите, чтобы написать.
Фирма дня
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Участники
advanced
Отправить