Part of the floor on the first level gave way, sending a cascade of debris crashing onto the ground level, a Jakarta police spokesman said, adding that it was an accident and not an explosion.
The director of the Indonesian stock exchange, Tito Sulistio, said those injured had been sent to hospital.
“At least 20 people have been injured, but I can definitely confirm there are no deaths,” Sulistio said on Metro TV.
Those hurt mostly sustained injuries to their legs and arms, Jakarta police spokesman Argo Yuwono said.
“The accident happened at the first floor… It’s a floor where many employes are passing by… There are some victims but they have been taken to a nearby hospital,” Yuwono told reporters.
He did not confirm how many people had been hurt in the accident, which took place in one of two towers in the modern complex.
Television footage showed several people lying on the ground and being carried outside the building, with crowds of panicked and screaming people being evacuated amid piles of debris.
Despite the chaos, stock exchange spokesman Rheza Andhika said trade continued as usual in the afternoon session.
The accident happened shortly after noon local time (0500 GMT) while the market was on its lunchtime break.
“There was a lound banging so people who were inside immediately ran outside of the building,” said Metro TV journalist Marlia Zein who was on the scene.
The Indonesia Stock Exchange is located in the centre of Jakarta, and the local office of the World Bank is also housed on the 12th floor of the complex, according to its website.
In 2000, powerful plastic explosives packed in the trunk of an old car caused a blast at the Exchange building, leaving 15 dead and several injured.
Download our app and read this and other great stories on the move. Available for Android and iOS.