Rail network officials said debris from a freight train - possibly a tarpaulin - hit a commuter train during a heavy storm, forcing it to brake suddenly.
Rescuers are working to free around 100 passengers who remain trapped on board.
The debris struck the commuter train - running from Odense to the capital Copenhagen - at about 07:35 local time (06:35 GMT).
"Ordinary Danes on their way to work or home from Christmas holidays have had their lives broken," Prime Minister Lars Løkke Rasmussen tweeted, saying the accident had "shaken us all".
Swedish Prime Minister Stefan Lofven also tweeted to say he had spoken to Mr Rasmussen after the "terrible accident".
Images from the scene show heavy goods vehicle trailers on the freight train with their sides torn off.
Emergency services reportedly struggled in the bad weather to reach the passenger train, which came to a stop on the bridge.
"There was a loud crash and the windows started smashing onto our heads," passenger Heidi Langberg Zumbusch told Danish broadcaster DR. "We flew down onto the floor, and then the train stopped."
Ms Zumbusch said fellow passengers told her the side of the carriage in front of theirs had been ripped off.
"We were lucky. The people in the carriage in front of us were not so lucky," she said.
There were 131 passengers and three crew members on board at the time of the accident.
An emergency centre has been set up at the western end of the bridge in the town of Nyborg.
The bridge is closed to both cars and trains towards the island of Funen, but car traffic toward Zealand has now reopened.
Tens of thousands of vehicles cross the bridge every day, and the storm had already caused several accidents on the road section earlier on Tuesday.
Denmark's capital city Copenhagen is on the island of Zealand, while the city of Odense lies on Funen to the west.