Highcharts 中文社区

 找回密码
 立即注册
Highcharts 中文社区 门户 HC 学院 查看内容

导出 Excel 原理分析

2016-9-13 14:33| 发布者: 彭芳| 查看: 767| 评论: 0

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

一、导出 Excel 原理分析 

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

默认情况下是将数据提交到 官方的导出服务,代码很简单,就只是个 php 文件,代码如下:

$csv = $_POST['csv'];

if ($csv) {

       header('Content-type: text/csv');

       header('Content-disposition: attachment;filename=chart.csv');

       echo $csv;

}

?>


对应的可以自定义导出服务的地址:

$("#download").click(function(){

    Highcharts.post('export-cvs.php', { //其中export-cvs.php即为上面代码

        csv: chart.getCSV()

   });

}) 


二、补充:Office Excel打开时乱码问题解决办法

1、乱码分析

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


2、解决办法

     将获取的cvs代码转换为GBK编码即可,修改后的导出服务器代码如下 


1php

/**

* Highcharts中文网修改提供中文乱码解决办法

*/

$csv = $_POST['csv'];

$csv = iconv("utf-8","gbk",$csv);//转换成GBK编码

 

if ($csv) {

        header('Content-type: text/csv;charset=gbk');

        header('Content-disposition: attachment;filename=chart.csv');

        echo $csv;

}

?>


2Java

 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<%

    String csv = new String(request.getParameter("csv").getBytes("utf-8"),"gbk");

    if(csv!=null && !"".equals(csv)) {

        response.setHeader("Content-type","text/csv");

        response.setHeader("Content-disposition", "attachment;filename=chart.csv");

        response.getWriter().print(csv);

    }

%>

2

路过

雷人

握手

鲜花

鸡蛋

刚表态过的朋友 (2 人)

最新评论

返回顶部