C# 操作excel图片 求助!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

SerapSignore 2011-08-18 01:45:02
有个需求,要把以前一个excel文件里面部分图片替换掉。。
但是新插入的图片会在别的图层的上面。
所以 用c# 代码怎么把刚插入的图片设置再最背面。

Pictures pics = (Pictures)RSsheet.Pictures(missing);
Picture vPic = pics.Insert(plist[i], missing);

上面是我插入图片的代码
用宏录制出来的代码是Selection.ShapeRange.ZOrder msoSendToBack

但是c# 中int ZOrder { get; } 属性是只读int型。。

请问各位大大有没有办法设置图片在最底层。
...全文
226 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqq957021438 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ajaxtop 的回复:]

C# code

/// <summary>
/// 将图片填充到Excel中的某个或某些单元格中
/// </summary>
/// <param name="ws">Microsoft.Office.Interop.Excel.Worksheet</param>
/// <param name="m_objRange"> Microsoft.Office.Interop.……
[/Quote]
ws.Shapes.AddPicture(PicturePath, Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoTrue, PicLeft+2, PicTop, PictuteWidth, PictureHeight);
使用这个方法一直报错啊!为什么?
真相重于对错 2011-08-22
  • 打赏
  • 举报
回复
你的C#代码?
SerapSignore 2011-08-21
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 hdt 的回复:]
ZOrder 是方法不是 属性
ZOrderPosition 是属性 只读
[/Quote]
我跟c#代码 进去 ZOrder 是属性啊。。
  • 打赏
  • 举报
回复
帮顶··················
真相重于对错 2011-08-21
  • 打赏
  • 举报
回复
ZOrder 是方法不是 属性
ZOrderPosition 是属性 只读
SerapSignore 2011-08-21
  • 打赏
  • 举报
回复
么的人回答。。
  • 打赏
  • 举报
回复
mark...
SerapSignore 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ajaxtop 的回复:]
C# code

/// <summary>
/// 将图片填充到Excel中的某个或某些单元格中
/// </summary>
/// <param name="ws">Microsoft.Office.Interop.Excel.Worksheet</param>
/// <param name="m_objRange"> Microsoft.Office.Inte……
[/Quote]
也不是我想要的啊。。
ajaxtop 2011-08-18
  • 打赏
  • 举报
回复

/// <summary>
/// 将图片填充到Excel中的某个或某些单元格中
/// </summary>
/// <param name="ws">Microsoft.Office.Interop.Excel.Worksheet</param>
/// <param name="m_objRange"> Microsoft.Office.Interop.Excel.Range</param>
/// <param name="PicturePath">插入图片的绝对物理路径</param>
/// <param name="IsMergeCells">是否合并上面的单元格</param>
public void InsertPicture(Microsoft.Office.Interop.Excel.Worksheet ws, Microsoft.Office.Interop.Excel.Range m_objRange, string PicturePath, bool IsMergeCells)
{
//计算单元格的宽和高
float PictuteWidth, PictureHeight;
PictuteWidth = Convert.ToSingle(m_objRange.Width);
PictureHeight = Convert.ToSingle(m_objRange.Height);
PictuteWidth = 150;
PictureHeight = 200;
if (IsMergeCells)
{
//合并单元格
m_objRange.Merge(System.Reflection.Missing.Value);
}
m_objRange.Select();
float PicLeft, PicTop;
PicLeft = Convert.ToSingle(m_objRange.Left);
PicTop = Convert.ToSingle(m_objRange.Top);
ws.Shapes.AddPicture(PicturePath, Microsoft.Office.Core.MsoTriState.msoFalse,
Microsoft.Office.Core.MsoTriState.msoTrue, PicLeft+2, PicTop, PictuteWidth, PictureHeight);
}




调用

Microsoft.Office.Interop.Excel.Range rg = (Microsoft.Office.Interop.Excel.Range)ws.Cells[j + 2, k + 1];
if (dt.Columns[k].ColumnName=="Thumbnails")
{
#region 生成图片
string filePath = Application.StartupPath + "//NetPagePic//" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".jpg";
Image img= BytesToImage((byte[])dt.Rows[j][k]);
img.Save(filePath);

#endregion

InsertPicture(ws, rg, filePath, true);//向Excel插入图片
File.Delete(filePath);//删除文件
rg.RowHeight = 200;
rg.ColumnWidth =25;//宽度设置为150时在Excel中实际宽度大大超出了150。顾修改为25
}
else
{
rg.NumberFormatLocal = "@";
ws.Cells[j + 2, k + 1] = dt.Rows[j][k].ToString();
}
SerapSignore 2011-08-18
  • 打赏
  • 举报
回复
没人会还是我表达的不够清楚啊、、、、、、、、、、、、、、、、、、
SerapSignore 2011-08-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wxr0323 的回复:]
参考
[/Quote]
这个是从excel读图片


而我是要写图片在excel里面。。。。
子夜__ 2011-08-18
  • 打赏
  • 举报
回复

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧