Excel表格转为json数据及html

其实也挺简单的一个东西,都是一些文件相关的东西,就是我们从本地或者从服务器请求回来的文件,将其用json数据展示或者直接转为dom元素进行展示,下面介绍一下

需要用到xlsx库,所以首先用自己喜欢的工具包安装一下

pnpm add xlsx

然后按需引入自己需要的 

import { read, utils } from 'xlsx'

然后拿到文件进行转化 

因为前端本地自己测试,就从本地选择一个文件吧。 以原生的<input type="file" > 为例

input.addEventListener('input', e => {
  const fileBlob = e.target.files[0]
  fileBlob.arrayBuffer().then(buffer => {
    const wb = read(buffer)
    const Sheets = wb.Sheets // 一个Excel中可能有很多张sheet,这里获取的所有的,是在一个对象中的
    Object.keys(Sheets).forEach((sheet, index) => {
      // 这是每张sheet对应的json数据
      const curData = utils.sheet_to_json(Sheets[sheet])
      console.log(curData)
      // 这是每张sheet对应的html
      const curHtml = utils.sheet_to_html(Sheets[sheet])
      if(index == 2) {
        // 渲染看一下 就是原声的table 可以自由设置样式
        document.querySelector('.html').innerHTML = curHtml
      }
    })
  })
})

一般文件这种拿到的都是Blob对象,不能直接对其进行操作,需要转为arrayBuffer。其实从后端获取过来也是一样的,设置了responseType值为blob拿到的和上面的fileBlob也是一样的。

这篇先这么点儿东西,我也不知道为啥要写这篇,闲的吧,闲了太久了。。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以回答这个问题。您可以使用第三方库,如Apache POI,读取Excel表格并将其转化为JSON数据。以下是Java代码示例: ```java // 导入依赖 import org.apache.poi.ss.usermodel.*; import org.json.*; import java.io.*; import java.util.*; public class ExcelToJsonConverter { public static void main(String[] args) throws Exception { // 读取Excel文件 Workbook workbook = WorkbookFactory.create(new File("data.xlsx")); // 读取第一个工作表 Sheet sheet = workbook.getSheetAt(0); // 获取表头行 Row headerRow = sheet.getRow(0); // 遍历每一行 JSONArray rows = new JSONArray(); for (int i = 1; i < sheet.getLastRowNum() + 1; i++) { Row row = sheet.getRow(i); JSONObject obj = new JSONObject(); // 遍历每一列 for (int j = 0; j < row.getLastCellNum(); j++) { Cell cell = row.getCell(j); String columnName = headerRow.getCell(j).getStringCellValue(); obj.put(columnName, getCellValue(cell)); } rows.put(obj); } // 输出JSON数据 System.out.println(rows.toString()); } // 获取单元格的值 private static Object getCellValue(Cell cell) { switch (cell.getCellType()) { case BLANK: return null; case BOOLEAN: return cell.getBooleanCellValue(); case ERROR: throw new RuntimeException("Cell contains an error"); case NUMERIC: return cell.getNumericCellValue(); case STRING: return cell.getStringCellValue(); case FORMULA: return getCellValue(cell.getCachedFormulaResultType() == CellType.NUMERIC ? cell : cell.getSheet().getRow(cell.getRowIndex()).getCell(cell.getColumnIndex())); default: throw new RuntimeException("Cell type not supported"); } } } ``` 请注意,此代码示例仅适用于Excel表格中的简单数据类型,如字符串、数字和布尔值。对于复杂数据类型,如日期和时间,您需要编写自定义的转换逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会说法语的猪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值