The accident happened around 8:50 am (0750 GMT) close to the northeastern town of Dalfsen, about 40 kilometres (24 miles) from the German border.
Television images showed several carriages lying on their side next to fields as emergency staff worked nearby.
“One person was killed… and I can confirm it was the driver,” mayor Han Noten told a press conference. Police later said he was a 49-year-old man from the town of Kampen.
A criminal investigation has been opened into why the crane was on the track, and the 21-year-old crane driver has been arrested and is being questioned by police.
Two people were taken to hospital, while four others were treated on the spot. Seven or eight other passengers escaped unscathed.
“The crash was violent,” the mayor added, saying the commuter train was “travelling at speed” when it hit the crane which was moving across the tracks over a “secure crossing”.
He said there were not many people on the train, adding that the service is often full in the evening, but relatively empty in the morning.
The Dutch safety board (OVV) has now opened an investigation into how the crash happened.
A witness told Dutch broadcaster NOS the crane was on caterpillar tracks and was moving very slowly as it crossed the railway line when the train arrived.
The driver of the crane had managed to jump out before the collision.
““The front of the train is completely destroyed,” one witness told NOS, adding the crane was in pieces.
Train services along the line have been cut and the disruption could last several days.
Infrastructure Minister Sharon Dijksma said she was “shocked” by the accident, the Dutch news agency ANP said.
The Netherlands’ worst train disaster happened on January 8, 1962, when two passenger trains crashed at Harmelen, near the central city of Utrecht, killing 93 people and injuring 52 others.
That accident happened in thick fog when a train driver missed a warning signal and the two trains hit head-on.
One person died and 117 others were injured in a collision near Amsterdam in April 2012 with reports later saying a driver failed to respect a stop sign.