--- layout: default title: Converting a CSV into an HTML table --- # HTML conversion The `HTMLConverter` converts a CSV records collection into a HTML Table using PHP's `DOMDocument` class. ## Settings Prior to converting your records collection into a HTML table, you may wish to configure optional information to improve your table rendering.

Because we are using internally the XMLConverter, if an error occurs while validating the submitted values a DOMException exception will be thrown.

### HTMLConverter::table ```php public HTMLConverter::table(string $class_name, string $id_value = ''): self ``` This method sets the optional table `class` and `id` attribute values

The default class attribute value is table-csv-data.

The default id attribute value is the empty string.

### HTMLConverter::tr ```php public HTMLConverter::tr(string $record_offset_attribute_name): self ``` This method sets the optional attribute name for the record offset on the HTML `tr` tag.

If none is use or an empty string is given, the record offset information won't be exported to the HTML table.

### HTMLConverter::td ```php public HTMLConverter::td(string $fieldname_attribute_name): self ``` This method sets the optional attribute name for the field name on the HTML `td` tag.

If none is use or an empty string is given, the field name information won't be exported to the HTML table.

## Conversion

Since version 9.3.0 this method accepts optional header and footer records to display them in the exported HTML table.

```php public HTMLConverter::convert(iterable $records, array $header_record = [], array $footer_record = []): string ``` The `HTMLConverter::convert` accepts an `iterable` which represents the records collection and returns a string. It optionally accepts: - an array of string representing the tabular header; - an array of string representing the tabular footer; If any of these array is present and non-empty the tabular data will be contained in a `tbody` tag as per HTML specification. ```php use League\Csv\HTMLConverter; //we fetch the info from a DB using a PDO object $sth = $dbh->prepare("SELECT firstname, lastname, email FROM users LIMIT 2"); $sth->setFetchMode(PDO::FETCH_ASSOC); $sth->execute(); $converter = (new HTMLConverter()) ->table('table-csv-data', 'users') ->tr('data-record-offset') ->td('title') ; // The PDOStatement Object implements the Traversable Interface // that's why Converter::convert can directly insert // the data into the HTML Table $html = $converter->convert($sth); echo $html; // // // // // // // // // // // //
johndoejohn.doe@example.com
janedoejane.doe@example.com
$html = $converter->convert($sth, ['First Name', 'Last Name', 'E-mail']); echo $html; // // // // // // // // // // // // // // // // // // // // //
First NameLast NameE-mail
johndoejohn.doe@example.com
janedoejane.doe@example.com
```

If needed you can use the CharsetConverter object to correctly encode your CSV records before conversion.