The trains collided near the station in Olten, 45 kilometres (30 miles) southeast of Basel, a police spokesman told AFP.
“Twenty-eight people were in the two trains at the time of the accident. Two of them were injured including the driver” of one of the trains, said a police statement.
A helicopter and several ambulances were sent to the site.
A spokesman for the Swiss railway company CFF described the damage as “relatively substantial”.
Rail traffic was expected to be disrupted until Friday afternoon.