Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2009, 14:11   #1
lil
 
Регистрация: 03.06.2009
Сообщений: 5
По умолчанию как программно сохранить .doc в .txt

Подскажите, пожалуйста, как программно сохранить .doc в .txt
работаю в visual studio на C#
lil вне форума Ответить с цитированием
Старый 03.06.2009, 16:16   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Код:
// создаешь объект Word
                Word.Application newApp = new Word.Application(); 

                object Source="c:\\Source.doc";// исходный файл
                object Target="c:\\Target.txt";// куда сохранить

                object Unknown =Type.Missing;
// открываешь файл
                newApp.Documents.Open(ref Source,ref Unknown, 
                     ref Unknown,ref Unknown,ref Unknown, 
                     ref Unknown,ref Unknown,ref Unknown, 
                     ref Unknown,ref Unknown,ref Unknown, 
                     ref Unknown,ref Unknown,ref Unknown,ref Unknown);

        // указываешь формат сохранения

                object format = Word.WdSaveFormat.wdFormatText;

        //сохраняешь

                newApp.ActiveDocument.SaveAs(ref Target,ref format, 
                        ref Unknown,ref Unknown,ref Unknown, 
                        ref Unknown,ref Unknown,ref Unknown, 
                        ref Unknown,ref Unknown,ref Unknown, 
                        ref Unknown,ref Unknown,ref Unknown, 
                        ref Unknown,ref Unknown);                    

                // закрываешь Word

                newApp.Quit(ref Unknown,ref Unknown,ref Unknown);
Hollander вне форума Ответить с цитированием
Старый 03.06.2009, 16:43   #3
lil
 
Регистрация: 03.06.2009
Сообщений: 5
По умолчанию

Спасибо. только вот почему-то у меня нет пространства имен Microsoft.Office.
lil вне форума Ответить с цитированием
Старый 03.06.2009, 17:00   #4
lil
 
Регистрация: 03.06.2009
Сообщений: 5
По умолчанию

в msdn написано, что необходимо использовать Visual Studio Tools for Office, но я не пойму как установить это средство. написано, что идет вместе с visual studio, но у меня нет.
lil вне форума Ответить с цитированием
Старый 03.06.2009, 17:56   #5
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Запусти установку Visual Studio заново, там будет выбор установки, поищи там Visual Studio Tools for Office. Если нету, значит ищи другую установку, т.к. эта у тебя урезана.
Hollander вне форума Ответить с цитированием
Старый 04.06.2009, 08:45   #6
lil
 
Регистрация: 03.06.2009
Сообщений: 5
По умолчанию

Спасибо большое за помощь. В 2008 студии нашла я Tools for Office. в одном из форумов нашла класс для работы с Word, без необходимости создания проекта Office. есть следующий метод:
Код:
 Type objClassType;
                objClassType = Type.GetTypeFromProgID("Word.Application");
                internalWord = Activator.CreateInstance(objClassType);

//Открытие файла
object objDocs_Late = internalWord.GetType().InvokeMember(
                  "Documents", BindingFlags.GetProperty, null, internalWord, null);
               
                object[] Parameters;
                Parameters = new Object[1];
                Parameters[0] = FileName;
                objCurDoc = objDocs_Late.GetType().InvokeMember("Open",
                    BindingFlags.InvokeMethod, null, objDocs_Late, Parameters);

//Сохранение файла 
  public bool SaveAs(string filename)
        {
            if (objCurDoc == null) return false;
            object[] Parameters = new Object[2];
            Parameters[0] = filename; //find text
            try
            {
                objCurDoc.GetType().InvokeMember("SaveAs",
                    BindingFlags.InvokeMethod, null, objCurDoc, Parameters);
                return true;
            }
            catch
            {
                return false;
            }
        }
Он созраняет, но только в формате doc или docx, а как явно здесь задать формат сохраниния файла?
Код:
object format = Word.WdSaveFormat.wdFormatText;
этот вариант не подходит, так как он относится к Office-приложению.

Последний раз редактировалось Sazary; 04.06.2009 в 12:56.
lil вне форума Ответить с цитированием
Старый 04.06.2009, 14:26   #7
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Вроде твой вариант требует обязательно наличия на компе установленного Word, поэтому не советую его.
Hollander вне форума Ответить с цитированием
Старый 04.06.2009, 16:02   #8
lil
 
Регистрация: 03.06.2009
Сообщений: 5
По умолчанию

Спасибо за помощь, Hollander. разобралась. все работает. Использую код из первого Вашего сообщения. Надо было в 2005 студии добавить сборки Microsoft.Office.Interop.Word.dll и Office.dll
lil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таблицы из Word (doc) в (txt) shadowbeast Microsoft Office Word 33 13.07.2015 00:26
преобразовать doc в txt не через OLE furstenberg Компоненты Delphi 0 12.11.2008 14:44
Как сохранить Html страницу в *.txt зная его URL shaima Работа с сетью в Delphi 1 31.08.2008 17:46
как сохранить строчки в TXT файл Ярослав Помощь студентам 2 17.05.2008 18:43
сохранить код страницы в txt файл на компьютере DimkinStd Общие вопросы Delphi 8 28.01.2007 17:15