我想在我的项目中添加一个图像作为资源,以便我可以引用它以编程方式插入电子表格中的范围。
我通过右键单击项目并选择添加>来添加图像。现有项目......
我希望使用此代码可以获得图像(.png文件):
myYearQtr = "Select Distinct Date_YYYYQX from [tbl_YYYYQX_LU] where [Date_YYYYQX] = '" & Me.cboYearQtr & "'"
...但是使用Bitmap或Image,我得到了"' ReportRunner.Properties.Resources'不包含' pa_logo_notap'"
的定义这似乎是基于我阅读here的合理代码,但似乎必须将图像明确标记为此工作的资源。我该如何做到这一点?
我试过了:
var logoRange = _xlSheet.Range[
_xlSheet.Cells[1, LOGO_FIRST_COLUMN],
_xlSheet.Cells[5, LOGO_LAST_COLUMN]];
//System.Drawing.Bitmap logo =
//ReportRunner.Properties.Resources.pa_logo_notap.png;
System.Drawing.Image logo =
ReportRunner.Properties.Resources.pa_logo_notap.png;
_xlSheet.Paste(logoRange, logo);
...但我不仅得到了一个确认信息,关于被粘贴的项目与插入的地方大小和形状不同,我是否真的想要这样做,它还插入了一些看似不相关的文本(" avgOrderAmountCell.Style")而不是图像。
好的,我试过了:
System.Drawing.Image logo = (System.Drawing.Image)ReportRunner.Properties.Resources.ResourceManager.GetObject("pa_logo_notag.png");
_xlSheet.Paste(logoRange, logo);
...但是," 无法转换类型'字符串'到' System.Drawing.Image '在该代码的第二行。
这有效:
Assembly myAssembly = Assembly.GetExecutingAssembly();
System.Drawing.Image logo = (System.Drawing.Image)myAssembly.GetName().Name + ".pa_logo_notap.png";
Clipboard.SetDataObject(logo, true);
_xlSheet.Paste(logoRange, logo);
...但我并不为此疯狂,因为我正在使用表单上的图像,并将图像传递给此类的构造函数。当应该可以将图像存储为资源并且只加载资源时,传递图像似乎有点傻。尽管如此,我仍然无法使用这种方法......
我认为我会坚持使用我所拥有的(在更新3中),因为这样,因此:
private System.Drawing.Image _logo;
. . .
_logo = logo; // logo (the image) is passed in an overloaded constructor
. . .
var logoRange = _xlSheet.Range[
_xlSheet.Cells[1, LOGO_FIRST_COLUMN], _xlSheet.Cells[6,
LOGO_LAST_COLUMN]];
Clipboard.SetDataObject(_logo, true);
_xlSheet.Paste(logoRange, _logo);
...失败," ' null'对于'流' "
无效