用JavaScript把CSV与Excel转为Json[每日前端夜话0xC5]

有两个 JavaScript 插件可用于读取和处理 CSV 和 Excel 文件,之后仅对自己的脚本进行编码即可。

CSV 表示 :用逗号分隔值这是一种文件格式,用于存储表格数据,如电子表格或数据库等。可以将 CSV 格式的文件导入或导出到将数据存储在表中的程序中。JSON:JavaScript 对象符号

用JavaScript把CSV与Excel转为Json[每日前端夜话0xC5]

我的项目结构和文件的截图
在本教程中,我们将探索并演示如何把数据以 CSV 格式存储,并把一个 Excel 文件解析为 JSON 格式,以及怎样用 jQuery-CSV SheetJS js-xlsx 库将数据显示为 HTML。
我们还会将探讨如何进行 Ajax 调用并获取请求。

读取并处理CSV文件

让我们继续,在 index.html 文件的 "head tag" 中添加 jQuery-CSV 库依赖:

1<script type="text/javascript"

src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/1.0.3/jquery.csv.min.js"></script>
正如你在上面看到的那样,我的项目文件夹中包含以下示例 CSV 文件:

用JavaScript把CSV与Excel转为Json[每日前端夜话0xC5]
UsersSample.csv

注意:在脚本的最上方,我声明了 API 变量,这些变量是项目文件夹中 CSV 和 Excel 文件的链接:

1var csv_file_API = './UsersSample.csv';2var excel_file_API = './soccer_players.xlsx';

使用Ajax

“ Ajax是一种在后台发送和检索信息而无需刷新页面的技术。它使浏览器能够发送和检索信息,然后对返回的信息进行处理,例如在页面上添加或修改 HTML。”

每当我们用 JavaScript 发送或检索信息时,都会启动一个称为 Ajax 调用的事件。我们可以在没有 jQuery 的情况下执行Ajax,但必须要编写 XMLHttpRequest,这有点复杂。通过 jQuery 的 Ajax 方法发起 Ajax 调用是最简单的方法。资料来源:css-tricks.com

现在,在我的 script.js 文件中,将通过 Ajax 调用 来读取 CSV 文件,把数据结果转换为 JSON,并将其显示在 HTML 页面上的列表中。这是用 Jquery append 方法进行调用并显示数据的代码:

1// read csv file and convert to json format 2$.ajax({ 3 4    type: 'GET', 5 6    url: csv_file_API, 7 8    dataType: 'text', 910    error: function (e) {11        alert('An error occurred while processing API calls');12        console.log("API call Failed: ", e);13    },1415    success: function (data) {1617        var jsonData = $.csv.toObjects(data);1819        console.log(jsonData);2021        $.each(jsonData, function (index, value) {2223            $('#showCSV').append(2425                '<li class="list-group-item d-flex justify-content-between align-items-center">' + 2627                    '<span style="margin-right: 2rem; font-size: 2rem; font-weight: bold; color: #37474F">' +28                        value['FIRST NAME'] +29                    '</span>' +3031                    '<span style="margin-right: 2rem; font-size: 2rem; font-weight: bold; color: #37474F">' +32                        value['LAST NAME'] +33                    '</span>' +3435                    '<span class="badge badge-primary badge-pill">' +36                        value.CITY +37                    '</span>' +3839                    '<span class="badge warning-color-dark badge-pill">' + 40                        value['PHONE NUMBER'] +41                    '</span>' +4243                    '<span class="badge success-color-dark badge-pill">' +44                        value['EMAIL ADDRESS'] +45                    '</span>' +4647                '</li>'48            );4950        });5152    } // end: Ajax success API call5354}); // end: of Ajax call

读取和处理 Excel 文件

我们将用 SheetJS js-xlsx (简化的电子表格)读取和处理 excel 文件。此 JavaScript 插件可在 Web 浏览器和服务器中使用。它支持所有 Excel 文件格式。在其 index.html 文件的 “head tag” 中通过content delivery network js (CDNjs) 添加 XLSX 库依赖项:

1<script type="text/javascript" lang="javascript"src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.15.1/xlsx.full.min.js"></script>

使用 Fetch

以学习为目的;让我们探讨另一种使用 Ajax 的方法。在近几年中,浏览器有了很大的改进(我认为 Internet Explorer 除外)。大多数浏览器现在都支持 Fetch API,这是 Ajax 的现代方式,可以不再需要 jQuery 或A xios 这样的库。

Fetch API 提供了一个 JavaScript 接口,用于访问和处理 HTTP 管道的每个部分,例如请求和响应等。它还提供了全局 fetch() 方法,该方法提供了一种简单且合乎逻辑的方式来跨网络异步获取资源。Fetch 还提供了一个逻辑位置来定义与 HTTP 相关的其他概念,例如 CORS 和 HTTP 扩展。

因此,对于本教程的第二部分,我们将用 fetch 来读取 excel 文件并将数据结果转换为 JSON。这段代码用于在 script.js 中请求文件并用 jQuery append 方法显示数据:

 1// read Excel file and convert to json format using fetch 2fetch('./soccer_players.xlsx').then(function (res) { 3    /* get the data as a Blob */ 4    if (!res.ok) throw new Error("fetch failed"); 5    return res.arrayBuffer(); 6}) 7.then(function (ab) { 8    /* parse the data when it is received */ 9    var data = new Uint8Array(ab);10    var workbook = XLSX.read(data, {11        type: "array"12    });1314    /* *****************************************************************15    * DO SOMETHING WITH workbook: Converting Excel value to Json       *16    ********************************************************************/17    var first_sheet_name = workbook.SheetNames[0];18    /* Get worksheet */19    var worksheet = workbook.Sheets[first_sheet_name];2021    var _JsonData = XLSX.utils.sheet_to_json(worksheet, { raw: true });22    /************************ End of conversion ************************/2324    console.log(_JsonData);2526    $.each(_JsonData, function (index, value) {2728        $('#showExcel').append(2930            '<tr>' +31                '<th scope="row">' +32                    value['FIRST NAME'] +33                '</th>' + 34                '<td>' +35                    value['LAST NAME'] +36                '</td>' +  37                '<td>' +38                    '<span class="badge badge-primary badge-pill p-2">' +39                        value.AGE +40                    '</span>' +41                '</td>' +42                '<td>' +43                    value.CLUB +44                '</td>' +45                '<td>' +46                    value.CITY +47                '</td>' +48            '</tr>'49        );50    });51});

有趣的是,我用了 Material Design Bootstrap 进行样式和数据显示。我还增加了额外的风格,使我的网页更加时尚,可以随意设置页面样式。这是我的 HTML 页面:

用JavaScript把CSV与Excel转为Json[每日前端夜话0xC5]

我的演示页面截图
如果你仍然无法显示数据并查看文件。可以随时检出 我的 GitHub demo repository。

通过 GitHub Pages 实时部署 HTML 页面
假设你已将项目文件存储在GitHub中。那么在项目存储库上:

  • 前往 “settings”

  • 向下滚动到 “GitHub Pages” 选项

用JavaScript把CSV与Excel转为Json[每日前端夜话0xC5]

  • 在“Source”下选择 build branch。在我的案例中,我选择了 “master branch” 。

用JavaScript把CSV与Excel转为Json[每日前端夜话0xC5]
选择后,将为你生成一个链接。只需此链接即可查看你的页面并与他人共享。

在资源库页面的 “environment” 下也可以找到相同的链接。

这是我的演示页的链接:https://yannmjl.github.io/jsdemo-read-cvs-xls-json/

 如果浏览我的演示站点,你会注意到可以页面滚动,但是看不到滚动条。这是我通过添加 style.css 得到的该功能的 CSS 样式:
 1html, body { 2  overflow: scroll; 3  overflow-x: hidden; 4  height: fit-content; 5} 6 7::-webkit-scrollbar { 8  width: 0px; 9  background: transparent;10  /* make scrollbar transparent */11}

原文:https://blog.bitsrc.io/csv-excel-to-json-in-javascript-70e61a1dc32d

更多相关文章

  1. html页面传值问题已解决
  2. 如何检测用户有关退出页面的信息?
  3. 使用Rails 3.2和AJAX(非flash上传解决方案)将多个文件直接上载到
  4. jQuery使用之(四)处理页面的表单元素
  5. 如果原始页面加载是https,那么没有完整网址的jQuery $ .ajax会保
  6. 在页面问题内的Phonegap垂直滚动
  7. 使用ajax请求上传文件[副本]
  8. 如何在流体宽度旋转木马中的页面之间创建装订线?
  9. 使用JQuery从外部文件中通过id选择器获取html内容

随机推荐

  1. Python 虚拟环境 windows平台 virtualenv
  2. 轮询Web服务的最佳方式(例如,对于Twitter应
  3. 生成使用AES包装的RSA私钥
  4. 整理python dict list set 增删改查
  5. Tensorflow入门程序MNIST学习
  6. numpy无法将值分配给列的一部分
  7. python及其模块下载集合
  8. 在python中出现搜索项的打印行
  9. python基础编程_12_日期格式的使用和转换
  10. 从零开始部署Django生产环境(适用:《跟老齐