excel读取修改导出

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <input type="file" id="inputFile" />
  <button id="updateButton">更新表格</button>
  <div id="tableContainer"></div>
  <script>
    const inputFile = document.getElementById('inputFile');
    const updateButton = document.getElementById('updateButton');
    const tableContainer = document.getElementById('tableContainer');

    // 监听文件上传的change事件
    inputFile.addEventListener('change', handleFile);

    // 读取并处理Excel文件
    function handleFile() {
      const file = inputFile.files[0];
      const reader = new FileReader();

      reader.onload = function (e) {
        const data = new Uint8Array(e.target.result);
        const workbook = XLSX.read(data, { type: 'array' });

        // 读取第一个sheet的数据
        const worksheet = workbook.Sheets[workbook.SheetNames[0]];
        const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });

        // 创建表格HTML并显示
        const tableHTML = createTableHTML(jsonData);
        tableContainer.innerHTML = tableHTML;
      };

      reader.readAsArrayBuffer(file);
    }

    // 创建表格HTML
    function createTableHTML(data) {
      let html = '<table>';

      for (let i = 0; i < data.length; i++) {
        html += '<tr>';

        for (let j = 0; j < data[i].length; j++) {
          html += `<td contenteditable>${data[i][j]}</td>`;
        }

        html += '</tr>';
      }

      html += '</table>';

      return html;
    }

    // 更新表格数据
    updateButton.addEventListener('click', updateTable);

    function updateTable() {
      const table = document.querySelector('table');
      const rows = table.getElementsByTagName('tr');

      const updatedData = [];

      // 遍历表格行
      for (let i = 0; i < rows.length; i++) {
        const cells = rows[i].getElementsByTagName('td');
        const rowData = [];

        // 遍历每行的单元格
        for (let j = 0; j < cells.length; j++) {
          const cell = cells[j];
          const newValue = cell.innerText;

          rowData.push(newValue);
        }

        updatedData.push(rowData);
      }

      // 将更新后的数据发送给后端
      fetch('/api/updateExcel', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
        },
        body: JSON.stringify(updatedData),
      })
        .then((response) => response.json())
        .then((data) => {
          console.log(data);
          alert('表格已更新');
        })
        .catch((error) => {
          console.error('Error:', error);
        });
    }
  </script>
  <!-- use version 0.20.0 -->
  <script lang="javascript" src="https://cdn.sheetjs.com/xlsx-0.20.0/package/dist/xlsx.full.min.js"></script>
</body>

</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值