导出excel的方法output_excel需要依赖PHPExcel

导出csv的方法csv_export不需要


<?php
/**
* @author ttt
*/
class ExcelComponent extends Component
{
public $arr= array(
0=>'A',
1=>'B',
2=>'C',
3=>'D',
4=>'E',
5=>'F',
6=>'G',
7=>'H',
8=>'I',
9=>'J',
10=>'K',
11=>'L',
12=>'M',
13=>'N',
14=>'O',
15=>'P',
16=>'Q',
17=>"R",
18=>'S',
19=>'T',
20=>'U',
21=>'V',
22=>'W',
23=>'X',
24=>'Y',
25=>'Z',
26=>'AA',
27=>'AB',
28=>'AC',
29=>'AD',
30=>'AE',
31=>'AF',
32=>'AG',
33=>'AH',
34=>'AI',
35=>'AJ',
36=>'AK',
37=>'AL',
38=>'AM',
39=>'AN',
40=>'AO',
41=>'AP',
42=>'AQ',
43=>"AR",
44=>'AS',
45=>'AT',
46=>'AU',
47=>'AV',
48=>'AW',
49=>'AX',
50=>'AY',
51=>'AZ'
); /**
* 输出excel
* @author 唐婷婷
* @param $title 标题栏
* @param $list 数据
* @param $fileName 文件名
*/
public function output_excel($title,$list,$fileName)
{
set_time_limit(0);
require_once(APP . 'Vendor' . DS . 'PHPExcel.php');
$cacheMethod =PHPExcel_CachedObjectStorageFactory::cache_to_phpTemp;
$cacheSettings = array('memoryCacheSize'=>'128MB');
PHPExcel_Settings::setCacheStorageMethod($cacheMethod, $cacheSettings); // 创建一个处理对象实例
$objExcel = new PHPExcel();
// 创建文件格式写入对象实例, uncomment
//$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式
//or
$objWriter = new PHPExcel_Writer_Excel2007($objExcel); // 用于 2007 格式
//$objWriter->setOffice2003Compatibility(true); //设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Youjuke统计后台");
$objProps->setLastModifiedBy("Youjuke统计后台");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test"); //设置当前的sheet索引,用于后续的内容操作。
//一般只有在使用多个sheet的时候才需要显示调用。
//缺省情况下,PHPExcel会自动创建第一个sheet被设置SheetIndex=0
$objExcel->setActiveSheetIndex(0);
$objActSheet = $objExcel->getActiveSheet();
//设置当前活动sheet的名称
$objActSheet->setTitle('yjk统计后台自动导出'); $arr = $this->arr; foreach($title as $key=>$val){
$objActSheet->setCellValue($arr[$key].'1', $val); // 字符串内容
}
//设置标题栏样式
$objStyleA1 = $objActSheet ->getStyle('A1');
$objStyleA1 ->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER);
$objFillA1 = $objStyleA1->getFill();
$objFillA1->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA1->getStartColor()->setARGB('85C25D');
$objActSheet->duplicateStyle($objStyleA1, "A1:$arr[$key]1"); //设置统一格式 $i=2;
foreach($list as $key=>$val){
$j=0;
foreach($val as $v){
$gezi = $arr[$j].$i;
$objActSheet->setCellValue($gezi, $v); // 字符串内容
$j++;
}
$i++;// 下一行
}
//输出内容
$outputFileName = $fileName.'.xlsx'; //output.xls //$outputFileName = 'output.xls';
//到文件
////$objWriter->save($outputFileName);
//or
//到浏览器
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="'.$outputFileName.'"');
header("Content-Transfer-Encoding: binary");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter->save('php://output');
} /**
* 导出excel(csv)
* @data 导出数据
* @headlist 第一行,列名
* @fileName 输出Excel文件名
*/
function csv_export($data = array(), $headlist = array(), $fileName)
{
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="' . $fileName . '.csv"');
header('Cache-Control: max-age=0');
//打开PHP文件句柄,php://output 表示直接输出到浏览器
$fp = fopen('php://output', 'a');
//输出Excel列名信息
foreach ($headlist as $key => $value) {
//CSV的Excel支持GBK编码,一定要转换,否则乱码
$headlist[$key] = iconv('utf-8', 'gbk', $value);
}
//将数据通过fputcsv写到文件句柄
fputcsv($fp, $headlist);
//计数器
$num = 0;
//每隔$limit行,刷新一下输出buffer,不要太大,也不要太小
$limit = 100000;
//逐行取出数据,不浪费内存
$count = count($data);
for ($i = 0; $i < $count; $i++) {
$num++;
//刷新一下输出buffer,防止由于数据过多造成问题
if ($limit == $num) {
ob_flush();
flush();
$num = 0;
}
$row = $data[$i];
foreach ($row as $key => $value) {
$row[$key] = iconv('utf-8', 'gbk', $value);
}
fputcsv($fp, $row);
}
} }
?>

利用js导出excel

<script src="/js/excel/xlsx.core.min.js"></script>
<script src="/js/excel/blob.js"></script>
<script src="/js/excel/FileSaver.min.js"></script>
<script src="/js/excel/dist/js/tableexport.js"></script>

利用PHPExcel导出excel 以及利用js导出excel的更多相关文章

  1. Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"

    Html Table用JS导出excel格式问题 我在网上找的JS把HTML Tabel导出成EXCEL.但是如果Table里的数字内容为0开的的导成Excel后会自动删除0,我想以text的格式写入 ...

  2. html table表格导出excel的方法 html5 table导出Excel HTML用JS导出Excel的五种方法 html中table导出Excel 前端开发 将table内容导出到excel HTML table导出到Excel中的解决办法 js实现table导出Excel,保留table样式

    先上代码   <script type="text/javascript" language="javascript">   var idTmr; ...

  3. 利用PHPExcel读取Excel的数据和导出数据到Excel

    PHPExcel是一个PHP类库,用来帮助我们简单.高效实现从Excel读取Excel的数据和导出数据到Excel.也是我们日常开发中,经常会遇到的使用场景.比如有个客户信息表,要批量导出发给同事,我 ...

  4. php利用PHPExcel类导出导入Excel用法

    PHPExcel类是php一个excel表格处理插件了,下面我来给大家介绍利用PHPExcel类来导入与导出excel表格的应用方法,有需要了解的朋友不防参考参考(PHPExcel自己百度下载这里不介 ...

  5. 利用PHPExcel 实现excel数据的导入导出(源码实现)

    利用PHPExcel 实现excel数据的导入导出(源码实现) 在开发过程中,经常会遇到导入导出的需求,利用phpexcel类实现起来也是比较容易的,下面,我们一步一步实现 提前将phpexcel类下 ...

  6. 利用PHPExcel导出Excel并设置Excel格式以及数据源

    浏览:23969 发布日期:2013/07/24 分类:技术分享 代码有点长,读起来有点累.先来个截图 导出的Excel太宽了,所以将后面的列宽重新调整了再截的图 功能包括: 1.设置单元格格式,包括 ...

  7. 利用PHPExcel导出Excel相关设置

    功能包括: 1.设置单元格格式,包括单元格边框.单元格高度.单元格宽度 2.合并指定的单元格 3.设置Excel数据源,并将数据源保护起来(这个是为了实现单元格下拉选项功能) 4.设置字体样式 pub ...

  8. php利用phpexcel导出数据

    php中利用phpexcel导出数据的实现代码.对phpexcel类库不熟悉的朋友,可以阅读下<phpexcel中文帮助手册>中的内容,具体实例大家可以phpexcel快速开发指南中的相关 ...

  9. 浏览器端JS导出EXCEL

    浏览器端JS导出EXCEL FileSaver.js 实现了在本身不支持 HTML5 W3C saveAs() FileSaver 接口的浏览器支持文件保存.FileSaver.js 在客户端保存文件 ...

随机推荐

  1. echarts移除百度地图logo方法

    移除百度地图LOGO和版权信息 在jsp头上加上如下代码即可: <style type="text/css"> .anchorBL{ display:none } &l ...

  2. 冒泡排序到k趟

    浙大pat题目 将N个整数按从小到大排序的冒泡排序法是这样工作的:从头到尾比较相邻两个元素,如果前面的元素大于其紧随的后面元素,则交换它们.通过一遍扫描,则最后一个元素必定是最大的元素.然后用同样的方 ...

  3. 学会Git玩转GitHub全

    我这个笔记是利用HTML5来写的,所以我现附上代码以及并上照片:  当下@future 2019/4/29 19:55:33 <!DOCTYPE html><html> < ...

  4. SSL&TLS渗透测试

    什么是TLS&SSL? 安全套接字层(SSL)和传输层安全(TLS)加密通过提供通信安全(传输加密)和为应用程序如网络.邮件.即时消息和某些虚拟私有网络(VPN)提供隐私的方式来确保互联网和网 ...

  5. Go Example--格式化字符串

    package main import ( "fmt" "os" ) type point struct { x, y int } func main() { ...

  6. zabbix与tomcat(六)

    一.zabbix监控远程tomcat的流程   Zabbix-server 找 zabbix Java Gateway获取Java数据 zabbix Java Gateway 找Java程序(zabb ...

  7. webpack 中,module、chunk、bundle 的区别(待补充)

    项目 区别 module 是开发中的单个模块 chunk 中文意思是"块",是指 webpack 在进行模块依赖分析的时候,代码分割出来的代码块 bundle

  8. Aria2+百度网盘 无限制的下载神器

    Aria2是一款免费开源跨平台且不限速的多线程下载软件,Aria2的优点是速度快.体积小.资源占用少:支持 HTTP / FTP / BT / Magnet 磁力链接等类型的文件下载:支持 Win.M ...

  9. shutil 拷贝 / 移动 / 压缩 / 解压缩

    # shutil_demo.py 高级文件操作(拷贝 / 移动 / 压缩 / 解压缩) import shutil def shutil_demo(): # 拷贝文件 shutil.copy2('fi ...

  10. Python的xml模块

    先来一段xml代码 <?xml version="1.0"?> <data> <country name="Liechtenstein&qu ...