An additional 14 people were injured -- 10 of whom are in critical condition at local hospitals.
The shooter was also killed by police, bringing the total number of fatalities to four.
Authorities first got calls about a man shooting from a vehicle in Newton about 5 p.m., the Harvey County Sheriff's Office said.
Minutes later, there were reports of a shooting at Excel Industries, which makes lawn care equipment in Hesston, Kansas.
"Everybody says it can't happen here," Walton said. "And here we are. It happened here."
'A mellow guy'
Matt Jarrell, a painter at Excel, told CNN that Cedric Ford -- his co-worker and friend -- is the suspected shooter.
"Never in a million years" would he expect his friend to do something like this, Jarrell told CNN affiliate KSNW.
"He was a mellow guy," Jarrell said. "He was somebody I could talk to about anything."
Moments before the two clocked in at work at the same time Thursday, they were talking about Ford's new truck, Jarrell said.
About two hours into his shift, it was time for Jarrell's break. Ford was supposed to relieve him, he said, but he was nowhere to be seen.
Jarrell went outside, and the new truck were gone. A few minutes later, Ford returned in a different car, he said.
"He just parked and then opened up the door, hopped out with the gun on, strapped-up and everything," Jarrell said.
Ford yelled "hey" at a bystander nearby and then shot that person.
"I witnessed him shoot the shots. I saw the shell casings come out of the assault rifle," Jarrell said. "I mean, that vivid. I can still see it."
Authorities confirmed the shooter was an employee at Excel, but did not release a name or a motive. Walton said terrorism is not a factor.
"There was some things that triggered this particular individual," he said, declining to get into details.
Dispatchers got the first call at 4:57 p.m. local time with reports of a male in a gray Dodge opening fire, according to Walton.
A man was shot in the shoulder, the sheriff's office said in a news release.
About two miles north, another person was reportedly shot in the leg.
Minutes later, authorities received multiple reports of shots fired from Excel, where an estimated 150 people were working at the time, according to Walton.
Matt Gerald told The Hesston Record newspaper
that he was outside on break when he saw the shooter.
"I saw the shooter get out of his truck, shoot someone down and go into the building," Gerald said. "I was flabbergasted. I was at a loss for words."
The gunman had a long gun and a pistol, according to Walton. He said the victims appear to have been randomly targeted.
A witness identified as Dylan said he was unloading pallets in the back of the building at the time of the shooting.
"We heard a pop, pop, and we thought it was just metal falling on the ground, and then the doors opened, people started screaming, coming out," he told KSNW said. "We really didn't know what was going on."
As he spoke, Dylan rubbed his hands, which had blood on them. He said he'd tried to help a man who'd been shot.
Authorities were on the scene at 5:06 p.m. local time -- minutes after the first reports came in, according to a timeline shown to reporters.
The first officer to arrive on the scene was alone, and single-handedly took down the shooter.
"Even though he took fire, he went inside of that place and saved multiple, multiple lives," Walton said. "[He's] a hero, as far as I'm concerned."
Walton said authorities would release the name of the officer who shot the suspect Friday.
No law enforcement official was injured.
'This will take some time'
A witness told CNN affiliate KWCH
that outside the shooting, many cried, hugged and tried to find answers.
"I've never experienced that before," he said as he choked up. "You think you're safe at work and you're not. It's just scary."
Gov. Sam Brownback offered his condolences to the people of Hesston, which is 35 miles north of Wichita. He ordered flags flown at half-staff Friday.
"This will take some time to work through," Walton said.
"This is just a horrible incident that's happened here," the sheriff said. "It's going to be a lot of sad people before this is all over."