我正在为Outlook07编写一个加载项,它应该存储电子邮件的文本 以及它在单独的pdf文件中的所有附件。当然这仅适用于合理的附件,对于zip文件等没有意义。
我到了将所有文件存储在临时目录中的点(对于每个邮件)。邮件 本身很容易转换,但我的附件有问题。
我们的想法是使用每个相应办公室互操作的exportAs方法,因此我不必在客户端PC上安装aditional软件。
要使用相应的办公室应用程序导出每个文件,我首先要找出哪个办公室应用程序可以打开它。当然,首先想到的是尝试扩展,但必须有一些更有效的方式
if(fileExt == "doc" or "docx" or "wordformat i forgot") Open Word and Convert
if(fileExt == "xls") Open Excel and Convert
我试图在msdn文档和google中找到一些东西,但Office.Interops是 真的很难记录,这使我已经很难到达现在的位置。并开放 上述意义上的文件不在任何地方。
任何暗示都会让我非常高兴。
编辑 - 以下是我如何转换word文档的示例:
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;
编辑 - 成功之路:
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;
看起来不错。感谢帮助,这是开始周末的好方法。
答案 0 :(得分:2)
最好的办法是使用注册表找出与扩展程序相关联的应用程序。如果你看一下这个链接:
Script to associate an extension to a program
它显示了您需要查看注册表的位置。