ist zwar schon zu spät, aber ich mach das immer so:
Erst konzeptionell: Nicht die Zellen (TDs) haben border, sondern die Tabelle hat eine Hintergrundfarbe und ein cellspacing von 1. Dann einfach eine weitere Hintergrundfarbe für die Zellen definieren - et voila. Das gibt m. E. nach weniger Probleme zwischen den Browsern + du kannst z. B. auch eine Hintergrundgrafik mit Verlauf für den table definieren und der wird auf die (Fake)borders übertragen. Sieht cool aus 
Ich glaube ein (minimalistisches) Beispiel sagt mehr als 1000 Worte:
Einfach vollständig via Copy&Paste in eine Datei einfügen, als test.html speichern und auf den Browser per Drag&Drop fallen lassen (oder runterladen)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">
body { background-color: #eee; }
table { background-color: #000; }
td { background-color: #fff; }
</style>
</head>
<body>
<table border="0" bordercolor="#FFCC00" width="600" cellpadding="0" cellspacing="1">
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
</table>
</body>
</html>
Alles anzeigen
Anbei die HTML-Datei als ZIP