Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 完成粘贴操作后在工作簿中检测新形状的正确方法_C#_Excel_Office Interop - Fatal编程技术网

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个字符)