India advanced to the semifinals with a perfect 18 points from nine wins.
They will play fourth-place New Zealand in the first semifinal at Mumbai on Wednesday. Second-place South Africa will play third-place Australia in the second semifinal at Kolkata the following day.
The Netherlands finished 10th in the standings, despite their two upset wins against South Africa and Bangladesh.
India made a fast start after Sharma won the toss.
Sharma made 61 off 54 balls, including eight fours and two sixes. Gill scored 51 off 32 balls, hitting three fours and four sixes.
Gill was first out, holing to square leg off Paul van Meekeren. It brought Kohli to the crease with a loud cheer from the anticipating crowd.
Kohli struggled to time the ball properly before finding his rhythm and hitting 51 off 56, including five fours and a six. He went atop the most runs’ standings – 594 in nine matches, ahead of South Africa’s Quinton de Kock (591 runs in nine matches).
At the other end, Sharma was out caught at long on as India was down to 129-2 after a fast start. Iyer and Kohli then put on 71 off 66 for the third wicket.
Just as Kohli had found his rhythm, Roelof van der Merwe stunned the partisan Indian crowd in the 29th over. He bowled the star batter, who was searching for a record 50th ODI hundred.
The score read 200-3 at that time and the Iyer-Rahul stand wasn’t then broken till the final over.
Iyer scored his first 50 off 48 balls, and then accelerated to score the next 50 off 36 balls, hitting three fours and two sixes in this part. He scored another 28 off the last 10 balls faced.
Rahul was even more impressive in his acceleration. He got to 50 off 40 balls, and then to 100 off another 22 balls – in all, he hit 11 fours and four sixes.
India scored 126 runs for one wicket in the final 10 overs to finish with the tournament’s second-highest total.
It was also India’s second-highest total in World Cups after 413-5 against Bermuda in 2007.
In reply, Netherlands gave a good account but their batting lacked the firepower needed to seriously challenge India’s score.
Sybrand Engelbrecht scored 45 off 80, including four fours. He also finished as the Netherlands’ top run-scorer in the tournament with 300 runs in eight games, including two half-centuries.
Max O’Dowd (30) and Collin Ackermann (35) put on 61 runs for the second wicket, the highest partnership of the Dutch innings.
Their biggest highlight was when Kohli came on to bowl and dismissed Scott Edwards for 17, caught behind down leg side. It was Kohli’s first ODI wicket since January 2014.
Sharma wasn’t too far behind, also picking up a wicket. Teja Nidamanuru holed out to long on after scoring 54 off 39 balls, including six sixes.
Mohammed Shami went wicketless in his six overs, after picking up 16 wickets in the previous four games. Spinners Kuldeep Yadav (2-41) and Ravindra Jadeja (2-49) made their presence felt.