【问题标题】:Export OLE-object from Excel by c#通过 c# 从 Excel 中导出 OLE 对象
【发布时间】:2016-03-09 13:07:31
【问题描述】:

我有一个带有脚本的 excel 文件:getPhotoSheet().OLEObjects.Add(Filename:=strPath, DisplayAsIcon:=False).Top,它将图片保存到文件中。 我需要将此文件导出到一个文件夹(我正在使用带有“Microsoft.Office.Interop.Excel”的 c#-app)。 我尝试通过两种方式做到这一点:

  1. 将文件另存为 html 页面。
  2. 按形状获取对象并将其复制到图表中。将图表保存到文件夹中。 但是没用,我只得到这个image

那么如何从excel中导出图片呢?

【问题讨论】:

  • OLE 已经死了,已经有 10 多年了。对它的支持从未添加到 .NET 中,因此您在 C# 中无能为力。 Office 应用程序是最后一个莫希干人,也许很难将其删除。您将没有任何其他程序仍然可以处理嵌入对象,缩略图就可以了。

标签: c# excel


【解决方案1】:

所以,当我尝试“激活”这个对象(它是“包”ole-object 或OLE Compound File)时,它在“C:\Users\%username%\AppData\Local\Temp”中有副本;

我像这样从 excel 中复制了文件:

foreach (OLEObject obj in _WorkSheetExcel.OLEObjects())
{
      Hashtable hs = new Hashtable();
      DirectoryInfo direct = new DirectoryInfo(tempdir);
      foreach (FileInfo file in direct.GetFiles())
      {
          hs.Add(file.Name, null);//get all file names in tempdir
      }
      obj.Activate();//activate oleobject
      foreach (FileInfo file in direct.GetFiles())
      {
          if (!hs.ContainsKey(file.Name) && !file.Extension.ToLower().Contains("tmp"))//find new activated file 
          {
               FileInfo picture = file.CopyTo(pathpicture + picturename  + file.Extension); //copy picture to folder with original extension
               break;
          }
      }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多