phpexcel 导入导出
导出excel
/**
* 以下是使用示例,对于以 //// 开头的行是不同的可选方式,请根据实际需要
* 打开对应行的注释。
* 如果使用 Excel5 ,输出的内容应该是GBK编码。
*/
//require_once 'PHPExcel.php';
// uncomment
////require_once 'PHPExcel/Writer/Excel5.php'; // 用于其他低版本xls
// or
////require_once 'PHPExcel/Writer/Excel2007.php'; // 用于 excel-2007 格式
$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("Zeal Li");
//$objProps->setLastModifiedBy("Zeal Li");
//$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('测试Sheet'); //设置单元格内容
//
//由PHPExcel根据传入内容自动判断单元格内容类型
$objActSheet->setCellValue('A1', '字符串内容'); // 字符串内容
$objActSheet->setCellValue('A2', 26); // 数值
$objActSheet->setCellValue('A3', true); // 布尔值
$objActSheet->setCellValue('A4', '=SUM(A2:A2)'); // 公式 //显式指定内容类型
$objActSheet->setCellValueExplicit('A5', '847475847857487584',
PHPExcel_Cell_DataType::TYPE_STRING); //合并单元格
$objActSheet->mergeCells('B1:C22'); //分离单元格
$objActSheet->unmergeCells('B1:C22'); //*************************************
//设置单元格样式
// //设置宽度
$objActSheet->getColumnDimension('B')->setAutoSize(true);
$objActSheet->getColumnDimension('A')->setWidth(30); $objStyleA5 = $objActSheet->getStyle('A5'); //设置单元格内容的数字格式。
//
//如果使用了 PHPExcel_Writer_Excel5 来生成内容的话,
//这里需要注意,在 PHPExcel_Style_NumberFormat 类的 const 变量定义的
//各种自定义格式化方式中,其它类型都可以正常使用,但当setFormatCode
//为 FORMAT_NUMBER 的时候,实际出来的效果被没有把格式设置为"0"。需要
//修改 PHPExcel_Writer_Excel5_Format 类源代码中的 getXf($style) 方法,
//在 if ($this->_BIFF_version == 0x0500) { (第363行附近)前面增加一
//行代码:
//if($ifmt === '0') $ifmt = 1;
//
//设置格式为PHPExcel_Style_NumberFormat::FORMAT_NUMBER,避免某些大数字
//被使用科学记数方式显示,配合下面的 setAutoSize 方法可以让每一行的内容
//都按原始内容全部显示出来。
$objStyleA5
->getNumberFormat()
->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER); //设置字体
$objFontA5 = $objStyleA5->getFont();
$objFontA5->setName('Courier New');
$objFontA5->setSize(10);
$objFontA5->setBold(true);
$objFontA5->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objFontA5->getColor()->setARGB('FF999999'); //设置对齐方式
$objAlignA5 = $objStyleA5->getAlignment();
$objAlignA5->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objAlignA5->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER); //设置边框
$objBorderA5 = $objStyleA5->getBorders();
$objBorderA5->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getTop()->getColor()->setARGB('FFFF0000'); // color
$objBorderA5->getBottom()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getLeft()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objBorderA5->getRight()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); //设置填充颜色
$objFillA5 = $objStyleA5->getFill();
$objFillA5->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objFillA5->getStartColor()->setARGB('FFEEEEEE'); //从指定的单元格复制样式信息.
$objActSheet->duplicateStyle($objStyleA5, 'B1:C22'); //*************************************
//添加图片
$objDrawing = new PHPExcel_Worksheet_Drawing();
$objDrawing->setName('ZealImg');
$objDrawing->setDescription('Image inserted by Zeal');
$objDrawing->setPath('./zeali.net.logo.gif');
$objDrawing->setHeight(36);
$objDrawing->setCoordinates('C23');
$objDrawing->setOffsetX(10);
$objDrawing->setRotation(15);
$objDrawing->getShadow()->setVisible(true);
$objDrawing->getShadow()->setDirection(36);
$objDrawing->setWorksheet($objActSheet); //添加一个新的worksheet
$objExcel->createSheet();
$objExcel->getSheet(1)->setTitle('测试2'); //保护单元格
$objExcel->getSheet(1)->getProtection()->setSheet(true);
$objExcel->getSheet(1)->protectCells('A1:C22', 'PHPExcel'); //*************************************
//输出内容
// $outputFileName = $title . ".xls";
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:attachment;filename="' . $outputFileName . '"'); //到文件
////header('Content-Disposition:inline;filename="'.$outputFileName.'"'); //到浏览器
header("Content-Transfer-Encoding: binary");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
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');
example:
$phpexcelPath = APPPATH.'libraries/phpexcel_1.8.0_doc/classes/PHPExcel.php'; //CI引入PHPExcel
$objPHPExcel = new PHPExcel();
//set width
$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('50');
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setWidth('50');
$firstSheet = $objPHPExcel->setActiveSheetIndex(0);
$firstSheet->setCellValue('A1',"好呀");
$firstSheet->setCellValue('B1',date('Y-m-d H:i:s',time()));
$firstSheet->setCellValue('A2',"dd hello");
$firstSheet->setCellValue('B2',$this->gbk_to_utf8("哈哈呵可耶 hello"));// 哈哈呵可耶 hello
//Rename sheet
$objPHPExcel->getActiveSheet()->setTitle("Simple");
//set active sheet index to the first sheet.
$objPHPExcel->setActiveSheetIndex(0);
//save excel
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007');//Excel2007 Excel5
$fileName = "order_information";
// $dirName=APPPATH."../upload/";
// if(!opendir($dirName))
// mkdir($dirName);
// $objWriter->save($dirName.$fileName.'.xlsx'); // 到磁盘
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:attachment;filename="' . $fileName . '.xlsx"'); //到文件
////header('Content-Disposition:inline;filename="'.$outputFileName.'"'); //到浏览器
header("Content-Transfer-Encoding: binary");
$objWriter->save('php://output');
PHPExcel常用方法汇总
导入excel
$PHPExcel = new PHPExcel(); /**默认用excel2007读取excel,若格式不对,则用之前的版本进行读取*/
$PHPReader = new PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filePath)) {
$PHPReader = new PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filePath)) {
echo 'no Excel';
return;
}
}
$PHPExcel = $PHPReader->load($filePath);
$currentSheet = $PHPExcel->getSheet(0); /* * 读取excel文件中的第一个工作表 */
$allColumn = $currentSheet->getHighestColumn();/**取得最大的列号*/
$allRow = $currentSheet->getHighestRow(); /* * 取得一共有多少行 */
PHPExcel_Cell::columnIndexFromString(); //字母列转换为数字列 如:AA变为27
for ($currentRow = 2; $currentRow <= $allRow; $currentRow = $currentRow + 2) {
$pair_name = $currentSheet->getCellByColumnAndRow(0, $currentRow)->getValue();
$trailtime = $currentSheet->getCellByColumnAndRow(3, $currentRow)->getValue();
$trailtime = date("Y-m-d H:i:s", PHPExcel_Shared_Date::ExcelToPHP($trailtime) - 28800); //时间的转换 }
public function excel_start_card_import(){
$this->_check_admin_permission('启动卡池管理');
$xlsfile = @$_FILES['xlsfile'];
if($xlsfile['name']){
$result = $this->getExcelData($xlsfile['tmp_name'],'excel/excel_start_card_import');
$success_num = 0;
$all_num = count($result);
$allFieldCount = 24;
//用事务提交
$this->model_common->query('BEGIN');
for($i = 0; $i<$all_num ;$i++){
if($allFieldCount != count($result[$i]))
{
$this->_admin_prompt(site_url('excel/excel_start_card_import'), "Excel表格的数据数目与表字段不符!请检查Excel表格的数据.");
exit;
}
$sql = "insert into o_active_cardpool (
MOBILE,COUNTRY_CODE,OPERATOR,AREA_NUM,STANDARD_TYPE,
CARD_VERSION,NUM,ICCID,IMSI,UIMID,SID,ACCOLC,NID,AKEY,
PIN1,PIN2,PUK1,PUK2,ADM,HRPDUPP,HRPDSS,STATUS,
BEGIN_TIME,END_TIME)
VALUES('{$result[$i][0]}','{$result[$i][1]}','{$result[$i][2]}','{$result[$i][3]}','{$result[$i][4]}'
,'{$result[$i][5]}','{$result[$i][6]}','{$result[$i][7]}','{$result[$i][8]}'
,'{$result[$i][9]}','{$result[$i][10]}','{$result[$i][11]}','{$result[$i][12]}'
,'{$result[$i][13]}','{$result[$i][14]}','{$result[$i][15]}','{$result[$i][16]}'
,'{$result[$i][17]}','{$result[$i][18]}','{$result[$i][19]}','{$result[$i][20]}'
,'{$result[$i][21]}','{$result[$i][22]}','{$result[$i][23]}')";
if($this->model_common->query($sql))
$success_num++;
if($i%5000==0){
$this->model_common->query('COMMIT');
$this->model_common->query('BEGIN');
}
}
$this->model_common->query('COMMIT');
$this->_admin_prompt(site_url('excel/excel_start_card_import'), "数据导入成功!总数是:{$all_num} 成功数是:{$success_num}");
exit;
}
$data = array();
$this->_set_data($data);
$this->_set_view('excel_start_card_import',$this->_DATA);
}
private function getExcelData($pathName,$redirectUrl)
{
//$phpExcel = new PHPExcel();
$PHPReader = new PHPExcel_Reader_Excel2007();
if(!$PHPReader->canRead($pathName)){
$PHPReader = new PHPExcel_Reader_Excel5();
if(!$PHPReader->canRead($pathName)){
$this->_admin_prompt(site_url($redirectUrl), "抱歉,不能读取该文件!");
exit;
}
}
$phpExcel = $PHPReader->load($pathName);
$currentSheet = $phpExcel->getSheet(0); //得到第一个sheet工作区
$allColumn = $currentSheet->getHighestColumn(); //总列数
$allRow = $currentSheet->getHighestRow(); //总行数
$result = array();
for($currentRow = 2;$currentRow<=$allRow;$currentRow++){
//遍历行中的每个字段
for($currentColumn = 'A';$currentColumn<=$allColumn; $currentColumn++){
$val = $currentSheet->getCellByColumnAndRow(ord($currentColumn)-65,$currentRow)->getValue();
// $val = $currentSheet->getCell($currentColumn.$currentRow)->getValue();//A1
// if($val===NULL)
// break;
if($val instanceof PHPExcel_RichText)
$val = $val->__toString();
$val = $this->utf8_to_gbk($val);
$result[$currentRow-2][ord($currentColumn)-65] = $val;
}
}
//var_dump($this->utf8_to_gbk($currentSheet->getHighestColumn().' - '.$currentSheet->getHighestRow()));
return $result;
}
phpexcel 导入导出的更多相关文章
- 使用PHPExcel导入导出excel格式文件
使用PHPExcel导入导出excel格式文件 作者:zccst 因为导出使用较多,以下是导出实现过程. 第一步,将PHPExcel的源码拷贝到项目的lib下 文件包含:PHPExcel.ph ...
- 黄聪:超实用的PHPExcel[导入][导出]实现方法总结
首先需要去官网https://github.com/PHPOffice/PHPExcel/下载PHPExcel,下载后只需要Classes目录下的文件即可. 1.PHPExcel导出方法实现过程 /* ...
- PHPExcel导入导出 若在thinkPHP3.2中使用(无论实例还是静态调用(如new classname或classname::function)都必须加反斜杠,因3.2就命名空间,如/classname
php利用PHPExcel类导出导入Excel用法 来源: 时间:2013-09-05 19:26:56 阅读数: 分享到: 16 [导读] PHPExcel类是php一个excel表格处理插 ...
- thinkphp5 使用PHPExcel 导入导出
首先下载PHPExcel类.网上很多,自行下载. 然后把文件放到vendor文件里面. 一般引用vendor里面的类或者插件用vendor(); 里面加载的就是vendor文件,然后想要加载哪个文件, ...
- phpexcel导入导出
先下载类文件,将类文件放到lib下,然后到入口文件定义一个新的的路径,以便引入文件. <?php namespace app\index\controller; use think\Con ...
- 【PHP】使用phpoffice/phpexcel导入导出数据
本例以thinkphp5.1为例 包地址: https://packagist.org/packages/phpoffice/phpexcel 使用: composer require phpoffi ...
- phpexcel使用说明5----ThinkPHP+PHPExcel[导入][导出]实现方法
转自:http://www.thinkphp.cn/code/403.html实现步骤: 注意:phpexcel必须是1.78版本的,不能用1.8以上的 一:去官网http://phpexcel.co ...
- phpcms 用phpexcel导入导出excel
html <form method="post" action="?m=content&c=content&a=public_add_excel&q ...
- phpexcel 导入导出excel表格
phpexcel中文实用手册 转载:http://www.cnblogs.com/freespider/p/3284828.html 下面是总结的几个使用方法 include 'PHPExcel.ph ...
随机推荐
- SVN 主干(trunk)、分支(branch )、标记(tag)
主干(trunk).分支(branch ).标记(tag) 在SVN中Branch/tag在一个功能选项中,在使用中也往往产生混淆. 在实现上,branch和tag,对于svn都是使用copy实现的, ...
- 黄聪:chrome扩展开发《AJAX请求》
chrome在一次更新之后,出于安全考虑,完全的禁止了content_script从https向http发起ajax请求,即使正常情况下也会在console里给出提示.这对于WEB来讲是好事,但对于扩 ...
- 推荐一个css帮助手册的版本 同时提供chm和在线
版本保持更新 目录分类妥当 查阅很方便 就是习惯了jquery那种风格,略有不适应. 包括最新css3的内容 网址: http://css.doyoe.com/ chm下载地址: http://css ...
- RN项目搭建
一.安装JDK 由安装包引起,你可以尝试一下新包 注意安装路径要不同 或者重新安装Windows Installer 运行CMD 1.输入 sfc /SCANNOW 回车 2.完成后输入 msiexe ...
- UI设计原则
一.一般原则 简单明了原则: 方便使用原则: 用户向导原则: 实时帮助原则: 自定义功能原则: 界面色彩原则: 二.Web系统适应原则 页面要瘦小 屏幕自适应 浏览器兼容 减少垂直滚动条 禁止水平滚动 ...
- webview--网络超时
package com.test.js2java; import java.util.Timer; import java.util.TimerTask; import android.app.Act ...
- Web性能压力测试工具之ApacheBench(ab)详解
PS:网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网 ...
- java中使用session的一些细节
获取session的时候会产出一个sessionid并且发给客户端,第二次回发的时候再根据该sessionid获取session.如果cookies被禁用,则需要通过URL传入. asp.net下的s ...
- java静态代理
WorkIF.java package com.wzh.test; public interface WorkIf { void doWork(String name);} work.java pac ...
- 开发工具及服务年度大奖评选 I Bugtags 荣获最具成长潜力奖
作为全球最大中文 IT 社区和服务平台.中国最大技术管理者平台的 CSDN 在中国北京总部举办了一场 2015 年开发工具及服务年度大奖评选活动,此次活动目的在于推动开发服务及工具质量的提升,提高行业 ...