Regional health chief Antoni Comi said 54 people in all received medical treatment, with 51 taken to city hospitals. He said just one person was seriously injured.
"When the train arrived at Francia station it applied the brakes but at the same time it made a noisy crash," said Said Saharaui, a passenger on the train.
"The passengers were thrown to the floor," he said. "Even though the train did brake it wasn't until the crash when it reached a full stop."
Damage was done to the train's nose and between the train's first and second car.
RENFE rail company spokesman Antonio Carmona said there were no immediate details on the cause of the accident, which happened at 7.15 a.m. in Francia station. The train had started at the coastal town of Sant Vicenc de Calders, south of Barcelona.
In the immediate aftermath of the accident, emergency services gave several different figures for the number of passengers injured.
Comi said some 18 emergency service units were deployed. "We were able to attend to the injured very quickly," he said.
The accident came as RENFE rail workers staged a one-day strike. The affected train was running as part of minimum services ordered by the Public Works ministry.
Friday saw many people beginning their summer holidays, with Barcelona and its surrounding towns popular destinations.
Francia is Barcelona's second main train station after Sants, which handles the bullet train and most intercity services.
Report a typo to the ABC13 staff