c# - 如何将嵌入图像的相对路径分配给 ActiveSheet.PageSetup.LeftHeaderPicture.FileName?

标签 c#

为此有 2 个 SSCCE:

1.

我已通过右键单击解决方案 -> 添加 -> 现有项目 -> myPic.jpg 将图片添加到我的 VSTO 文档级加载项。

现在我正在使用 Excel 电子表格并想在左上角的标题中添加图片。使用 PageSetup.LeftHeaderPicture.FileName并提供它在调试时加载的图片的绝对路径。

当我尝试将路径更改为非绝对路径并说类似的话时

ActiveSheet.PageSetup.LeftHeaderPicture.FileName = "\\Assets\\myPic.jpg"

我不断收到 HRESULT: 0x800A03EC 异常。

enter image description here

我想我没有得到访问 Assets\myPic.jpg 的正确语法。

2.

我添加了一个新资源,选择了一个现有项目并选择了 myPic.jpg。我可以通过 Resource1.myPic 访问它,但是 ActiveSheet.PageSetup.LeftHeaderPicture只读...

PageSetup.LeftHeaderPicture.FileName需要一个 string 类型的参数,我不确定如何检索我已经嵌入的资源的路径...

问:

如何将图片作为资源(或只是现有项目)嵌入到我的解决方案中,以便能够将其与 PageSetup.LeftHeaderPicture.FileName 一起使用?

最佳答案

好的,我已经解决了。

将现有项目 myPic.jpg 添加到解决方案并将 Build Action 设置为 ContentCopy to Output DirectoryCopy Always(但我相信你可以将它设置为在更新时复制)

enter image description here

注意:使用此设置,您的文件始终会“复制”到发布的目录。

enter image description here

现在您的代码中只需要

ws.PageSetup.LeftHeaderPicture.Filename = 
                           AppDomain.CurrentDomain.BaseDirectory + "\\myPic.jpg";
ws.PageSetup.LeftHeader = "&G";

AppDomain.CurrentDomain.BaseDirectory 解释得很好 here

和预期的最终结果

enter image description here

关于c# - 如何将嵌入图像的相对路径分配给 ActiveSheet.PageSetup.LeftHeaderPicture.FileName?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22809950/

相关文章:

c# - asp.net MapPageRoute加载页面两次

c# - 创建类似 nhibernate 的查询生成器

c# - Web API 2 返回错误

c# - 没有管理员权限无法启动 nancy self host

c# - FileInfo.Delete 不会立即删除文件

javascript - window.open() 没有以我传递给它的高度打开

c# - 如何从 Outlook 插件获取 Gmail threadid(使用 Google Outlook Sync 时)?

c# - OpenXml 和无法创建互斥量

c# - Xamarin Android 从图库获取图像数据

c# - 如何读取owin中间件中的自定义 header ?