导出Excel插件——Export-CSV ---20150610
一、插件信息
- 插件名:Export-CSV(导出Execl文件)
- 插件地址:https://rawgithub.com/highslide-software/export-csv/master/export-csv.js
- 插件使用:在页面引入export-csv.js即可,详见在线演示平台《导出Excel表格》
二、原理解析
通过分析源码,其原理是遍历Highcharts的数据列,并取值构造成逗号分开的字符串,并提交到指定的导出服务器下载保存为.csv文件。
1、CSV
CSV即逗号分隔值文件格式,通常是纯文本文件。如果你的机器上装了Microsoft Excel的话,.csv 文件默认是被 Excel 打开的。
2、自定义导出服务器
Export-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()
- });
- })
复制代码
3、中文网提供的导出服务器
地址:http://export.hcharts.cn/cvs.php
实例:
- Highcharts.post('http://export.hcharts.cn/cvs.php', {
- csv: chart.getCSV()
- });
复制代码
1、乱码分析
我用记事本或WPS Excel打开导出的cvs文件时,中文不会乱码,而用Office的Excel打开时,中文就乱码。后来网上查了下,原因是Office的Excel默认是以ANSI 形式打开的,也就是对应中文GBK编码,而默认导出的是UTF-8格式,解决办法就是编码转换。
2、解决办法
将获取的cvs代码转换为GBK编码即可,修改后的导出服务器代码如下:
PHP版:
- <?php
- /**
- * DISCLAIMER: Don't use [url=http://www.highcharts.com/studies/csv-export/csv.php]www.highcharts.com/studies/csv-export/csv.php[/url] in
- * production! This file may be removed at any time.
- * 由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;
- }
- ?>
复制代码
java版:
- <%@ 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);
- }
- %>
复制代码
另外,从提交cvs代码处转换编码也可实现。
| 补充: java版的导出服务器代码如下:
复制代码 |
导出Excel插件——Export-CSV ---20150610的更多相关文章
- 个人推荐的两款vue导出EXCEL插件
个人认为前端VUE项目中导出EXCEL比较好的两种方法,均不是我个人原创,我只是收录简单说明,原创地址在下面. 下面推荐两种方法,个人推荐第一种,第二种不做详细讲解,因为作者已经写过博客了,你们可以点 ...
- .net 导出Excel插件Npoi的使用
1.NuGet搜索Npoi并安装 2.添加引用将包引用进来 3.Controller里引用 4.使用 public ActionResult ExportExcel() { plist = 数据源 H ...
- Oracle导出excel
oracle导出excel(非csv)的方法有两种,1.使用sqlplus spool,2.使用包体 现将网上相关代码整理后贴出以备不时之需: 使用sqlplus: 使用sqlplus需要两个文件: ...
- 导出Excel/Pdf/txt/json/XML/PNG/CSV/SQL/MS-Word/ Ms-Powerpoint/等通过tableExport.js插件来实现
首先去我的云盘下载需要的js: 链接:https://pan.baidu.com/s/13vC-u92ulpx3RbljsuadWw 提取码:mo8m 页面代码: <!DOCTYPE html& ...
- 关于poi导出excel三种方式HSSFWorkbook,SXSSFWorkbook,csv的总结
poi导出excel最常用的是第一种方式HSSFWorkbook,不过这种方式数据量大的话会产生内存溢出问题,SXSSFWorkbook是一种大数据量导出格式,csv是另一种excel导出的一种轻快的 ...
- 关于poi导出excel方式HSSFWorkbook(xls).XSSFWorkbook(xlsx).SXSSFWorkbook.csv的总结
1.HSSFWorkbook(xls) import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermo ...
- php不使用插件导出excel
php不使用插件导出excel的简单方法,首先获取需要导出的数据的数组,数组的格式在下面. 之后就是定义文件名称和需要导出的excel的样式,最后就是循环数组,输出数据了 代码: $filename= ...
- Java导出Excel和CSV(简单Demo)
Java导出Excel和CSV的简单实现,分别使用POI和JavaCSV. JavaBean public class ReportInfo { int id; String date; int nu ...
- PHP 高效导入导出Excel(csv)方法之fgetcsv()和fputcsv()函数
CSV,是Comma Separated Value(逗号分隔值)的英文缩写,通常都是纯文本文件. 一.CSV数据导入函数fgetcsv() fgetcsv() 函数从文件指针中读入一行并解析 CSV ...
随机推荐
- uoj#269. 【清华集训2016】如何优雅地求和(数论)
传送门 首先,如果\(f(x)=1\),那么根据二项式定理,有\(Q(f,n,k)=1\) 当\(f(x)=x\)的时候,有\[Q=\sum_{i=0}^ni\times \frac{n!}{i!(n ...
- JPA-day03 自动建表和注解
- time库的使用
首先只需要 import time (典型的,标准的python库的使用方法) 主要包括三类函数 ——时间获取:time() , ctime() , gmtime() ——时间格式化: strftim ...
- Django (九) 项目开发流程&项目架构
项目开发流程&项目架构 1. 软件开发的一般流程 1. 需求分析及确认: 由需求分析工程师与客户确认甚至挖掘需求.输出需求说明文档. 2. 概要设计及详细设计: 开发对需求进行概要设计,包 ...
- Codeforces 1106F(数论)
要点 998244353的原根g = 3,意味着对于任意\[1 <= x,y<p\]\[x\neq\ y\]\[g^x\%p\neq\ g^y\%p\]因此可以有构造序列\(q(a)与a一 ...
- Codeforces 1114E(简单交互)
这里有一道老实题,大家快来踩爆它! 交互题:根据你的输出决定下一次的输入. 请听题: 管理员有个乱序数列(举例:{14, 24, 9, 19}),排序以后是个等差数列({9, 14, 19, 24}) ...
- ubuntu快捷键收集
Ctrl+Alt+T 终端 -Ctrl+Shift+C 终端复制 -Ctrl+Shift+V 终端粘贴 -Ctrl+L 清屏 -Ctrl+; 从剪切板中获得输入提示(不小心点到被诡异的提示吓到了) - ...
- JavaScprit30-5 学习笔记
最近忙这忙那...好久没看视频学习了...但是该学的还是要学. 这次要实现的效果是利用 flex 的 特性 来实现 可伸缩的图片墙演示 页面的展示...: 效果挺炫酷啊... 那么就来总结一下 学到了 ...
- 降低PNG图片存储大小方法、图片压缩方法
降低PNG图片存储大小方法,图片压缩方法,如何降低PNG图片存储大小?前提是分辨率和尺寸大小不变,图形的透明部分不变.请看如下办法,亲测可用. 1. 将PNG图片用PS打开. 2. 图像-模式-8位/ ...
- Jenkins环境搭建(6)-修改自动化测试报告的样式
写在最前: 我遇到一个问题,就是导出数据时,接口返回的数据是乱码,乱码如下图所示.问了开发,说是byte数据.这种情况,将response Data数据写入到报告中的话,在jenkins上运行时,提示 ...