Js把CSV与Excel转为Json

更新日期: 2019-08-24阅读: 3.2k标签: json

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

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

JSON: JavaScript 对象符号

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


读取并处理CSV文件

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

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-csv/1.0.3/jquery.csv.min.js"></script>

正如你在上面看到的那样,我的项目文件夹中包含以下示例 CSV 文件:

FIRST NAMELAST NAMEEMAIL ADDRESSPHONE NUMBERCITYSTATE
FrankRileyfrank@email.com123-456-7890New YorkNew York
SteveBrannigansteve@example.fr123-456-1290San FranciscoCalifornia
MarieAmbrosemarie@yahoo.org123-976-7890DallasTexas
YannMulondayann@example.com321-854-5842MinneapolisMinnesota
ChrisMartinschris@email.org123-654-8542SeattleWashingto

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

var csv_file_API = './UsersSample.csv';
var 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 方法进行调用并显示数据的代码

// read csv file and convert to json format
$.ajax({

    type: 'GET',

    url: csv_file_API,

    dataType: 'text',

    error: function (e) {
        alert('An error occurred while processing API calls');
        console.log("API call Failed: ", e);
    },

    success: function (data) {

        var jsonData = $.csv.toObjects(data);

        console.log(jsonData);

        $.each(jsonData, function (index, value) {

            $('#showCSV').append(

                '<li>' + 
                    
                    '<span>' +
                        value['FIRST NAME'] +
                    '</span>' +

                    '<span>' +
                        value['LAST NAME'] +
                    '</span>' +

                    '<span>' +
                        value.CITY +
                    '</span>' +

                    '<span>' + 
                        value['PHONE NUMBER'] +
                    '</span>' +

                    '<span>' +
                        value['EMAIL ADDRESS'] +
                    '</span>' +

                '</li>'
            );

        });

    } // end: Ajax success API call

}); // end: of Ajax call


读取和处理 Excel 文件

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

<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 方法显示数据:

// read Excel file and convert to json format using fetch
fetch('./soccer_players.xlsx').then(function (res) {
    /* get the data as a Blob */
    if (!res.ok) throw new Error("fetch failed");
    return res.arrayBuffer();
})
.then(function (ab) {
    /* parse the data when it is received */
    var data = new Uint8Array(ab);
    var workbook = XLSX.read(data, {
        type: "array"
    });

    /* *****************************************************************
    * DO SOMETHING WITH workbook: Converting Excel value to Json       *
    ********************************************************************/
    var first_sheet_name = workbook.SheetNames[0];
    /* Get worksheet */
    var worksheet = workbook.Sheets[first_sheet_name];

    var _JsonData = XLSX.utils.sheet_to_json(worksheet, { raw: true });
    /************************ End of conversion ************************/

    console.log(_JsonData);

    $.each(_JsonData, function (index, value) {

        $('#showExcel').append(

            '<tr>' +
                '<th scope="row">' +
                    value['FIRST NAME'] +
                '</th>' + 
                '<td>' +
                    value['LAST NAME'] +
                '</td>' +  
                '<td>' +
                    '<span>' +
                        value.AGE +
                    '</span>' +
                '</td>' +
                '<td>' +
                    value.CLUB +
                '</td>' +
                '<td>' +
                    value.CITY +
                '</td>' +
            '</tr>'
        );
    });
});

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


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


通过 GitHub Pages 实时部署 HTML 页面

假设你已将项目文件存储在GitHub中。 那么在项目存储库上:

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


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


选择后,将为你生成一个链接。 只需此链接即可查看你的页面并与他人共享。

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

这是我的演示页的链接:https://yannmjl.github.io/jsd...

如果浏览我的演示站点,你会注意到可以页面滚动,但是看不到滚动条。 这是我通过添加 style.css 得到的该功能的 CSS 样式:
html, body {
  overflow: scroll;
  overflow-x: hidden;
  height: fit-content;
}

::-webkit-scrollbar {
  width: 0px;
  background: transparent;
  /* make scrollbar transparent */
}

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


链接: https://www.fly63.com/article/detial/5501

web数据格式中关于:XML/HTML/JSON学习总汇

这篇文章讲解关于XML/HTML/JSON的学习,大家都知道服务器端可以返回的数据格式,主要就是:XML、HTML、JSON,当我们做数据抓取,ajax请求的时候都需要熟悉它们的使用。

解决IE8下JSON.stringify()自动将中文转译成unicode的方法

在IE8下JSON.stringify()自动将中文转译为unicode编码,原本选择的中文字符,传到后台变为了unicode编码,即u****的形式。查找资料后发现,与标准的JSON.stringify()不同,IE8内置的JSON.stringify()会自动将编码从utf-8转为unicode编码,导致出现这种类似于乱码的情况。

js实现json格式化,以及json校验工具的简单实现

这篇文章主要讲解:json结构及形式、json字符串转化为json对象【通过eval( ) 方法,new Function形式,使用全局的JSON对象】、json校验格式化工具简单实现

解析Json字符串的三种方法

在很多时候,我们的需要将类似 json 格式的字符串数据转为json,下面将介绍日常中使用的三种解析json字符串的方法

解决IE8以下低版本实现JSON.parse()与JSON.stringify()的兼容

将字符串和json对象的相互转换,我们通常使用JSON.parse()与JSON.stringify()。解决IE8以下低版本实现JSON.parse()与JSON.stringify()的兼容呢:利用eval方式解析、new Function形式、自定义兼容json的方法、head头添加mate等

什么是数据交互格式?xml和json优缺点

就是客户端和服务端进行信息传输的格式(xml和json),双方约定用什么格式进行传输,然后解析得到自己想要的值,xml扩展标记语言,属于重量级(第一占宽带、第二解析难),json属于轻量级的数据交互格式(不占宽带,解析很简单)

js 将json字符串转换为json对象的方法解析

将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键

聊聊JSON Schema

json现在已经成为比较通用灵活的数据交换格式,尤其是在web方面,总是少不了它的身影,js原生就支持它。网页中与服务器中和服务器交换信息也基本上式基于json的。在现在的开发中,特别是在前后端分离的开发中,后端提供接口,前端通过接口拿取数据;

百度JSON LD结构化数据代码分享

百度JSON LD结构化数据代码分享,搞外贸网站,企业网站这么就,对谷歌的 schema 结构化数据比较熟悉,但是对百度的结构化数据就了解太少了

什么是JWT(JSON WEB TOKEN)

Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于分布式站点的单点登陆(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!