Я в процессе написания надстройки для 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 для помощи, отличный способ начать в выходные.
Возможно, вы неправильно поняли мой смысл открытия Word. i "открыть" документ через Word.Application wordApp = new Word.Application(); а затем wordApp.Open (xxxxx); – TiGoRn
Возможно, я сделал, когда вы сказали: «Конечно, первое, что приходит на ум, пытается расширить расширения, но должен быть более эффективный способ», я предположил, что вы хотите узнать, какое приложение открыло файл с указанным расширением , –
Ну, я думаю, что было бы способ сделать сопоставление отношений реестра между расширениями и офисным приложением и использовать их, чтобы определить, с каким interop.app я открываю файлы. – TiGoRn