2014-04-22 60 views
0
产生错误

我通过Excel中的列循环和寻找独特的价值观,然后将它们保存到一个数组:Java的机器人在Excel

String[] centers = new String[30]; 

    Robot robot = new Robot(); 

    robot.delay(5000); 

      robot.mouseRelease(InputEvent.BUTTON1_MASK); 


    robot.delay(1000); 


    //Scroll Down Column 
    for(int i=2; i<5428; i++){ 
     robot.keyPress(KeyEvent.VK_DOWN); 
     robot.delay(5); 
     robot.keyRelease(KeyEvent.VK_DOWN); 
     robot.delay(5); 

    //Copy Tile 
     robot.keyPress(KeyEvent.VK_CONTROL); 
     robot.delay(5); 
     robot.keyPress(KeyEvent.VK_C); 
     robot.delay(5); 
     robot.keyRelease(KeyEvent.VK_CONTROL); 

    //Get Content of Tile 
     String data = (String) Toolkit.getDefaultToolkit() 
      .getSystemClipboard().getData(DataFlavor.stringFlavor); 

    robot.delay(100); 

    //Check if tile value is in array 
    for(int l=0;l<30;l++){ 
     if(centers[l]!=(data)){ 
      centers[l]=data; 
     } 

    } 

    //End of Scrolling through column 
    } 

    //print out whatever diffrent tile content variables it found 
    for(int l=0;l<30;l++){ 
     if(centers[l].equals("")){}else{System.out.println(centers[l]);} 

    } 


    } 





    } 

的问题后,我复制了第一个瓷砖出现一个弹出这样说:错误:剪贴板内容不能清空,其他程序使用剪贴板。我可以做什么,这可以成功扫描一个excel列?

回答

1

修复1

在复制数据推出C键。

robot.keyRelease(KeyEvent.VK_C); 

修复2

把一些延迟内容复制后。

Excel可能需要一些时间才能真正复制数据。对我们来说可能是微不足道的,但这不是瞬间的事情。像25-50毫秒的东西应该足够肯定。你应该测试它得到确切的最短时间

希望这会有所帮助。
祝你好运。

+0

我会试试这个! – user3505931