Can you say: "He was detained by work." It sounds a little bit like being in prison.
It's not used very often, but you can say "He has been detained at work", to mean that someone has been delayed briefly by some extra work meaning that he couldn't leave at the usual time. More informal would be something like "He's been held up briefly at work" (although "been held up" can also mean that someone has pointed a gun at him and stolen his money, which isn't much better than your prison problem with the original sentence! )
Perhaps better would be "He's stuck at work" or "He's been delayed at work".