提取嵌入在Excel中的'pdf'文件,并使用c#将其保存到文件夹中

时间:2011-08-22 06:58:15

标签: c# excel

我正在使用C#.net 2.0,Office 2010和Visual Studio 2005。

我有一个包含嵌入式.pdf.doc文件的Excel文件 我可以使用以下代码读取并保存.doc文件:

if (inlineShape.OLEFormat.progID.StartsWith("word.document."))
{
    inlineShape.OLEFormat.Activate();
    Word.Document document = inlineShape.OLEFormat.Object as Word.Document;
    FileInfo wfi = new FileInfo(fileName);
    object wfileName = (object)(explodedDirectory + wfi.Name + "." + docCount.ToString() + ".doc");
    object fileFormat = Word.WdSaveFormat.wdFormatDocument;
    document.SaveAs(ref wfileName, ref fileFormat, ref _missing, ref _missing, 
        ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, 
        ref _missing, ref _missing, ref _missing, ref _missing, ref _missing, 
        ref _missing, ref _missing);
    document.Close(ref saveChanges, ref originalFormat, ref routeChanges);
    document = null;
}

但我对.pdf无能为力。

我需要提取.pdf文件并将其保存到文件夹中,提前感谢。

1 个答案:

答案 0 :(得分:3)

您用于Word文档的代码假定您知道嵌入的OLE对象的内容,并使用Word本身来保存文档。由于MS Office中没有原生PDF编辑器,因此@Shadow Wizard的链接指出,对于PDF也没有简单的方法。

仍然有办法获取数据;例如,如果您使用较新的.xslx格式(而不是.xls格式),则事情会更容易(或者至少更明显)。 .xslx文件实际上是Office Open XML文件,您可以使用Open XML SDK之类的文件来操作它。

另一种方法是尝试从.xslx文件中提取文件 - 这可以很容易地完成,因为它本质上只是一个.zip文件。要手动使用此功能,请将.xlsx文件重命名为.zip并将其解压缩。在里面,你会找到一个像“xl”这样的文件夹,里面有“嵌入”。不幸的是,您的PDF文档将在此处编码为OLE对象。然后,您可以尝试从中获取数据,例如here

不幸的是我对这里的细节知之甚少,否则我会给出一个更直接的答案。希望这会有所帮助。