Динамически отображать CSV-файл в виде таблицы HTML на веб-странице

Я хотел бы взять CSV-файл, живущий на стороне сервера, и динамически отображать его в виде таблицы html. Например, это:

Name, Age, Sex "Cantor, Georg", 163, M 

должен стать следующим:

 
Name Age Sex
Cantor, Georg 163 M

Решения на любом языке приветствуются.

Ранее связанное решение является ужасным fragmentом кода; почти каждая строка содержит ошибку. Вместо этого используйте fgetcsv :

 < ?php echo "\n\n"; $f = fopen("so-csv.csv", "r"); while (($line = fgetcsv($f)) !== false) { echo ""; foreach ($line as $cell) { echo ""; } echo "\n"; } fclose($f); echo "\n
" . htmlspecialchars($cell) . "
";

Вот простая функция для преобразования таблицы csv в html с помощью php:

 function jj_readcsv($filename, $header=false) { $handle = fopen($filename, "r"); echo ''; //display header row if true if ($header) { $csvcontents = fgetcsv($handle); echo ''; foreach ($csvcontents as $headercolumn) { echo ""; } echo ''; } // displaying contents while ($csvcontents = fgetcsv($handle)) { echo ''; foreach ($csvcontents as $column) { echo ""; } echo ''; } echo '
$headercolumn
$column
'; fclose($handle); }

Эту функцию можно назвать jj_readcsv('image_links.csv',true);

если второй параметр равен true, тогда первая строка csv будет приниматься как заголовок / заголовок.

Надеюсь, это поможет кому-то. Прокомментируйте любые недостатки в этом коде.

Ответ phihag помещает каждую строку в одну ячейку, в то время как вы запрашиваете, чтобы каждое значение находилось в отдельной ячейке. Это похоже на это:

 < ?php // Create a table from a csv file echo "\n\n"; $f = fopen("so-csv.csv", "r"); while (($line = fgetcsv($f)) !== false) { $row = $line[0]; // We need to get the actual row (it is the first element in a 1-element array) $cells = explode(";",$row); echo ""; foreach ($cells as $cell) { echo ""; } echo "\n"; } fclose($f); echo "\n
" . htmlspecialchars($cell) . "
"; ?>

HTML … тег может сделать это сам, т.е. нет PHP или java.

или см. этот пост для получения полной информации об этом (со всеми опциями ..).

http://www.linuxquestions.org/questions/programming-9/how-to-show-csv-data-as-html-in-internet-explorer-with-filter-buttons-4175443612/

Это работает, если вы избежите цитируемых запятых с \?

Имя, возраст, пол

«Кантор \, Георг», 163, М

В большинстве разделенных форматов требуется, чтобы их разделитель был экранирован для правильного анализа.


Пример грубой Java:

 import java.util.Iterator; public class CsvTest { public static void main(String[] args) { String[] lines = { "Name, Age, Sex", "\"Cantor, Georg\", 163, M" }; StringBuilder result = new StringBuilder(); for (String head : iterator(lines[0])) { result.append(String.format("%s\n", head)); } for (int i=1; i < lines.length; i++) { for (String row : iterator(lines[i])) { result.append(String.format("%s\n", row)); } } System.out.println(String.format("\n%s
", result.toString())); } public static Iterable iterator(final String line) { return new Iterable() { public Iterator iterator() { return new Iterator() { private int position = 0; public boolean hasNext() { return position < line.length(); } public String next() { boolean inquote = false; StringBuilder buffer = new StringBuilder(); for (; position < line.length(); position++) { char c = line.charAt(position); if (c == '"') { inquote = !inquote; } if (c == ',' && !inquote) { position++; break; } else { buffer.append(c); } } return buffer.toString().trim(); } public void remove() { throw new UnsupportedOperationException(); } }; } }; } }

определить «отображать его динамически»? это означает, что таблица строится через javascript и какое-то обновление Ajax-y .. если вы просто хотите построить таблицу с помощью PHP, это действительно не то, что я бы назвал «динамическим»,

XmlGrid.net имеет инструмент для преобразования csv в таблицу html. Вот ссылка: http://xmlgrid.net/csvToHtml.html

Я использовал ваши данные образца и получил следующую таблицу html:

 
Name Age Sex
Cantor, Georg 163 M