Dinamik bir web sayfası üzerinde bir HTML tablosu olarak bir CSV dosyası görüntülemek

6 Cevap php

I'd like to take a CSV file living server-side and display it dynamically as an html table. E.g., this:

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

Bu hale gelmelidir:

<html><body><table>
<tr> <td>Name</td> <td>Age</td> <td>Sex</td> </tr>
<tr> <td>Cantor, Georg</td> <td>163</td> <td>M</td> </td>
</table></body></html>

Herhangi bir dilde çözümler bekliyoruz.

6 Cevap

previously linked solution kod korkunç bir parçasıdır; neredeyse her satırı bir hata içeriyor. fgetcsv yerine kullanın:

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

Tablo başlıklarını eklemek için unutmayın.

İşte php kullanarak html tabloya csv dönüştürmek için basit bir fonksiyonudur:

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

Bir jj_readcsv('image_links.csv',true); gibi bu fonksiyonu çağırabilirsiniz

İkinci parametre true ise o CSV ilk satır başlığı / başlık olarak alınacaktır.

Bu birileri yardımcı olur umarım. Bu kodda herhangi bir kusurları için yorum yapın.

HTML ... etiketi kendisi hiçbir PHP veya java yani bunu yapabilirsiniz.

veya (tüm seçenekleri ile ..) yukarıdaki tam ayrıntı için bu yazı bakın.

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

XmlGrid.net has tool to convert csv to html table. Here is the link: http://xmlgrid.net/csvToHtml.html

Ben örnek verileri kullanılır ve aşağıdaki html tablo var:

<table>
<!--Created with XmlGrid Free Online XML Editor (http://xmlgrid.net)-->
<tr>
  <td>Name</td>
  <td> Age</td>
  <td> Sex</td>
</tr>
<tr>
  <td>Cantor, Georg</td>
  <td> 163</td>
  <td> M</td>
</tr>
</table>

Eğer \ ile kote virgül kaçmak eğer çalışır mı?

İsim, Yaş, Cinsiyet

"Cantor \ Georg", 163, M

Çoğu ayrılmış biçimleri onların ayırıcı düzgün ayrıştırmak için kaçtı gerektirir.


Bir kaba Java örnek:

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("<tr>%s</tr>\n", head));
        }

        for (int i=1; i < lines.length; i++) {
            for (String row : iterator(lines[i])) {
                result.append(String.format("<td>%s</td>\n", row));
            }
        }

        System.out.println(String.format("<table>\n%s</table>", result.toString()));
    }

    public static Iterable<String> iterator(final String line) {
        return new Iterable<String>() {
            public Iterator<String> iterator() {
                return new Iterator<String>() {
                    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();
                    }
                };
            }
        };
    }
}

"dinamik olarak gösterilecek" tanımlar? bu sadece ben 'dinamik' dediğimiz gerçekten değil PHP kullanarak tablo oluşturmak istiyorsanız tablo javascript ve Ajax-y güncelleştirmenin çeşit .. aracılığıyla inşa ediliyor ima