Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > Подскажите word file ???


Автор: shark1 4.11.2008, 10:16
Подскажите плизззз,почему так не работает.
Есть две кнопки(Open,Save) и textBox.
Kod :
Код

private void btn_OpenFile_Click(object sender, EventArgs e)
        {
            //openFileDialog.InitialDirectory = @"c:\";
            openFileDialog.Filter = "Word files (*.doc)|*.doc|" + "Text files (*.txt)|*.txt|" + "All files (*.*)|*.*";
            openFileDialog.FilterIndex = 1;              //  1 based index

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                StreamReader reader = new StreamReader(openFileDialog.FileName);
                try
                {
                    strFileName = openFileDialog.FileName;
                    txt_File.Text = reader.ReadToEnd();

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
                finally
                {
                    reader.Close();
                }
            }
        }


        private void btn_SaveFile_Click(object sender, EventArgs e)
        {
            SaveFileDialog savefiledialog1 = new SaveFileDialog();
            savefiledialog1.Filter = "Word files (*.doc)|*.doc|Text files (*.txt)|*.txt|All files (*.*)|*.*";
           
            if (savefiledialog1.ShowDialog() == DialogResult.OK)
            {
                using (StreamWriter sw = new StreamWriter(savefiledialog1.FileName))
                {
                    sw.WriteLine(txt_File.Text);
                }
            }
            txt_File.Clear();
        }

если открываю word file то в textBox вместо текста квадратики :(,а вот если я что то напишу в textBox и сохраню ето в word file,то потом я этот фаил спокоыно открываю и вижу нормальный текст,могу его изменять и сохронять.А вот какойто другой фаил если открываю то опять квадратики.Подскажите.Зарание спасибо.

Автор: diadiavova 4.11.2008, 13:05
Документы офиса - бинарные файлы(проще говоря данные там зашифрованны), а открывет офис разные типы файлов, втом числе и текстовые.

Автор: Bogdan1024 4.11.2008, 13:35
Попробуй открыть .doc-файл блокнотом и узнаешь почему ;)

Автор: shark1 4.11.2008, 17:41
Так какое решение ?.Подскажите.Зарание спасибо.

Автор: Bogdan1024 4.11.2008, 17:48
Если хочешь читать doc-файлы - применяй COM-объекты MS Word. Или ищи аналогичные библиотеки, которые помогают работать с файлами microsoft word. Кажется, у Open Office  есть не только проги для работы, но и библиотеки.

Автор: shark1 4.11.2008, 17:59
Spasibo,budu iskat.

Автор: shark1 4.11.2008, 20:37
Вот так решил вопрос.
код:
Код

OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Word files (*.doc)|*.doc" ;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                StreamReader reader = new StreamReader(openFileDialog.FileName);
                try
                {
                    strFileName = openFileDialog.FileName;
                    txt_File.Text = reader.ReadToEnd();

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
                finally
                {
                    reader.Close();
                }
                Word.ApplicationClass wordApp = new Word.ApplicationClass();
                object file = strFileName;
                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,
                    ref nullobj, ref nullobj, ref nullobj, ref nullobj);
                doc.ActiveWindow.Selection.WholeStory();
                doc.ActiveWindow.Selection.Copy();
                IDataObject data = Clipboard.GetDataObject();
                txt_File.Text = data.GetData(DataFormats.Text).ToString();
                doc.Close(ref nullobj, ref nullobj, ref nullobj);
                wordApp.Quit(ref nullobj, ref nullobj, ref nullobj);

знаю что криво,но вроде работает.
Спасибо всем.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)