如何通过csv数据创建动态html5表

lskq00tm  于 12个月前  发布在  HTML5
关注(0)|答案(1)|浏览(146)

我有下面这样的csv数据

No,Name,Year,School,ImageSrc,nnum
1,Gopi,1982,Great High School,/gopi.jpg,11
2,Kanna,1983,Awesome High School,/kanna.jpg,22
3,Raju,1984,Awesome High School,/raju.jpg,33
4,Mani,1985,Awesome High School,/mani.jpg,33
5,Rahul,1986,Awesome High School,/rahul.jpg,33

我使用html,jquery与节点服务器和执行下面的html代码。

<table>
    <tbody id="tableBody">
        <!-- This will be populated dynamically with JavaScript -->
    </tbody>
</table>

<script>
    // Sample CSV data
    const csvData = `1,Gopi,1982,Great High School,/gopi.jpg,11
    2,Kanna,1983,Awesome High School,/kanna.jpg,22
    3,Raju,1984,Awesome High School,/raju.jpg,33
    4,Mani,1985,Awesome High School,/mani.jpg,33
    5,Rahul,1986,Awesome High School,/rahul.jpg,33, 11
    2,Kanna,1983,Awesome High School,/kanna.jpg,22
    3,Raju,1984,Awesome High School,/raju.jpg,33
    4,Mani,1985,Awesome High School,/mani.jpg,33
    5,Rahul,1986,Awesome High School,/rahul.jpg,33`;

    function createTr(rows) {
        const newRow = document.createElement("tr");
        return newRow;
        // rows.forEach((row, rowIndex) => {
        //     const newRow = document.createElement("tr");
        //     return newRow;
        // })
    }

    function createTd(rowData, newRow){
        //rows.forEach((row, rowIndex) => {
            const newCell = document.createElement("td");
            newCell.textContent = rowData;
            // if(rowIndex % 4 == 0){
            //     newRow = createTr(rows);
            // }
            newRow.appendChild(newCell);
        //});
    }

    // Function to parse CSV data and create dynamic HTML table
    function createTableFromCSV(csv) {
        const tableBody = document.getElementById("tableBody");
        const rows = csv.split('\n');
        let newRow = createTr(rows);
        rows.forEach((row, rowIndex) => {
            const rowData = row.split(',');
            if(rowIndex % 4 == 0 && rowIndex != 0) {
                console.log(rowData, rowIndex);
            }
            createTd(rowData, newRow);
        })
        tableBody.appendChild(newRow);
    }

    // Call the function with your CSV data
    createTableFromCSV(csvData);
</script>

然后得到,(单行,我需要每行创建4列)

但是,我希望动态html表应该遵循以下条件。
1.每一行(excel数据)都应该创建一个html表格列。注:不是每个单元格的数据。
1.在每第5行(excel数据),html应该创建一个新的行,并开始创建coulmns。
即,需要输出应类似于下图,

任何建议。
CSV数据屏幕:

k4aesqcs

k4aesqcs1#

以下是我的解决方案:

// Sample CSV data
    const csvData = `1,Gopi,1982,Great High School,/gopi.jpg,11
    2,Kanna,1983,Awesome High School,/kanna.jpg,22
    3,Raju,1984,Awesome High School,/raju.jpg,33
    4,Mani,1985,Awesome High School,/mani.jpg,33
    5,Rahul,1986,Awesome High School,/rahul.jpg,33, 11
    2,Kanna,1983,Awesome High School,/kanna.jpg,22
    3,Raju,1984,Awesome High School,/raju.jpg,33
    4,Mani,1985,Awesome High School,/mani.jpg,33
    5,Rahul,1986,Awesome High School,/rahul.jpg,33`;

    function createTr() {
        const newRow = document.createElement("tr");
        return newRow;
        // rows.forEach((row, rowIndex) => {
        //     const newRow = document.createElement("tr");
        //     return newRow;
        // })
    }

    function createTd(rowData, newRow){
        //rows.forEach((row, rowIndex) => {
            const newCell = document.createElement("td");
            newCell.textContent = rowData;
            // if(rowIndex % 4 == 0){
            //     newRow = createTr(rows);
            // }
            newRow.appendChild(newCell);
        //});
    }

    // Function to parse CSV data and create dynamic HTML table
    function createTableFromCSV(csv) {
        const tableBody = document.getElementById("tableBody");
        const rows = csv.split('\n');
        let newRow = null;
        rows.forEach((row, rowIndex) => {
            const rowData = row.split(',');
            if ((rowIndex % 4) ===0){
                if (newRow !== null){
                        tableBody.appendChild(newRow);              
              }
              newRow=createTr();
            }
            createTd(rowData, newRow);
        })
        tableBody.appendChild(newRow);
    }

    // Call the function with your CSV data
    createTableFromCSV(csvData);
<table>
  <tbody id="tableBody"></tbody>
</table>

相关问题