None of this is just simple shell script code
I think you need to reconsider some of your assumptions about windows files. Once you do this: it is no longer a csv file that Excel can read. You will have retain and also email a separate real csv file for excel users. A csv file is not meant to be read as display in a PC mail window with an html rendering engine. csv and html are two entirely different beasts. And in windows: to get fonts, as I already said, requires special formatting. Not csv.
You'll need to write a small perl script. There are some perl tools already out there:
Text::InHTML - search.cpan.org
This simply converts text to html, you can use sed to add extra font & bold tags. It creates everything as the same font.
.xls format files directly support fonts, bold colors, etc.
You can download staroffice. It has an API that will let you create .xls compatible files for windows office.
This requires a lot of C coding. There are similar perl modules, they require perl code to make them work.
Someone may have written a big set of shell/perl scripts to do some of this, but I do not know anything about it.
Because of the way Microsoft chose to format .xls files, most shell tools are somewhat clumsy for creating packed structs. python, perl, and ruby can all do that for you easily.