Create an HTML table: Difference between revisions

m
(Added Modula-3)
 
(11 intermediate revisions by 9 users not shown)
Line 11:
{{trans|Python}}
 
<langsyntaxhighlight lang="11l">UInt32 seed = 0
F nonrandom(n)
:seed = 1664525 * :seed + 1013904223
Line 25:
V rows = (1..5).map(i -> tag(‘tr’, tag(‘td’, i, ‘ style="font-weight: bold;"’)‘’(0.<3).map(j -> tag(‘td’, rand9999())).join(‘’))).join("\n")
V table = tag(‘table’, "\n"header‘’rows"\n")
print(table)</langsyntaxhighlight>
 
{{out}}
Line 41:
=={{header|360 Assembly}}==
{{trans|BBC BASIC}}
<langsyntaxhighlight lang="360asm">* Create an HTML table 19/02/2017
CREHTML CSECT
USING CREHTML,R13
Line 103:
XDEC DS CL12
YREGS
END CREHTML</langsyntaxhighlight>
{{out}}
<pre>
Line 165:
 
=={{header|Action!}}==
<langsyntaxhighlight Actionlang="action!">DEFINE ROW_COUNT="4"
DEFINE COL_COUNT="3"
 
Line 202:
PrintE("</body>")
PrintE("</html>")
RETURN</langsyntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Create_an_HTML_table.png Screenshot from Atari 8-bit computer]
Line 228:
We define a generic package to output HTML tables:
 
<langsyntaxhighlight Adalang="ada">with Ada.Strings.Unbounded;
 
generic
Line 246:
procedure Print(Items: Item_Array; Column_Heads: Header_Array);
 
end HTML_Table;</langsyntaxhighlight>
 
The implementation of the package:
 
<langsyntaxhighlight Adalang="ada">package body HTML_Table is
procedure Print(Items: Item_Array; Column_Heads: Header_Array) is
Line 305:
end Print;
 
end HTML_Table;</langsyntaxhighlight>
 
Here is the main program, using an instance of HTML_Table:
 
<langsyntaxhighlight Adalang="ada">with Ada.Text_IO, Ada.Numerics.Discrete_Random, HTML_Table;
 
procedure Test_HTML_Table is
Line 340:
T.Print(Items => The_Table,
Column_Heads => (T.Convert("X"), T.Convert("Y"), T.Convert("Z")));
end Test_HTML_Table;</langsyntaxhighlight>
 
 
Each time you run the program, you get different random values for the table. {{out}}
<langsyntaxhighlight lang="html5"><table>
<thead align = "right">
<tr><th></th><td>X</td><td>Y</td><td>Z</td></tr>
Line 354:
<tr><td> 4</td><td> 31</td><td> 6897</td><td> 8265</td></tr>
</tbody>
</table></langsyntaxhighlight>
 
{{out}}
Line 367:
{{trans|ALGOL 68}}
Tested with Agena 2.9.5 Win32
<langsyntaxhighlight lang="agena">notNumbered := 0; # possible values for html table row numbering
numberedLeft := 1; # " " " " " " "
numberedRight := 2; # " " " " " " "
Line 421:
t.data := [ [ 1001, 1002, 1003 ], [ 21, 22, 23 ], [ 201, 202, 203 ] ];
writeHtmlTable( io.stdout, t )
epocs</langsyntaxhighlight>
{{out}}
<table cellspacing='0' colspacing='0' border='1'>
Line 451:
 
=={{header|ALGOL 68}}==
<langsyntaxhighlight lang="algol68">INT not numbered = 0; # possible values for HTMLTABLE row numbering #
INT numbered left = 1; # " " " " " " #
INT numbered right = 2; # " " " " " " #
Line 528:
headings OF t := ( "A", "B", "C" );
data OF t := ( ( 1001, 1002, 1003 ), ( 21, 22, 23 ), ( 201, 202, 203 ) );
write html table( stand out, t )</langsyntaxhighlight>
{{out}}
<table cellspacing="0" colspacing="0" border="1">
Line 557:
</table>
 
=={{header|Applesoft BASIC}}==
{{trans|BBC BASIC}}
Untokenized, this program is only about a dozen bytes shorter than the HTML that it outputs.
<syntaxhighlight lang="gwbasic"> 0 NCOLS = 3:NROWS = 4
1 PRINT "<HTML><HEAD></HEAD><BODY>"
2 PRINT "<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0>"
3 FOR ROW = 0 TO NROWS
40 PRINT " <TR><TH>";
50 IF ROW THEN PRINT ROW;
60 PRINT "</TH>"
70 FOR COL = 1 TO NCOLS
800 PRINT MID$ (" ",1,(COL = 1 OR ROW) * 99) MID$ ("<TH>" + CHR$ (87 + COL) + "</TH>",1,(ROW = 0) * 99) MID$ ("<TD ALIGN=RIGHT>" + STR$ ( INT ( RND (1) * 10000)) + "</TD>",1,(ROW > 0) * 99);
900 PRINT MID$ ("</TR>",1,(COLS = NCOLS) * 99) MID$ ( CHR$ (13),1,ROW OR COL = NCOLS);
10000 NEXT COL,ROW: PRINT "</TABLE></BODY></HTML>";</syntaxhighlight>
{{out}}
<pre>
<HTML><HEAD></HEAD><BODY>
<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=0>
<TR><TH></TH>
<TH>X</TH><TH>Y</TH><TH>Z</TH></TR>
<TR><TH>1</TH>
<TD ALIGN=RIGHT>3326</TD>
<TD ALIGN=RIGHT>7702</TD>
<TD ALIGN=RIGHT>5883</TD></TR>
<TR><TH>2</TH>
<TD ALIGN=RIGHT>832</TD>
<TD ALIGN=RIGHT>9821</TD>
<TD ALIGN=RIGHT>1212</TD></TR>
<TR><TH>3</TH>
<TD ALIGN=RIGHT>9054</TD>
<TD ALIGN=RIGHT>2895</TD>
<TD ALIGN=RIGHT>2420</TD></TR>
<TR><TH>4</TH>
<TD ALIGN=RIGHT>3026</TD>
<TD ALIGN=RIGHT>4862</TD>
<TD ALIGN=RIGHT>1416</TD></TR>
</TABLE></BODY></HTML>
</pre>
=={{header|Arturo}}==
 
<langsyntaxhighlight lang="rebol">table: function [content]
-> join @["<table>" join @content "</table>"]
 
Line 579 ⟶ 617:
row 4
row 5
]</langsyntaxhighlight>
 
{{out}}
Line 587 ⟶ 625:
=={{header|AutoHotkey}}==
{{trans|C}}
<langsyntaxhighlight AutoHotkeylang="autohotkey">out = <table style="text-align:center; border: 1px solid"><th></th><th>X</th><th>Y</th><th>Z</th><tr>
Loop 4
out .= "`r`n<tr><th>" A_Index "</th><td>" Rand() "</td><td>" Rand() "</td><td>" Rand() "</tr>"
Line 596 ⟶ 634:
Random, n, 1, % u
return n
}</langsyntaxhighlight>
{{out}}
<table style="text-align:center; border: 1px solid"><th></th><th>X</th><th>Y</th><th>Z</th><tr>
Line 607 ⟶ 645:
=={{header|AWK}}==
<langsyntaxhighlight AWKlang="awk">#!/usr/bin/awk -f
BEGIN {
print "<table>\n <thead align = \"right\">"
Line 615 ⟶ 653:
}
print " </tbody>\n</table>\n"
}</langsyntaxhighlight>
{{out}}
<pre><table>
Line 638 ⟶ 676:
=={{header|Batch File}}==
This will overwrite any file by the name of "table.html" in the current directory.
<langsyntaxhighlight lang="dos">
@echo off
setlocal enabledelayedexpansion
Line 678 ⟶ 716:
) > table.html
start table.html
</syntaxhighlight>
</lang>
{{out}}
<pre>
Line 743 ⟶ 781:
{{works with|BBC BASIC for Windows}}
Uses BBC BASIC's *spool command to create a file.
<langsyntaxhighlight lang="bbcbasic"> ncols% = 3
nrows% = 4
Line 773 ⟶ 811:
SYS "ShellExecute", @hwnd%, 0, "temp.htm", 0, 0, 1
</syntaxhighlight>
</lang>
{{out}}
<pre>&lt;html&gt;&lt;head&gt;&lt;/head&gt;&lt;body&gt;
Line 796 ⟶ 834:
<code>Tag</code> is a helper function which encloses the left argument in the right argument tag type.
 
<langsyntaxhighlight lang="bqn">Tag ← {∾"<"‿𝕨‿">"‿𝕩‿"</"‿𝕨‿">"}
 
•Show "table" Tag ∾∾⟜(@+10)¨("tr"Tag∾)¨⟨"th"⊸Tag¨ ""<⊸∾⥊¨"XYZ"⟩∾("td" Tag •Fmt)¨¨ 0‿0‿1‿2 + 1‿3‿3‿3 × 4/⟨↕4⟩</langsyntaxhighlight><syntaxhighlight lang ="bqn">"<table><tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td>0</td><td>1</td><td>2</td><td>3</td></tr>
<tr><td>0</td><td>3</td><td>6</td><td>9</td></tr>
<tr><td>1</td><td>4</td><td>7</td><td>10</td></tr>
<tr><td>2</td><td>5</td><td>8</td><td>11</td></tr>
</table>"</langsyntaxhighlight>
=={{header|Bracmat}}==
To make this interesting, the table is created as a Bracmat structure and then converted to XML by a library. This has the advantage that one doesn't have to worry about HTML entities and encoding issues. The contents of the cells are generated by a function that is instantiated with a starting number when the function makeTable is called. Notice the absence of loops.
<langsyntaxhighlight lang="bracmat">( ( makeTable
= headTexts
minRowNr
Line 815 ⟶ 853:
Generator
Table
. !arg:(?headTexts.?minRowNr.?maxRowNr.?Generator)
. get$"xmlio.bra" { A library that converts from Bracmat format to XML or HTML }
& !arg:(?headTexts.?minRowNr.?maxRowNr.?Generator)
& ( headCells
= cellText
Line 859 ⟶ 896:
)
: ?Table
& str$((XMLIO.convert)toML$!Table) { Call library function to create { Create HTML }
)
& makeTable
Line 871 ⟶ 908:
)
)
)</langsyntaxhighlight>
{{out}}
<pre>&lt;table&gt;&lt;thead align="right"&gt;
Line 883 ⟶ 920:
 
=={{header|C}}==
<langsyntaxhighlight Clang="c">#include <stdio.h>
#include <stdlib.h>
 
Line 898 ⟶ 935:
 
return 0;
}</langsyntaxhighlight>
{{out}} (wiki doesn't like tbody/thead tags):<table style="text-align:center; border: 1px solid"><th></th><th>X</th><th>Y</th><th>Z</th><tr><th>0</th><td>2777</td><td>886</td><td>9383</td></tr><tr><th>1</th><td>8335</td><td>7793</td><td>6915</td></tr><tr><th>2</th><td>6649</td><td>492</td><td>5386</td></tr><tr><th>3</th><td>27</td><td>2362</td><td>1421</td></tr></table>
 
=={{header|C sharp|C#}}==
<langsyntaxhighlight lang="csharp">using System;
using System.Text;
 
Line 935 ⟶ 972:
}
}
}</langsyntaxhighlight>
 
=== More modern version ===
<langsyntaxhighlight lang="csharp">using System;
using System.Text;
using System.Xml;
Line 985 ⟶ 1,022:
}
}
</syntaxhighlight>
</lang>
 
=={{header|C++}}==
<langsyntaxhighlight lang="cpp">#include <fstream>
#include <boost/array.hpp>
#include <string>
Line 1,055 ⟶ 1,092:
htmltable.close( ) ;
return 0 ;
}</langsyntaxhighlight>
{{out}} ( of testtable.html ):
<LANGsyntaxhighlight html5lang="html"5><html>
<head></head>
<body>
Line 1,074 ⟶ 1,111:
</body>
</html>
</syntaxhighlight>
</LANG>
 
=={{header|Clojure}}==
Using Hiccup (https://github.com/weavejester/hiccup):
<langsyntaxhighlight lang="clojure">(ns rosettacode.html-table
(:use 'hiccup.core))
 
Line 1,088 ⟶ 1,125:
(<tr> :th ["" \X \Y \Z])
(for [n (range 1 4)]
(->> #(rand-int 10000) (repeatedly 3) (cons n) (<tr> :td)))])</langsyntaxhighlight>
 
=={{header|CoffeeScript}}==
<langsyntaxhighlight lang="coffeescript">
# This is one of many ways to create a table. CoffeeScript plays nice
# with any templating solution built for JavaScript, and of course you
Line 1,124 ⟶ 1,161:
html = table header_row, rows
console.log html
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,137 ⟶ 1,174:
 
=={{header|COBOL}}==
<syntaxhighlight lang="cobol">
<lang COBOL>
IDENTIFICATION DIVISION.
PROGRAM-ID. Table.
Line 1,253 ⟶ 1,290:
END-PROGRAM.
</syntaxhighlight>
</lang>
 
=={{header|Common Lisp}}==
Using Closure-HTML (https://common-lisp.net/project/closure/closure-html/) installed by the code itself via QuickLisp (http://quicklisp.org/).
 
<syntaxhighlight lang="common lisp">
<lang Common Lisp>
(ql:quickload :closure-html)
(use-package :closure-html)
Line 1,271 ⟶ 1,308:
,@(loop repeat 3 collect `(td nil ,(format nil "~a" (random 10000)))))))
(make-string-sink))
</syntaxhighlight>
</lang>
 
{{out}}
Line 1,278 ⟶ 1,315:
=={{header|D}}==
{{trans|C}}
<langsyntaxhighlight lang="d">void main() {
import std.stdio, std.random;
 
Line 1,287 ⟶ 1,324:
i, uniform(0,1000), uniform(0,1000), uniform(0,1000));
writeln("</table>");
}</langsyntaxhighlight>
{{out}}
<table style="text-align:center; border: 1px solid">
Line 1,298 ⟶ 1,335:
 
=={{header|Delphi}}==
<langsyntaxhighlight Delphilang="delphi">program CreateHTMLTable;
 
{$APPTYPE CONSOLE}
Line 1,320 ⟶ 1,357:
Writeln('</table>');
Readln;
end.</langsyntaxhighlight>
 
{{out}}
<langsyntaxhighlight lang="html5"><table>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td>1</td><td>7371</td><td>2659</td><td>1393</td></tr>
Line 1,329 ⟶ 1,366:
<tr><td>3</td><td>1316</td><td>1599</td><td>2086</td></tr>
<tr><td>4</td><td>4785</td><td>6612</td><td>5042</td></tr>
</table></langsyntaxhighlight>
 
=={{header|EasyLang}}==
<syntaxhighlight>
print "<table border=1>"
write "<tr><th>"
for c$ in strchars "XYZ"
write "<th>" & c$
.
print ""
for r to 3
write "<tr align=right><td>" & r
for c to 3
write "<td>" & randint 200
.
print ""
.
print "</table>"
</syntaxhighlight>
{{out}}
<table border=1>
<tr><th><th>X<th>Y<th>Z
<tr align=right><td>1<td>18<td>151<td>118
<tr align=right><td>2<td>190<td>97<td>59
<tr align=right><td>3<td>61<td>179<td>127
</table>
 
=={{header|EchoLisp}}==
<langsyntaxhighlight lang="scheme">
;; styles -
(style 'td "text-align:right")
Line 1,359 ⟶ 1,421:
(for ((i 1000)(row (rest table))) (emit-tag 'tr h-row (cons i row))))
</syntaxhighlight>
</lang>
{{out}}
<langsyntaxhighlight lang="scheme">
(define my-table '(("" X Y Z) (-1111 111 11) (22 -222 2222) (4422 0 42) (33 333 3333) (6666 666 66)))
 
Line 1,367 ⟶ 1,429:
(emit-tag 'table h-table my-table)
(string-join (stack->list html) " ")
</syntaxhighlight>
</lang>
 
<table style='border-spacing: 10px;border:1px solid red'> <table style='border-spacing: 10px;border:1px solid red'> <tr style='undefined'> <th style='color:blue;'> </th> <th style='color:blue;'> X </th> <th style='color:blue;'> Y </th> <th style='color:blue;'> Z </th> </tr> <tr style='undefined'> <td style='text-align:right'> 0 </td> <td style='text-align:right'> -1111 </td> <td style='text-align:right'> 111 </td> <td style='text-align:right'> 11 </td> </tr> <tr style='undefined'> <td style='text-align:right'> 1 </td> <td style='text-align:right'> 22 </td> <td style='text-align:right'> -222 </td> <td style='text-align:right'> 2222 </td> </tr> <tr style='undefined'> <td style='text-align:right'> 2 </td> <td style='text-align:right'> 4422 </td> <td style='text-align:right'> 0 </td> <td style='text-align:right'> 42 </td> </tr> <tr style='undefined'> <td style='text-align:right'> 3 </td> <td style='text-align:right'> 33 </td> <td style='text-align:right'> 333 </td> <td style='text-align:right'> 3333 </td> </tr> <tr style='undefined'> <td style='text-align:right'> 4 </td> <td style='text-align:right'> 6666 </td> <td style='text-align:right'> 666 </td> <td style='text-align:right'> 66 </td> </tr> </table>
Line 1,373 ⟶ 1,435:
=={{header|Elixir}}==
 
<langsyntaxhighlight Elixirlang="elixir">defmodule Table do
defp put_rows(n) do
Enum.map_join(1..n, fn i ->
Line 1,391 ⟶ 1,453:
end
 
IO.puts Table.create_table</langsyntaxhighlight>
 
{{out}}
<langsyntaxhighlight lang="html5"><table border=1>
<th></th><th>X</th><th>Y</th><th>Z</th>
<tr align=right><th>1</th><td>1362</td><td>1289</td><td>357</td></tr>
<tr align=right><th>2</th><td>1161</td><td>1345</td><td>1176</td></tr>
<tr align=right><th>3</th><td>391</td><td>62</td><td>609</td></tr>
</table></langsyntaxhighlight>
 
{{out}}
Line 1,411 ⟶ 1,473:
=={{header|Erlang}}==
Both external_format/1 and html_table/3 are used by [[CSV_to_HTML_translation]]. Keep backwards compatibility when changing or change both.
<syntaxhighlight lang="erlang">
<lang Erlang>
-module( create_html_table ).
 
Line 1,437 ⟶ 1,499:
 
remove_quoutes( String ) -> lists:flatten( string:tokens(String, "\"") ).
</syntaxhighlight>
</lang>
{{out}}
<table border=1 cellpadding=10><tr><th> </th><th>X</th><th>Y</th><th>Z</th></tr><tr><td>1</td><td>6</td><td>563</td><td>476</td></tr><tr><td>2</td><td>401</td><td>310</td><td>59</td></tr><tr><td>3</td><td>579</td><td>990</td><td>331</td></tr></table>
 
=={{header|Euphoria}}==
<langsyntaxhighlight lang="euphoria">puts(1,"<table>\n")
puts(1," <tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>\n")
for i = 1 to 3 do
Line 1,451 ⟶ 1,513:
puts(1,"</tr>\n")
end for
puts(1,"</table>")</langsyntaxhighlight>
 
{{out}}
<langsyntaxhighlight lang="html5"><table>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td>1</td><td>7978</td><td>7376</td><td>2382</td></tr>
<tr><td>2</td><td>3632</td><td>1947</td><td>8900</td></tr>
<tr><td>3</td><td>4098</td><td>1563</td><td>2762</td></tr>
</table></langsyntaxhighlight>
 
=={{header|F_Sharp|F#}}==
<langsyntaxhighlight lang="fsharp">open System.Xml
 
type XmlDocument with
Line 1,505 ⟶ 1,567:
let xw = new XmlTextWriter(System.Console.Out)
xw.Formatting <- Formatting.Indented
xd.WriteContentTo(xw)</langsyntaxhighlight>
{{out}}
(table part only)
Line 1,537 ⟶ 1,599:
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">USING: html.streams literals prettyprint random xml.writer ;
 
: rnd ( -- n ) 10,000 random ;
Line 1,547 ⟶ 1,609:
${ 3 rnd rnd rnd }
}
[ simple-table. ] with-html-writer pprint-xml</langsyntaxhighlight>
{{out}}
<langsyntaxhighlight lang="html5"><table style="display: inline-table; border-collapse: collapse;">
<tr>
<td valign="top" style="border: 1px solid #cccccc; padding: 2px; ">
Line 1,630 ⟶ 1,692:
</tr>
</table>
<br/></langsyntaxhighlight>
 
=={{header|Forth}}==
Line 1,638 ⟶ 1,700:
Although this example is not a complete HTML interpreter, with these few extensions we can demonstrate mixing HTML tags with Forth code to generate the specified random numbers in-line with HTML. We could even use Forth to compile tags together and make HTML generating sub-routines like NETREXX does.
 
<langsyntaxhighlight Forthlang="forth">include random.hsf
 
\ parser routines
Line 1,703 ⟶ 1,765:
</tr>
</table>
</syntaxhighlight>
</lang>
{{Output}}
<pre>
Line 1,789 ⟶ 1,851:
 
===Source===
<syntaxhighlight lang="fortran">
<lang Fortran>
MODULE PARAMETERS !Assorted oddities that assorted routines pick and choose from.
CHARACTER*5 I AM !Assuage finicky compilers.
Line 2,280 ⟶ 2,342:
CALL HTMLSTOP
END
</syntaxhighlight>
</lang>
===Output===
As yet another demonstration of the vagaries of text interpretation, notice that the blank column heading, carefully converted to nbsp; (no leading ampersand here!) does ''not'' appear when the page is displayed, despite the "pre-formatted" hint.
Line 2,338 ⟶ 2,400:
 
=={{header|FreeBASIC}}==
<langsyntaxhighlight lang="freebasic">Dim As Integer ncols = 3, nrows = 4
Dim As Integer col, row
 
Line 2,363 ⟶ 2,425:
Print "</table>"
Print "</body>" & Chr(10) & "</html>"
Sleep</langsyntaxhighlight>
 
 
Line 2,369 ⟶ 2,431:
 
=={{header|FutureBasic}}==
<langsyntaxhighlight lang="futurebasic">
include "NSLog.incl"
 
Line 2,375 ⟶ 2,437:
 
local fn BuildHTMLTable
NSinteger i, j
'~'1
CFMutableStringRef mutStr = fn MutableStringWithCapacity(0)
NSinteger i, j
CFMutableStringRef mutStr = fn MutableStringWithCapacity(0)
MutableStringAppendString( mutStr, @"<table style=\"width:15%\">\n" )
 
MutableStringAppendString( mutStr, @"<table style=\"width:15%\" <tr><th></th>\n" )
for j = 1 to 3
MutableStringAppendString( mutStr, @" <tr><th></th>" )
MutableStringAppendFormat( mutStr, @"<th>%c</th>", _W + j )
for j = 1 to 3
next
MutableStringAppendFormat( mutStr, @"<th>%c</th>", _W + j )
MutableStringAppendString( mutStr, @"</tr>\n" )
next
for i = 1 to 3
MutableStringAppendString( mutStr, @"</tr>\n" )
MutableStringAppendFormat( mutStr, @" <tr><td>%d</td>", i )
for i = 1 to 3
for j = 1 to 3
MutableStringAppendFormat( mutStr, @" <tr><td>%d</td>", i )
MutableStringAppendFormat( mutStr, @"<td>%d</td>", rnd( 10000 ) )
for j = 1 to 3
next
MutableStringAppendFormat( mutStr, @"<td>%d</td>", rnd( 10000 ) )
MutableStringAppendString( mutStr, @"</tr>\n" )
next
next
MutableStringAppendString( mutStr, @"</tr>\n" )
MutableStringAppendString( mutStr, @"</table>" )
next
NSLog( @"%@", mutStr )
MutableStringAppendString( mutStr, @"</table>" )
NSLog( @"%@", mutStr )
end fn
 
Line 2,399 ⟶ 2,460:
 
HandleEvents
</syntaxhighlight>
</lang>
 
{{ HTML code output:}}
<pre>
Line 2,419 ⟶ 2,481:
=={{header|Go}}==
html/template is a package in the standard library.
<langsyntaxhighlight lang="go">package main
 
import (
Line 2,454 ⟶ 2,516:
fmt.Println(err)
}
}</langsyntaxhighlight>
{{out}}
<langsyntaxhighlight lang="html5"><table>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td>0</td><td>0</td><td>1</td><td>2</td></tr>
Line 2,462 ⟶ 2,524:
<tr><td>2</td><td>6</td><td>7</td><td>8</td></tr>
<tr><td>3</td><td>9</td><td>10</td><td>11</td></tr>
</table></langsyntaxhighlight>
 
=={{header|Groovy}}==
<langsyntaxhighlight lang="groovy">import groovy.xml.MarkupBuilder
 
def createTable(columns, rowCount) {
Line 2,484 ⟶ 2,546:
}
 
println createTable(['X', 'Y', 'Z'], 3)</langsyntaxhighlight>
{{out}}
<table style='border:1px solid;text-align:center;'>
Line 2,516 ⟶ 2,578:
{{libheader|blaze-html}}
 
<langsyntaxhighlight lang="haskell">import Data.List (unfoldr)
import Control.Monad (forM_)
 
Line 2,542 ⟶ 2,604:
main = do
g <- getStdGen
putStrLn $ renderHtml $ makeTable ["", "X", "Y", "Z"] 3 g</langsyntaxhighlight>
 
Or using the Shakespeare templates from the Yesod web framework.
{{libheader|shakespeare}}
<langsyntaxhighlight lang="haskell">{-# LANGUAGE QuasiQuotes #-}
 
import Data.List (elemIndex)
Line 2,597 ⟶ 2,659:
rowsOf _ [] = []
rowsOf n xs = take n xs : rowsOf n (drop n xs)
randomValues = randomRs (1, 9999) <$> getStdGen</langsyntaxhighlight>
 
=={{header|Icon}} and {{header|Unicon}}==
<langsyntaxhighlight Iconlang="icon">procedure main()
printf("<table>\n <tr><th></th><th>X</th><th>Y</th><th>Z</th>")
every r := 1 to 4 do {
Line 2,609 ⟶ 2,671:
end
 
link printf </langsyntaxhighlight>
 
{{libheader|Icon Programming Library}}
Line 2,615 ⟶ 2,677:
 
{{out}}
<langsyntaxhighlight lang="html5"><table>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td>1</td><td>3129</td><td>3294</td><td>7013</td></tr>
Line 2,621 ⟶ 2,683:
<tr><td>3</td><td>7001</td><td>963</td><td>4183</td></tr>
<tr><td>4</td><td>1695</td><td>1158</td><td>1240</td></tr>
</table></langsyntaxhighlight>
 
=={{header|J}}==
Line 2,627 ⟶ 2,689:
We can define:
 
<langsyntaxhighlight lang="j">ele=:4 :0
nm=. x-.LF
lf=. x-.nm
Line 2,636 ⟶ 2,698:
rows=. 'td' <@ele"1 ":&.>y
'table' ele ('tr',LF) <@ele ('th' ele x); rows
)</langsyntaxhighlight>
 
With these definitions:
 
<langsyntaxhighlight lang="j"> ('';;:'X Y Z') hTbl ":&.>(i.5),.i.5 3
<table><tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td>0</td><td>0</td><td>1</td><td>2</td></tr>
Line 2,647 ⟶ 2,709:
<tr><td>3</td><td>9</td><td>10</td><td>11</td></tr>
<tr><td>4</td><td>12</td><td>13</td><td>14</td></tr>
</table></langsyntaxhighlight>
 
Or, if running under jhs:
 
<langsyntaxhighlight lang="j">jhtml ('';;:'X Y Z') hTbl ":&.>(i.5),.i.5 3</langsyntaxhighlight>
 
to display the table inline, as html.
 
=={{header|Java}}==
<syntaxhighlight lang="java">
import java.util.Random;
</syntaxhighlight>
<syntaxhighlight lang="java">
String generateHTMLTable() {
StringBuilder string = new StringBuilder();
string.append("<table border=\"1\">");
string.append(System.lineSeparator());
string.append("<tr>".indent(2));
string.append("<th width=\"40\"></th>".indent(4));
string.append("<th width=\"50\">X</th>".indent(4));
string.append("<th width=\"50\">Y</th>".indent(4));
string.append("<th width=\"50\">Z</th>".indent(4));
string.append("</tr>".indent(2));
Random random = new Random();
int number;
for (int countA = 0; countA < 10; countA++) {
string.append("<tr>".indent(2));
string.append("<td>%d</td>".formatted(countA).indent(4));
for (int countB = 0; countB < 3; countB++) {
number = random.nextInt(1, 9999);
string.append("<td>%,d</td>".formatted(number).indent(4));
}
string.append("</tr>".indent(2));
}
string.append("</table>");
return string.toString();
}
</syntaxhighlight>
<table border="1">
<tr>
<th width="40"></th>
<th width="50">X</th>
<th width="50">Y</th>
<th width="50">Z</th>
</tr>
<tr>
<td>0</td>
<td>7,382</td>
<td>8,078</td>
<td>1,200</td>
</tr>
<tr>
<td>1</td>
<td>121</td>
<td>3,051</td>
<td>1,795</td>
</tr>
<tr>
<td>2</td>
<td>9,310</td>
<td>6,264</td>
<td>7,526</td>
</tr>
<tr>
<td>3</td>
<td>2,294</td>
<td>367</td>
<td>3,753</td>
</tr>
<tr>
<td>4</td>
<td>9,680</td>
<td>3,921</td>
<td>6,582</td>
</tr>
<tr>
<td>5</td>
<td>5,308</td>
<td>5,232</td>
<td>3,035</td>
</tr>
<tr>
<td>6</td>
<td>1,252</td>
<td>1,468</td>
<td>7,081</td>
</tr>
<tr>
<td>7</td>
<td>1,808</td>
<td>1,143</td>
<td>4,439</td>
</tr>
<tr>
<td>8</td>
<td>7,133</td>
<td>1,747</td>
<td>8,636</td>
</tr>
<tr>
<td>9</td>
<td>4,882</td>
<td>9,367</td>
<td>5,056</td>
</tr>
</table>
<br />
An alternate demonstration
{{works with|Java|1.5+}}
This example assumes the header row is the first row in the given array and does not add row numbers. They will need to be added by the programmer when constructing the array.
<langsyntaxhighlight lang="java5">public class HTML {
 
public static String array2HTML(Object[][] array){
Line 2,682 ⟶ 2,843:
System.out.println(array2HTML(ints));
}
}</langsyntaxhighlight>
{{out}}
<langsyntaxhighlight lang="html5"><table><th></th><th>X</th><th>Y</th><th>Z</th><tr><td>1</td><td>1</td><td>2</td><td>3</td></tr><tr><td>2</td><td>4</td><td>5</td><td>6</td></tr><tr><td>3</td><td>7</td><td>8</td><td>9</td></tr><tr><td>4</td><td>10</td><td>11</td><td>12</td></tr></table></langsyntaxhighlight>
 
=={{header|JavaScript}}==
===Iterative===
<langsyntaxhighlight JavaScriptlang="javascript"><html><head><title>Table maker</title><script type="application/javascript">
 
// normally, don't do this: at least name it something other than "a"
Line 2,722 ⟶ 2,883:
}
</script></head>
<body><script>make_table(5, 4)</script></body></html></langsyntaxhighlight>
 
===Functional===
Line 2,729 ⟶ 2,890:
:#fold a more general HTML rendering function over a data tree.
 
<langsyntaxhighlight JavaScriptlang="javascript">(() => {
'use strict';
 
Line 2,934 ⟶ 3,095:
// MAIN ---
return main();
})();</langsyntaxhighlight>
{{Out}}
 
Line 2,999 ⟶ 3,160:
=={{header|jq}}==
{{works with|jq|1.4}}
<langsyntaxhighlight lang="jq">def html_row:
"<tr>",
" \(.[] | "<td>\(.)</td>")",
Line 3,021 ⟶ 3,182:
length as $length
| . as $in
| [range(0;length) | [.+1] + $in[.]] | html_table(header);</langsyntaxhighlight>
 
'''Example'''
<langsyntaxhighlight lang="jq">def data:
[ [4,5,6],
[41, 51, 61],
Line 3,030 ⟶ 3,191:
 
# The first column has no header
data | html_table_with_sequence( ["", "X", "Y", "Z"] )</langsyntaxhighlight>
{{out}}
<langsyntaxhighlight lang="sh">$ jq -r -n -f Create_an_HTML_table.jq
<table>
<thead align = 'right'>
Line 3,062 ⟶ 3,223:
</tr>
</tbody
</table></langsyntaxhighlight>
 
=={{header|Julia}}==
<langsyntaxhighlight lang="julia">function tag(x::Pair, attr::Pair...)
t, b = x
attrstr = join(" $n=\"$p\"" for (n, p) in attr)
Line 3,077 ⟶ 3,238:
body = "\n" * join(rows, '\n') * "\n"
table = tag(:table => string('\n', header, body, '\n'), :style => "width: 60%")
println(table)</langsyntaxhighlight>
 
{{out}}
Line 3,094 ⟶ 3,255:
 
'''The raw html:'''
<langsyntaxhighlight lang="html5"><table style="width: 60%">
<th></th><th>X</th><th>Y</th><th>Z</th>
 
Line 3,104 ⟶ 3,265:
<tr><td style="font-weight: bold;">6</td><td>3896</td><td>9827</td><td>7006</td></tr>
 
</table></langsyntaxhighlight>
 
=={{header|Kotlin}}==
<langsyntaxhighlight lang="scala">// version 1.1.3
 
import java.util.Random
Line 3,137 ⟶ 3,298:
}
println(sb.toString())
}</langsyntaxhighlight>
 
{{out}}
Sample output:
<langsyntaxhighlight HTML5lang="html5"><html>
<head>
<style>
Line 3,161 ⟶ 3,322:
</table>
</body>
</html></langsyntaxhighlight>
 
=={{header|Lambdatalk}}==
Line 3,167 ⟶ 3,328:
Lambdatalk outputs standard HTML/CSS code sent to the web browser who does the job.
 
<langsyntaxhighlight lang="scheme">
{table
{@ style="background:#ffe; width:50%;"}
Line 3,179 ⟶ 3,340:
{serie 1 3}}}}
{serie 1 3}}}
</syntaxhighlight>
</lang>
 
{{out}}
Line 3,186 ⟶ 3,347:
 
=={{header|Lasso}}==
<langsyntaxhighlight Lassolang="lasso">define rand4dig => integer_random(9999, 1)
 
local(
Line 3,206 ⟶ 3,367:
#output -> append('</table>\n')
 
#output</langsyntaxhighlight>
{{out}}
<table border=2 cellpadding=5 cellspace=0>
Line 3,240 ⟶ 3,401:
<br>
A time delay is needed to allow this, then the file is deleted.
<syntaxhighlight lang="lb">
<lang lb>
nomainwin
 
Line 3,281 ⟶ 3,442:
end
end sub
</syntaxhighlight>
</lang>
 
=={{header|Lingo}}==
<langsyntaxhighlight lang="lingo">on htmlTable (data)
str = "<table>"
 
Line 3,308 ⟶ 3,469:
put "</table>" after str
return str
end</langsyntaxhighlight>
 
<langsyntaxhighlight lang="lingo">tableData = [\
["X", "Y", "Z"],\
["1", "2", "3"],\
Line 3,321 ⟶ 3,482:
-- render the result in a text member (which only supports simple/ancient HTML)
m = new(#text)
m.text = "<html><body>"&htmlCode&"</body></html>"</langsyntaxhighlight>
 
=={{header|Lua}}==
This function is written so as to take arbitrary table data. Its argument is a (Lua) table of (Lua) tables, where each sub-table is one row of the HTML table. The first row is assumed to be the column headings.
<langsyntaxhighlight Lualang="lua">function htmlTable (data)
local html = "<table>\n<tr>\n<th></th>\n"
for _, heading in pairs(data[1]) do
Line 3,348 ⟶ 3,509:
}
 
print(htmlTable(tableData))</langsyntaxhighlight>
{{out}}
<pre><table>
Line 3,378 ⟶ 3,539:
 
=={{header|M2000 Interpreter}}==
<langsyntaxhighlight lang="qbasic">
MODULE HtmlTable {
tag$=LAMBDA$ (a$)-> {
Line 3,415 ⟶ 3,576:
}
HtmlTable
</syntaxhighlight>
</lang>
 
{{out}}
Line 3,452 ⟶ 3,613:
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
<langsyntaxhighlight Mathematicalang="mathematica">x := RandomInteger[10];
Print["<table>", "\n","<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>"]
Scan[Print["<tr><td>", #, "</td><td>", x, "</td><td>", x, "</td><td>","</td></tr>"] & , Range[3]]
Print["</table>"]</langsyntaxhighlight>
 
{{out}}
Line 3,467 ⟶ 3,628:
=={{header|MATLAB}} / {{header|Octave}}==
<langsyntaxhighlight lang="matlab">function htmltable(fid,table,Label)
fprintf(fid,'<table>\n <thead align = "right">\n');
if nargin<3,
Line 3,478 ⟶ 3,639:
fprintf(fid,' <tr><td>%2i</td><td>%5i</td><td>%5i</td><td>%5i</td></tr>\n', [1:size(table,1);table']);
fprintf(fid,' </tbody>\n</table>\n');
end</langsyntaxhighlight>
 
{{out}}
Line 3,496 ⟶ 3,657:
 
=={{header|Modula-2}}==
<langsyntaxhighlight lang="modula2">MODULE testCGI;
 
FROM InOut IMPORT WriteCard, WriteLn, WriteString, WriteBf;
Line 3,542 ⟶ 3,703:
WriteLn;
WriteBf
END testCGI.</langsyntaxhighlight>
 
=={{header|Modula-3}}==
{{trans|C}}
<langsyntaxhighlight lang="modula3">MODULE Table EXPORTS Main;
 
IMPORT IO, Random;
Line 3,565 ⟶ 3,726:
END;
END;
END Table.</langsyntaxhighlight>
 
=={{header|Nanoquery}}==
{{trans|Ursa}}
This program outputs the HTML table to the console.
<langsyntaxhighlight Nanoquerylang="nanoquery">import Nanoquery.Util
 
random = new(Random)
Line 3,588 ⟶ 3,749:
end for
 
println "</table>"</langsyntaxhighlight>
 
=={{header|NetRexx}}==
<langsyntaxhighlight NetRexxlang="netrexx">/* NetRexx */
options replace format comments java crossref symbols nobinary
 
Line 3,713 ⟶ 3,874:
return html
 
</syntaxhighlight>
</lang>
{{out}}
<div style="height:80ex;overflow:scroll;">
<langsyntaxhighlight lang="html5"><?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
Line 3,784 ⟶ 3,945:
</body>
</html>
</syntaxhighlight>
</lang>
</div>
{{out}}
Line 3,790 ⟶ 3,951:
 
=={{header|NewLISP}}==
<langsyntaxhighlight NewLISPlang="newlisp">; file: html-table.lsp
; url: http://rosettacode.org/wiki/Create_an_HTML_table
; author: oofoe 2012-01-29
Line 3,845 ⟶ 4,006:
))
 
(exit)</langsyntaxhighlight>
 
{{out}}
Line 3,905 ⟶ 4,066:
 
=={{header|Nim}}==
<langsyntaxhighlight lang="nim">import random, htmlgen
randomize()
 
Line 3,918 ⟶ 4,079:
randTR 3,
randTR 4,
randTR 5)</langsyntaxhighlight>
{{out}}
<table><tr><th></th><th>X</th><th>Y</th><th>Z</th></tr><tr><td style="font-weight: bold">1</td><td>8815</td><td>5115</td><td>9452</td></tr><tr><td style="font-weight: bold">2</td><td>5048</td><td>5694</td><td>6610</td></tr><tr><td style="font-weight: bold">3</td><td>6163</td><td>4598</td><td>9015</td></tr><tr><td style="font-weight: bold">4</td><td>5638</td><td>8679</td><td>3994</td></tr><tr><td style="font-weight: bold">5</td><td>1515</td><td>1822</td><td>4020</td></tr></table>
Line 3,926 ⟶ 4,087:
 
=={{header|Objeck}}==
<langsyntaxhighlight lang="objeck">
class CreateTable {
function : Main(args : String[]) ~ Nil {
Line 3,960 ⟶ 4,121:
}
}
</syntaxhighlight>
</lang>
 
=={{header|OCaml}}==
Line 3,966 ⟶ 4,127:
A simple <code>printf</code> method:
 
<langsyntaxhighlight lang="ocaml">let () =
let buf = Buffer.create 1 in
let s = Buffer.add_string buf in
Line 3,988 ⟶ 4,149:
s "</tbody>";
s "</table>";
print_endline (Buffer.contents buf)</langsyntaxhighlight>
 
=== With a dedicated library ===
Line 3,994 ⟶ 4,155:
Using the library [http://theorie.physik.uni-wuerzburg.de/~ohl/xhtml/ ocaml-xhtml]. With this library the validity of the pages is guaranteed by the OCaml type system.
 
<langsyntaxhighlight lang="ocaml">open XHTML.M_01_01
 
let _td s = td [pcdata s]
Line 4,032 ⟶ 4,193:
 
let () =
pretty_print ~width:80 print_string my_page</langsyntaxhighlight>
 
=== TyXml ===
Line 4,038 ⟶ 4,199:
The library [http://ocsigen.org/tyxml/ TyXml] contains a module for XHTML that provides the same interface than the previous <code>ocaml-xhtml</code> library.
 
<langsyntaxhighlight lang="ocaml">#use "topfind"
#require "tyxml"
 
Line 4,062 ⟶ 4,223:
let my_html = X.html my_head my_body in
P.print print_endline my_html;
;;</langsyntaxhighlight>
 
The previous function <code>make_table ()</code> produces a simple table, we can replace it by the function below to output a more complex table with <code>thead</code> and <code>tbody</code>:
 
<langsyntaxhighlight lang="ocaml">let make_table () =
let br = X.a_border 1 in
let th s = X.th [X.pcdata s] in
Line 4,076 ⟶ 4,237:
let my_tbody = X.tbody my_tr1 [my_tr2; my_tr3] in
let my_table = X.tablex ~thead:my_thead ~a:[br] my_tbody [] in
(my_table)</langsyntaxhighlight>
 
=={{header|Oz}}==
As a complete web application, using the [https://github.com/wmeyer/roads/wiki "Roads"] web programming library. Connect your browser to http://localhost:8080/table after starting the program.
<langsyntaxhighlight lang="oz">declare
 
[Roads] = {Module.link ['x-ozlib://wmeyer/roads/Roads.ozf']}
Line 4,120 ⟶ 4,281:
 
{Roads.registerFunction table Table}
{Roads.run}</langsyntaxhighlight>
 
=={{header|PARI/GP}}==
<langsyntaxhighlight lang="parigp">html(n=3)={
print("<table>\n<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>");
for(i=1,n,
Line 4,131 ⟶ 4,292:
);
print("</table>")
};</langsyntaxhighlight>
{{out}}
<pre><table>
Line 4,141 ⟶ 4,302:
 
Note also the built-in <code>printtex</code> command, which allows the analogous task to be written as
<langsyntaxhighlight lang="parigp">printtex(matrix(4,4,i,j,if(i==1,if(j==1,"",Strchr(86+j)),if(j==1,i,random(9999)))))</langsyntaxhighlight>
 
=={{header|Pascal}}==
Line 4,149 ⟶ 4,310:
Opcodes of interest: SDC -- simple document; R!I -- ranged random integer
 
<langsyntaxhighlight lang="sgml"><@ SDCLIT>
<@ DTBLIT>
<@ DTRLITLIT>
Line 4,165 ⟶ 4,326:
</@>
</@>
|Number Table</@></langsyntaxhighlight>
 
=={{header|Perl}}==
<langsyntaxhighlight Perllang="perl">my @heading = qw(X Y Z);
my $rows = 5;
print '<table><thead><td>',
Line 4,180 ⟶ 4,341:
}
 
print "</tbody></table>";</langsyntaxhighlight>
Note that this is a rather inane way (because of the inane task specification) of generating structured document. For serious work, one should use a module such as XML or HTML for well-formedness instead of this ad hoc method.
 
Line 4,186 ⟶ 4,347:
{{libheader|Phix/basics}}
===plain text approach===
<!--<langsyntaxhighlight Phixlang="phix">-->
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"&lt;table border=2&gt;\n"</span><span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">" &lt;tr&gt;&lt;th&gt;&lt;/th&gt;"</span><span style="color: #0000FF;">)</span>
Line 4,201 ⟶ 4,362:
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
<span style="color: #7060A8;">puts</span><span style="color: #0000FF;">(</span><span style="color: #000000;">1</span><span style="color: #0000FF;">,</span><span style="color: #008000;">"&lt;/table&gt;"</span><span style="color: #0000FF;">)</span>
<!--</langsyntaxhighlight>-->
{{out}}
<table border=2>
Line 4,221 ⟶ 4,382:
 
===more structured===
<!--<langsyntaxhighlight Phixlang="phix">-->
<span style="color: #008080;">include</span> <span style="color: #000000;">xml<span style="color: #0000FF;">.<span style="color: #000000;">e</span>
<span style="color: #004080;">sequence</span> <span style="color: #000000;">contents</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{<span style="color: #0000FF;">}</span>
Line 4,241 ⟶ 4,402:
<span style="color: #004080;">sequence</span> <span style="color: #000000;">doc</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">xml_new_doc<span style="color: #0000FF;">(<span style="color: #000000;">table<span style="color: #0000FF;">,<span style="color: #008000;">""<span style="color: #0000FF;">)</span>
<span style="color: #7060A8;">puts<span style="color: #0000FF;">(<span style="color: #000000;">1<span style="color: #0000FF;">,<span style="color: #7060A8;">xml_sprint<span style="color: #0000FF;">(<span style="color: #000000;">doc<span style="color: #0000FF;">)<span style="color: #0000FF;">)
<!--</langsyntaxhighlight>-->
{{out}}
<table border="2">
Line 4,303 ⟶ 4,464:
 
=== normal style ===
<langsyntaxhighlight PHPlang="php"><?php
/**
* @author Elad Yosifon
Line 4,339 ⟶ 4,500:
 
echo $html;
</syntaxhighlight>
</lang>
 
=== template engine style ===
<langsyntaxhighlight PHPlang="php"><?php
/**
* @author Elad Yosifon
Line 4,377 ⟶ 4,538:
</body>
</html>
</syntaxhighlight>
</lang>
 
=={{header|PicoLisp}}==
<langsyntaxhighlight PicoLisplang="picolisp">(load "@lib/xhtml.l")
 
(<table> NIL NIL '(NIL (NIL "X") (NIL "Y") (NIL "Z"))
(for N 3
(<row> NIL N 124 456 789) ) )</langsyntaxhighlight>
 
=={{header|PL/I}}==
<syntaxhighlight lang="pl/i">
<lang PL/I>
/* Create an HTML table. 6/2011 */
 
Line 4,431 ⟶ 4,592:
call create_table (headings, table_contents);
 
end create;</langsyntaxhighlight>
 
=={{header|PowerShell}}==
<syntaxhighlight lang="powershell">
<lang PowerShell>
# Converts Microsoft .NET Framework objects into HTML that can be displayed in a Web browser.
ConvertTo-Html -inputobject (Get-Date)
Line 4,445 ⟶ 4,606:
 
$object | ConvertTo-Html
</syntaxhighlight>
</lang>
{{out}}
<syntaxhighlight lang="powershell">
<lang PowerShell>
<!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">
Line 4,473 ⟶ 4,634:
</table>
</body></html>
</syntaxhighlight>
</lang>
 
When raw results are exported to Out-File cmdlet like this:
<syntaxhighlight lang="powershell">
<lang PowerShell>
$object | ConvertTo-Html | Out-File -FilePath $env:temp\test.html ; invoke-item $env:temp\test.html
</syntaxhighlight>
</lang>
 
{{out}}
Line 4,487 ⟶ 4,648:
 
=={{header|Prolog}}==
<syntaxhighlight lang="prolog">
<lang Prolog>
:- use_module(library(http/html_write)).
 
Line 4,503 ⟶ 4,664:
],
phrase(html(table([tr(\theader(Header)), \trows(Rows,1)])), Out, []),
print_html(Out).</langsyntaxhighlight>
 
<langsyntaxhighlight lang="html5"><table>
<tr><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td>1</td><td>7055</td><td>5334</td><td>5795</td></tr>
Line 4,511 ⟶ 4,672:
<tr><td>3</td><td>140</td><td>7607</td><td>8144</td></tr>
<tr><td>4</td><td>7090</td><td>475</td><td>4140</td></tr>
</table></langsyntaxhighlight>
 
=={{header|PureBasic}}==
Line 4,518 ⟶ 4,679:
</font>
 
<syntaxhighlight lang="purebasic">
<lang PureBasic>
Title.s="Create an HTML table"
 
Line 4,559 ⟶ 4,720:
 
; RunProgram(FileName.s)
</syntaxhighlight>
</lang>
 
{{out}}
Line 4,573 ⟶ 4,734:
'''The raw HTML'''
 
<langsyntaxhighlight lang="html5">
<html><head><title>Create an HTML table</title></head><body>
<table border=1 cellpadding=10 cellspacing=0>
Line 4,583 ⟶ 4,744:
</table>
</body></html>
</syntaxhighlight>
</lang>
 
=={{header|Python}}==
<langsyntaxhighlight lang="python">
import random
 
Line 4,603 ⟶ 4,764:
for i in range(1, 6))
table = tag(table='\n' + header + rows + '\n')
print(table)</langsyntaxhighlight>
 
{{out}}
Line 4,616 ⟶ 4,777:
 
'''The raw HTML'''
<langsyntaxhighlight lang="html5"><table>
<tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>
<tr><td style="font-weight: bold;">1</td><td>6040</td><td>4697</td><td>7055</td></tr>
Line 4,623 ⟶ 4,784:
<tr><td style="font-weight: bold;">4</td><td>5313</td><td>4396</td><td>1765</td></tr>
<tr><td style="font-weight: bold;">5</td><td>4013</td><td>5924</td><td>6082</td></tr>
</table></langsyntaxhighlight>
 
 
Line 4,630 ⟶ 4,791:
{{Trans|JavaScript}}
{{works with|Python|3.6}}
<langsyntaxhighlight Pythonlang="python">from functools import (reduce)
import itertools
import random
Line 4,746 ⟶ 4,907:
 
if __name__ == '__main__':
main()</langsyntaxhighlight>
 
{{Out}}
Line 4,779 ⟶ 4,940:
 
Raw HTML output
<langsyntaxhighlight lang="html5"><table style="width:25%; border:2px solid silver;">
<caption>Table generated with Python</caption>
<tr>
Line 4,805 ⟶ 4,966:
<td>8882</td>
</tr>
</table></langsyntaxhighlight>
 
=={{header|Racket}}==
 
<langsyntaxhighlight lang="racket">
#lang racket
 
Line 4,827 ⟶ 4,988:
 
(display-xml/content (xexpr->xml xexpr))
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
Line 4,844 ⟶ 5,005:
This is certainly not the only or best way to generate HTML tables using Raku; just an example of one possible method.
 
<syntaxhighlight lang="raku" perl6line>my @header = <&nbsp; X Y Z>;
my $rows = 5;
 
Line 4,856 ⟶ 5,017:
}
 
say tag('table', $table, 'cellspacing=4 style="text-align:right; border: 1px solid;"');</langsyntaxhighlight>
 
{{out}}
Line 4,862 ⟶ 5,023:
 
=={{header|Rascal}}==
<langsyntaxhighlight lang="rascal">import IO;
import util::Math;
 
Line 4,879 ⟶ 5,040:
html("Rosetta Code Table", table(rows)));
return "written";
}</langsyntaxhighlight>
 
This will result in a simple html file. For example:
 
<langsyntaxhighlight lang="rascal">rascal>generateTable(10)
str: "written"</langsyntaxhighlight>
 
{{out}}
<langsyntaxhighlight lang="html"><html><title>Rosetta Code Table</title><body><table border="0"><tr><td></td><td>X</td><td>Y</td><td>Z</td></tr><tr><td>1</td><td>253</td><td>3988</td><td>3208</td></tr><tr><td>2</td><td>315</td><td>2014</td><td>47</td></tr><tr><td>3</td><td>749</td><td>3379</td><td>1076</td></tr><tr><td>4</td><td>241</td><td>3211</td><td>1848</td></tr><tr><td>5</td><td>1</td><td>1605</td><td>6469</td></tr><tr><td>6</td><td>599</td><td>1243</td><td>1189</td></tr><tr><td>7</td><td>741</td><td>4709</td><td>2854</td></tr><tr><td>8</td><td>918</td><td>482</td><td>7160</td></tr><tr><td>9</td><td>451</td><td>572</td><td>6229</td></tr><tr><td>10</td><td>955</td><td>7970</td><td>9684</td></tr></table border="0"></body></html></langsyntaxhighlight>
 
{{out}}
Line 4,893 ⟶ 5,054:
 
=={{header|Red}}==
<langsyntaxhighlight lang="red">
 
Create an HTML table
Line 4,941 ⟶ 5,102:
newline contents newline "</" tag ">"]]
 
</syntaxhighlight>
</lang>
 
=={{header|Retro}}==
Using the '''casket::html'''' library which allows creation of HTML using quotes and combinators:
 
<langsyntaxhighlight Retrolang="retro">needs casket::html'
with casket::html'
 
Line 4,958 ⟶ 5,119:
[ [ "5" ] td [ rnd ] td [ rnd ] td [ rnd ] td ] tr
[ [ "6" ] td [ rnd ] td [ rnd ] td [ rnd ] td ] tr
] table</langsyntaxhighlight>
 
=={{header|REXX}}==
Line 4,964 ⟶ 5,125:
<br>makes reading the file easier and also helps in debugging, &nbsp; but they could've been combined into a
<br>single &nbsp; '''lineout''' &nbsp; for succinctness.
<langsyntaxhighlight lang="rexx">/*REXX program creates (and displays) an HTML table of five rows and three columns.*/
parse arg rows . /*obtain optional argument from the CL.*/
if rows=='' | rows=="," then rows=5 /*no ROWS specified? Then use default.*/
Line 4,995 ⟶ 5,156:
/*──────────────────────────────────────────────────────────────────────────────────────*/
rnd: return right(random(0,maxRand*2)-maxRand,5) /*RANDOM doesn't generate negative ints*/
wrt: call lineout oFID,arg(1); say '══►' arg(1); w=w+1; return /*write.*/</langsyntaxhighlight>
{{out|output|text=&nbsp; to the terminal (screen) using the default input of &nbsp; <tt> 5 </tt> &nbsp; rows:}}
<pre>
Line 5,098 ⟶ 5,259:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
# Project: Create an HTML table
Line 5,133 ⟶ 5,294:
see str + nl
systemcmd("temp.htm")
</syntaxhighlight>
</lang>
Output:
<pre>
Line 5,160 ⟶ 5,321:
Pure Ruby solution:
 
<langsyntaxhighlight lang="ruby">
def r
rand(10000)
Line 5,183 ⟶ 5,344:
html << "</table>"
end
</syntaxhighlight>
</lang>
 
 
Line 5,189 ⟶ 5,350:
 
{{libheader|REXML}}
<langsyntaxhighlight lang="ruby">def r; rand(10000); end
table = [["", "X", "Y", "Z"],
[ 1, r, r, r],
Line 5,208 ⟶ 5,369:
formatter = REXML::Formatters::Pretty.new
formatter.compact = true
formatter.write(xtable, $stdout)</langsyntaxhighlight>
 
{{out}}
<langsyntaxhighlight lang="html5"><table>
<tr>
<td></td>
Line 5,236 ⟶ 5,397:
<td>9849</td>
</tr>
</table></langsyntaxhighlight>
 
<table>
Line 5,266 ⟶ 5,427:
 
=={{header|Run BASIC}}==
<langsyntaxhighlight RunBasiclang="runbasic">html "<table border=1><tr align=center><td>Row</td><td>X</td><td>Y</td><td>Z</td></tr>"
for i = 1 to 5
html "<tr align=right>"
Line 5,274 ⟶ 5,435:
html "</tr>"
next i
html "</table>"</langsyntaxhighlight>
 
{{out}}
Line 5,287 ⟶ 5,448:
=={{header|Rust}}==
{{libheader|rand|0.3}}
<langsyntaxhighlight lang="rust">extern crate rand;
 
use rand::Rng;
Line 5,312 ⟶ 5,473:
 
println!("</table>");
}</langsyntaxhighlight>
 
{{out}}
<langsyntaxhighlight lang="html5"><table><thead><tr><th></th><td>X</td><td>Y</td><td>Z</td></tr></thead>
<tr><th>0</th><td>7101</td><td>9111</td><td>3446</td></tr>
<tr><th>1</th><td>426</td><td>9518</td><td>611</td></tr>
<tr><th>2</th><td>9693</td><td>419</td><td>4878</td></tr>
</table></langsyntaxhighlight>
 
=={{header|Scala}}==
{{libheader|org.scala-lang.xml}}Scala has built-in support for XML, so you can freely mix XML literals into your Scala source code. This is nice, because instead of using strings to represent XML, you create XML literals that the compiler can understand and verify. This approach lets you easily generate dynamic XML by interweaving Scala code and XML in the same expressions.<langsyntaxhighlight lang="scala">object TableGenerator extends App {
val data = List(List("X", "Y", "Z"), List(11, 12, 13), List(12, 22, 23), List(13, 32, 33))
 
Line 5,338 ⟶ 5,499:
 
println(generateTable(data))
}</langsyntaxhighlight>
 
=={{header|Scheme}}==
{{works with|Guile}}{{works with|Gauche}}<langsyntaxhighlight lang="scheme">(define table #(
#("" "X" "Y" "Z")
#(1 1 2 3)
Line 5,361 ⟶ 5,522:
(display "</td>")))
(display "</tr>"))
(display "</table>")</langsyntaxhighlight>
 
=={{header|Seed7}}==
<langsyntaxhighlight lang="seed7">$ include "seed7_05.s7i";
 
const proc: main is func
Line 5,381 ⟶ 5,542:
end for;
writeln("</table>")
end func;</langsyntaxhighlight>
 
{{out}}
Line 5,402 ⟶ 5,563:
 
=={{header|Sidef}}==
<langsyntaxhighlight lang="ruby">class HTML {
method _attr(Hash h) {
h.keys.sort.map {|k| %Q' #{k}="#{h{k}}"' }.join('')
Line 5,451 ⟶ 5,612:
)
}...
);</langsyntaxhighlight>
 
{{out}}
Line 5,492 ⟶ 5,653:
 
=={{header|Snobol4}}==
<langsyntaxhighlight Snobol4lang="snobol4">* HTML Table
output = "<table>"
output = " <tr><th></th><th>X</th><th>Y</th><th>Z</th></tr>"
Line 5,505 ⟶ 5,666:
end
 
</syntaxhighlight>
</lang>
{{out}}
<pre><table>
Line 5,537 ⟶ 5,698:
 
 
<langsyntaxhighlight lang="sml">(*
* val mkHtmlTable : ('a list * 'b list) -> ('a -> string * 'b -> string)
* -> (('a * 'b) -> string) -> string
Line 5,570 ⟶ 5,731:
(fn (a, b) => Real.toString (Math.pow (a, b))))
 
val _ = print (samplePage ())</langsyntaxhighlight>
 
{{out}}
Line 5,593 ⟶ 5,754:
First, a program to write a Stata matrix to an HTML file.
 
<langsyntaxhighlight lang="stata">program mat2html
local nr = rowsof(`1')
local nc = colsof(`1')
Line 5,629 ⟶ 5,790:
file write `f' "</html>" _n
file close `f'
end</langsyntaxhighlight>
 
An example:
 
<langsyntaxhighlight lang="stata">matrix a=2,9,4\7,5,3\6,1,8
matrix rownames a = A B C
matrix colnames a = X Y Z
mat2html a magic.html</langsyntaxhighlight>
 
=={{header|Tcl}}==
<langsyntaxhighlight lang="tcl"># Make ourselves a very simple templating lib; just two commands
proc TAG {name args} {
set body [lindex $args end]
Line 5,679 ⟶ 5,840:
}]
}]
}]</langsyntaxhighlight>
 
=={{header|TUSCRIPT}}==
<langsyntaxhighlight lang="tuscript">
$$ MODE TUSCRIPT
tablefile="table.html"
Line 5,703 ⟶ 5,864:
ENDACCESS d
BROWSE $tablefile
</syntaxhighlight>
</lang>
{{out}}
<pre style='height:30ex;overflow:scroll'>
Line 5,723 ⟶ 5,884:
=={{header|UNIX Shell}}==
{{works with|ksh93}}
<langsyntaxhighlight lang="bash">function emit_table {
nameref d=$1
typeset -i idx=0
Line 5,760 ⟶ 5,921:
done
 
emit_table data</langsyntaxhighlight>
{{out}}
<pre><table>
Line 5,779 ⟶ 5,940:
=={{header|Ursa}}==
This program outputs the HTML table to the console.
<langsyntaxhighlight lang="ursa">decl ursa.util.random random
 
out "<table>" endl console
Line 5,796 ⟶ 5,957:
end for
 
out "</table>" endl console</langsyntaxhighlight>
 
=={{header|VBA}}==
<syntaxhighlight lang="vba">
<lang VBA>
Public Sub BuildHTMLTable()
'simple HTML table, represented as a string matrix "cells"
Line 5,854 ⟶ 6,015:
HTMLWrap = sOpenTag & s & sClosingTag
End Function
</syntaxhighlight>
</lang>
 
Subroutine BuildHTMLTable builds the HTML code as one big string.
Line 5,867 ⟶ 6,028:
 
=={{header|VBScript}}==
<syntaxhighlight lang="vb">
<lang vb>
Set objFSO = CreateObject("Scripting.FileSystemObject")
 
Line 5,908 ⟶ 6,069:
objOutHTML.Close
Set objFSO = Nothing
</syntaxhighlight>
</lang>
 
{{In}}
Line 5,940 ⟶ 6,101:
=={{header|Visual Basic .NET}}==
VB.NET has XML literals with embedded expressions (<%= ... %>) similar to [[#Scala|Scala]]. This example additionally uses LINQ query syntax.
<langsyntaxhighlight lang="vbnet">Module Program
Sub Main()
Const ROWS = 3
Line 5,968 ⟶ 6,129:
Console.WriteLine(result)
End Sub
End Module</langsyntaxhighlight>
 
{{out}}
Line 6,033 ⟶ 6,194:
 
Since embedded expressions must contain expressions, anonymous iterator functions that are immediately called (notice the parentheses after End Function) are used to enable control constructs.
<langsyntaxhighlight lang="vbnet">Module Program
Sub Main()
Dim rand As Func(Of Integer, Integer) = AddressOf New Random(0).Next
Line 6,081 ⟶ 6,242:
Console.WriteLine(result)
End Sub
End Module</langsyntaxhighlight>
 
{{out}}
Line 6,128 ⟶ 6,289:
 
A more idiomatic version that uses LINQ instead of loops:
<langsyntaxhighlight lang="vbnet">Module Program
Sub Main()
Dim rand As Func(Of Integer, Integer) = AddressOf New Random(0).Next
Line 6,163 ⟶ 6,324:
Console.WriteLine(result)
End Sub
End Module</langsyntaxhighlight>
 
=={{header|Wren}}==
{{trans|Kotlin}}
{{libheader|Wren-fmt}}
<langsyntaxhighlight ecmascriptlang="wren">import "random" for Random
import "./fmt" for Fmt
 
var r = Random.new()
Line 6,191 ⟶ 6,352:
sb = sb + "</table>\n"
sb = sb + "</body>\n</html>"
System.print(sb)</langsyntaxhighlight>
 
{{out}}
Line 6,218 ⟶ 6,379:
</html>
</pre>
 
=={{header|XPL0}}==
{{trans|C}}
<syntaxhighlight lang "XPL0">include xpllib;
int I;
[Print("<table style=^"text-align:center; border: 1px solid^"><th></th>");
Print("<th>X</th><th>Y</th><th>Z</th>");
for I:= 0 to 4-1 do
Print("<tr><th>%d</th><td>%d</td><td>%d</td><td>%d</td></tr>", I,
Ran(10000), Ran(10000), Ran(10000));
Print("</table>");
]</syntaxhighlight>
{{out}}
<table style="text-align:center; border: 1px solid"><th></th><th>X</th><th>Y</th><th>Z</th><tr><th>0</th><td>5696</td><td>9421</td><td>1620</td></tr><tr><th>1</th><td>3509</td><td>9235</td><td>5287</td></tr><tr><th>2</th><td>2591</td><td>5458</td><td>7556</td></tr><tr><th>3</th><td>8857</td><td>9839</td><td>5446</td></tr></table>
 
=={{header|XSLT}}==
 
<langsyntaxhighlight lang="xml"><?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" version="4.01" indent="yes"/>
Line 6,278 ⟶ 6,453:
</tr>
</xsl:template>
</xsl:stylesheet></langsyntaxhighlight>
 
XSLT does not have a standard PRNG facility, so a list of numbers is given as input.
Line 6,284 ⟶ 6,459:
Sample input:
 
<langsyntaxhighlight lang="xml"><?xml version="1.0" encoding="UTF-8"?>
<numbers>
<number>1578</number>
Line 6,301 ⟶ 6,476:
<number>1403</number>
<number>4637</number>
</numbers></langsyntaxhighlight>
 
{{out}}
<langsyntaxhighlight lang="html"><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
Line 6,348 ⟶ 6,523:
</tr>
</table></body>
</html></langsyntaxhighlight>
 
{{out}}
Line 6,391 ⟶ 6,566:
 
=={{header|zkl}}==
<langsyntaxhighlight lang="zkl">table:=0'|<table style="text-align:center; border: 1px solid">|
"<th></th><th>X</th><th>Y</th><th>Z</th><tr>";
table=Sink(table);
Line 6,399 ⟶ 6,574:
table.write("</tr>");
}
table.write("\n</table>\n").close().print();</langsyntaxhighlight>
{{out}}
<table style="text-align:center; border: 1px solid"><th></th><th>X</th><th>Y</th><th>Z</th><tr>
1,982

edits