C# 完成粘贴操作后在工作簿中检测新形状的正确方法
所以我现在正在做这个C# 完成粘贴操作后在工作簿中检测新形状的正确方法,c#,excel,office-interop,C#,Excel,Office Interop,所以我现在正在做这个 //Codeblock edited to include otaku upgrade const String GIFpastespecialformat = @"Picture (GIF)"; const Int32 Onemoreshape = 1; Int32 shapeCount = sht.Shapes.Count; WorksheetPasteSpecialArgs wspa = new worksheetpastespecialargs(); wspa.Fo
//Codeblock edited to include otaku upgrade
const String GIFpastespecialformat = @"Picture (GIF)";
const Int32 Onemoreshape = 1;
Int32 shapeCount = sht.Shapes.Count;
WorksheetPasteSpecialArgs wspa = new worksheetpastespecialargs();
wspa.Format = GIFpastespecialformat;
wspa.Link = False;
wspa.DisplayAsIcon = False;
List<Int32> oldShapes = new List<Int32>();
foreach (var item in sht.Shapes.Items())
{
oldShapes.Add(Item.ID);
}
sht.PasteSpecial(wspa);
if((shapeCount + Onemoreshape) == sht.Shapes.Count)
{
foreach (var item in sht.Shapes.Items())
{
if(oldShapes.Exists(i => i == item.ID) == false)
{
//work with shape here
}
}
}
else
{
//report and deal with comexception, user intervention, etc
}
//已编辑代码块以包括御宅升级
常量字符串GIFpastespecialformat=@“图片(GIF)”;
const Int32 Onemoreshape=1;
Int32 shapeCount=sht.Shapes.Count;
工作表StepSpecialAgs wspa=新工作表StepSpecialAgs();
wspa.Format=GIFpastespecialformat;
wspa.Link=False;
wspa.DisplayAsIcon=False;
列出旧形状=新列表();
foreach(sht.Shapes.Items()中的变量项)
{
oldShapes.Add(Item.ID);
}
特殊材料(wspa);
if((shapeCount+Onemoreshape)=sht.Shapes.Count)
{
foreach(sht.Shapes.Items()中的变量项)
{
if(oldShapes.Exists(i=>i==item.ID)==false)
{
//在这里按形状工作
}
}
}
其他的
{
//报告和处理异常、用户干预等
}
其中sht是表示我正在使用的工作表的变量。代码非常可靠。也许我唯一能做的改进就是对形状进行计数-
oldShapes.count
,然后看看粘贴后这个数字是否改变。如果是这样,则已插入形状。代码非常可靠。也许我唯一能做的改进就是对形状进行计数-oldShapes.count
,然后看看粘贴后这个数字是否改变。如果是这样,则插入了一个形状。是的,您的代码可能已经非常好了。我看不出还有更多的方法可以调整。如果你想找一种更快/更脏的方法,只需对形状进行.Count
,如果你的新计数比粘贴前多,则插入一个形状。谢谢,伙计,将此作为答案发布,我会接受,因为它来自你:)完成:)(哦,等等,我必须键入15个字符)是的,你的代码可能已经很好了。我看不出还有更多的方法可以调整。如果您正在寻找一种更快/更脏的方式,只需对形状进行.Count
,如果您的新计数比粘贴前多,则插入了一个形状。谢谢,伙计,将此作为答案发布,我将接受,因为它来自您:)完成:)(哦,等等,我必须键入15个字符)