All but two of the dead were children, aged around four to eight, said a senior security official in Assiut, near the site. One woman and the bus driver also died, he added.
The bus was broken in half by the force of the crash. Blood was spattered on the front of the engine and school bags and text books, some bloodstained, were strewn around.
Witnesses said barriers at the rail crossing were open when the train hit the bus. Transport Minister Mohamed Rashad and the head of the railways authority resigned, and President Mohamed Mursi said those responsible would be held to account.
Parents of the children held angry demonstrations near the scene of the accident, demanding the death penalty for those responsible, police said.
A state television correspondent described the scene as "terrifying" with the blood-splattered bodies of children on the ground, before they were taken to nearby Manfalut hospital.
In a brief television address, Mursi offered his condolences to the families and said those responsible would be referred to the public prosecutor.
"On my and the Egyptian people's behalf, I offer my sincerest condolences to the families," the president said. "I am referring all those responsible to the public prosecution."
Earlier, Mursi ordered the prime minister, the defense and health ministers and the Assiut governor "to offer all assistance to the families of the victims," the official news agency MENA said.
Prime Minister Hisham Qandil and his interior minister headed to Assiut, the news agency added.
Activist groups have called for the resignation of Qandil's cabinet.
"This accident proves the failure of Qandil's government and strengthens the demands for the resignation of a government that has failed, over several months, to produce anything to improve the suffering of Egyptians," the April 6 movement said.
The railway network's poor safety record stems largely from lack of maintenance and poor management. In Egypt's deadliest railway tragedy, the bodies of more than 360 passengers were recovered from a train after a fire in 2002.
Assiut Governor Yahya Keshk has ordered the "formation of a fact-finding committee" to probe Saturday's accident, but in similar tragedies in the past, such panels have done little to shed light on the details and less still to bring about accountability.
In a separate road accident, 12 people were killed and three injured when a truck smashed into a minibus near the Egyptian capital.
Officials said a speeding truck driving on the wrong side of the road crashed into a minibus carrying 15 passengers. The truck driver was arrested at the scene in the 6th October area, as rescue services worked to extract the bodies, police said.
Egyptians have long complained that the government has failed to deal with the country's chronic transport problems, with roads as poorly maintained as railway lines.
Earlier this month, five people were killed and dozens injured when two trains collided in Fayyum province, southwest of Cairo. A month earlier, 28 police died in the Sinai peninsula when the driver of their bus lost control at the wheel.