Two others were moderately injured in the incident, which happened today at the Countdown supermarket on Cumberland Street in Dunedin.
Armed police are on the scene.
It is understood both staff and customers are among the injured.
“We walked past the aisle and we heard someone say, ‘he has got a knife’, so we just kept moving forward.”
Asked what the person looked like, the man said: “Curly hair, quite a messy little fellow.”
A witness said the offender was arrested and was walked to the Dunedin Central Police Station, next door to the supermarket, covered in blood, ODT reports.
RNZ reported a witness saying the offender was carrying two knives.
Countdown’s managing director Spencer Sonn said the company was “shocked and devastated” by the events.
A police spokesman said police responded to an incident on Cumberland Street at about 2.30pm (local time).
“Initial information suggests several people have been injured. One person has been taken into custody.”
The supermarket and car park have been cleared.
Mr Sonn said the company’s priority was “our injured team members and caring for our wider team in the wake of this extremely traumatic event”.
“We are deeply upset that customers who tried to help our team members were also injured,” he said.
“We have been concerned about the escalating violence towards our team, and this is something we have continued to talk and raise as an issue over the last year.
“Our amazing team comes to work to serve Kiwis every day, and our customers visit our stores knowing that they will be safe.
“We are heartbroken that this wasn’t the case today.”
The store would remain closed for at least the next two days, he said.