The incident happened during the morning rush hour at the Francia station, in the city centre.
Reports said the train did not brake properly when entering the station, hitting the buffers at the platform.
Dozens of emergency personnel were sent to the station, with most of the injured being treated on the platform.
Emergency services said as well as the seriously wounded person, who does not have life-threatening injuries, 19 people were moderately hurt.
They are being treated in hospital. Among them is the driver, who is said to be in a state of shock.
The remainder were lightly injured.
"At the moment of impact I had the feeling of experiencing an earthquake," one passenger, Lidia, told La Vanguardia newspaper (in Spanish). She said she had been in the front carriage.
"People were swaying back and forth and colliding into each other. Many people fell to the ground because people were standing up and I saw several people with cuts to the head and face from the blows they suffered when they fell."
Among those hurt were three citizens from France and Romania, local authorities said. Their respective consulates have been informed.
The accident happened at 07:15 (05:15 GMT) after the train had travelled from the village of Sant Vicenç de Calders, some 60km (37 miles) to Barcelona's south-west.
Íñigo de la Serna, the minister for public works, has travelled to Barcelona, in the country's north-eastern Catalonia region, to oversee the rescue operation.
The state-run railway firm Adif said an investigation had been opened.
At least 54 people have been injured, one seriously, after a train crashed at a station in the Spanish city of Barcelona, officials say.