zoukankan      html  css  js  c++  java
  • 导出Excel插件——Export-CSV ---20150610

    出处:http://bbs.hcharts.cn/thread-99-1-1.html
     
    导出Excel插件——Export-CSV

    一、插件信息


    二、原理解析
    通过分析源码,其原理是遍历Highcharts的数据列,并取值构造成逗号分开的字符串,并提交到指定的导出服务器下载保存为.csv文件。

    1、CSV

    CSV即逗号分隔值文件格式,通常是纯文本文件。如果你的机器上装了Microsoft Excel的话,.csv 文件默认是被 Excel 打开的。


    2、自定义导出服务器
    Export-CSV导出服务器比较简单,实现代码如下

    1. <?php
    2. $csv = $_POST['csv'];
    3. if ($csv) {
    4.        header('Content-type: text/csv');
    5.        header('Content-disposition: attachment;filename=chart.csv');
    6.        echo $csv;
    7. }
    8. ?>
    复制代码


    自定义导出事件

    1. $("#download").click(function(){
    2.     Highcharts.post('export-cvs.php', { //其中export-cvs.php即为上面代码
    3.         csv: chart.getCSV()
    4.    });
    5. })
    复制代码


    3、中文网提供的导出服务器
    地址:http://export.hcharts.cn/cvs.php

    实例:

    1. Highcharts.post('http://export.hcharts.cn/cvs.php', { 
    2.   csv: chart.getCSV()
    3. });
    复制代码
    补充:Office Excel打开时乱码问题解决办法

    1、乱码分析
         我用记事本或WPS Excel打开导出的cvs文件时,中文不会乱码,而用Office的Excel打开时,中文就乱码。后来网上查了下,原因是Office的Excel默认是以ANSI 形式打开的,也就是对应中文GBK编码,而默认导出的是UTF-8格式,解决办法就是编码转换。

    2、解决办法
         将获取的cvs代码转换为GBK编码即可,修改后的导出服务器代码如下:

    PHP版:
    1. <?php
    2. /**
    3. * DISCLAIMER: Don't use [url=http://www.highcharts.com/studies/csv-export/csv.php]www.highcharts.com/studies/csv-export/csv.php[/url] in 
    4. * production! This file may be removed at any time.
    5. * 由Highcharts中文网修改提供中文乱码解决办法
    6. */
    7. $csv = $_POST['csv'];
    8. $csv = iconv("utf-8","gbk",$csv);//转换成GBK编码
    9. if ($csv) {
    10.         header('Content-type: text/csv;charset=gbk');
    11.         header('Content-disposition: attachment;filename=chart.csv');
    12.         echo $csv;
    13. }
    14. ?>
    复制代码


    java版:
    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    2. <%
    3.     String csv = new String(request.getParameter("csv").getBytes("utf-8"),"gbk");
    4.     if(csv!=null && !"".equals(csv)) {
    5.         response.setHeader("Content-type","text/csv");
    6.         response.setHeader("Content-disposition", "attachment;filename=chart.csv");
    7.         response.getWriter().print(csv);
    8.     }
    9. %>
    复制代码

    另外,从提交cvs代码处转换编码也可实现。
    补充:
    java版的导出服务器代码如下:
    1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    2. <% 
    3.     String csv = request.getParameter("csv");
    4.     if(!"".equals(csv)) {
    5.             response.setHeader("Content-type","text/csv");
    6.             response.setHeader("Content-disposition", "attachment;filename=chart.csv");
    7.             response.getWriter().print(csv);
    8.     }
    9. %>
    复制代码
  • 相关阅读:
    tensorflow2.0——简单的三种图像增强方式(翻转,光照,对比度)
    tensorflow2.0——卷积初始化
    tensorflow2.0——实现先卷积后LSTM的网络
    tensorflow2.0——compile-fit实现多输入复合模型
    CMDB-客户端
    saltstack部署
    CMDB实现的四种方式
    理解python中的元类
    RESTful 架构
    Vuex笔记/axios笔记
  • 原文地址:https://www.cnblogs.com/thelongmarch/p/4567041.html
Copyright © 2011-2022 走看看