2011-01-07 42 views
2

Я в процессе написания надстройки для Outlook07, который должен хранить текст по электронной почте и все его вложения в отдельных файлах PDF. Конечно, это только для разумных вложений, для zip-файлов и т. Д. Это не имеет смысла.Преобразование всех вложений электронной почты Outlook в PDF

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

Идея заключается в использовании метода exportAs из каждого соответствующего межсетевого взаимодействия, поэтому мне не нужно устанавливать дополнительное программное обеспечение на клиентских ПК.

Чтобы экспортировать каждый файл в соответствующее офисное приложение, мне сначала нужно выяснить, какое офисное приложение может его открыть. Конечно, первое, что приходит на ум пытается из расширений, но там должен быть какой-то более эффективным способом, то

if(fileExt == "doc" or "docx" or "wordformat i forgot") Open Word and Convert 
if(fileExt == "xls") Open Excel and Convert 

Я пытался найти что-то в документаций и Google MSDN, но Office.Interops являются ДЕЙСТВИТЕЛЬНО плохо задокументирован, что заставило его уже тяжело добраться туда, где я сейчас. И открытие документов в вышеуказанном смысле нигде не охвачено.

Любой намек на меня сделает меня действительно счастливым.

EDIT - Ниже приведен пример того, как я конвертировать текстовые документы:

Word.Application wordApp = new Word.Application(); 
object oFilename = filename + ".html"; 
wordApp.Documents.Open(ref oFilename, x,x,x,x,x,x); 
wordApp.ActiveDocument.ExportAsFixedFormat(filename+".pdf", 
Word.WdExportFormat.wdExportFormatPDF,x,x,x,x,x); 
wordApp.ActiveDocument.Close(); 
wordApp.Close(); 
wordApp = null; 

EDIT - путь к успеху:

var key = registry.ClassesRoot.OpenSubKey(Path.GetExtension(filename)); 
string openType = key.GetValue("").ToString().ToLower(); 

if(openType.StartsWith("word.")) return DocumentType.Word; 
if(openType.StartsWith("excel.")) return DocumentType.Excel; 

return DocumentType.Unusable; 

Это выглядит хорошо. Thx для помощи, отличный способ начать в выходные.

ответ

2

Лучше всего было бы использовать реестр, чтобы узнать, какое приложение связано с расширением. Если вы посмотрите на эту ссылку:

Script to associate an extension to a program

Он показывает, где в реестре нужно искать.

+0

Возможно, вы неправильно поняли мой смысл открытия Word. i "открыть" документ через Word.Application wordApp = new Word.Application(); а затем wordApp.Open (xxxxx); – TiGoRn

+0

Возможно, я сделал, когда вы сказали: «Конечно, первое, что приходит на ум, пытается расширить расширения, но должен быть более эффективный способ», я предположил, что вы хотите узнать, какое приложение открыло файл с указанным расширением , –

+0

Ну, я думаю, что было бы способ сделать сопоставление отношений реестра между расширениями и офисным приложением и использовать их, чтобы определить, с каким interop.app я открываю файлы. – TiGoRn

Смежные вопросы