TD are designed to fit the available space – that means the outer 100% width will override anything set on the child TD until they all fit. Lose the 100% outer width and you might get the inner ones working… though a better approach would probably be to add table-layout:fixed to the outer table.
Though 1000px? At that point I start to doubt you have tabular data or should even be using TABLE in the first place – much less the accessibility train wreck such a large size would be; so I’m hoping that’s just a test value.
To set column widths in a table you would attach the width to the <col> or <colgroup> tag by specifying a class on that tag and assigning a width to that class in the CSS.
The widths of the individual <td> tags can’t be set separately as all of the cells in a column must have the same width (subject to any applicable colspan attributes).
You should note that when when you use width on <col>, it’s basically only doing min-width. It will increase to fit.
Take this example. The key is that the <div> needed a width of 3,000px for the cols to each have 1000px <td>'s (actually it’s probbly 998px or something like that due to borders)