Вот тебе велосипед, сляпаный мной только-что.)
Прост как лом, какие баги - говори.)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<style type="text/css">
.fHeader * {margin:0;padding:0}
.fHeader {
padding-top:24px; /* высота загаловка, соот-но если больше 1 строки-увеличить. */
float:left;
position:relative;
overflow:hidden;
background:#ddf;
border-right:1px solid #000;
}
.fHeaderScroll {
width:416px;
height:90px;
overflow:auto;
border-bottom:1px solid #000;
}
.fHeader table {
width:400px;
border-collapse:collapse;
}
.fHeader td, .fHeader tr {
border:1px solid #000;
overflow:hidden
}
.fHeaderHead {
height:0;
overflow:hidden;
text-align:left
}
.fHeaderHead div {
height:22px; /* высота загаловка (-2px на border), соот-но если больше 1 строки-увеличить. */
position:absolute;
top:0;
background:#ddf;
width:300%;
border:1px solid #000;
margin-left:-1px;
}
.fHeaderFirst, .fHeaderFirst td {
border-top:0 !important
}
.fHeaderLast, .fHeaderLast td {
border-bottom:0 !important
}
</style>
</head>
<body>
<div class="fHeader">
<div class="fHeaderScroll">
<table style="">
<col style="background:#ddf">
<col style="background:#fdf">
<col style="background:#dff">
<tr class="fHeaderFirst">
<td>
<div class="fHeaderHead">
<div style="background:#ddf">header 1</div>
header 1
</div>
1
</td>
<td>
<div class="fHeaderHead">
<div style="background:#fdf">header 2</div>
header 2
</div>
2
</td>
<td>
<div class="fHeaderHead">
<div style="background:#dff">header 3456789</div>
header 3456789
</div>
3
</td>
</tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr class="fHeaderLast"><td>1</td><td>2</td><td>3</td></tr>
</table>
</div>
</div>
</body>
</html>